From bb116dffbff85b3c418c4206fba4f2e18de63808 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Thu, 2 Feb 2023 22:29:48 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- dependency/mariadb/5.0.25/CHANGELOG.md | 99 - dependency/mariadb/5.0.25/Chart.yaml | 33 - dependency/mariadb/5.0.25/app-changelog.md | 9 - dependency/mariadb/5.0.26/CHANGELOG.md | 99 + dependency/mariadb/5.0.26/Chart.yaml | 34 + .../mariadb/{5.0.25 => 5.0.26}/README.md | 0 dependency/mariadb/5.0.26/app-changelog.md | 9 + .../mariadb/{5.0.25 => 5.0.26}/app-readme.md | 0 .../charts/common-11.1.2.tgz | Bin .../mariadb/{5.0.25 => 5.0.26}/ix_values.yaml | 0 .../mariadb/{5.0.25 => 5.0.26}/questions.yaml | 0 .../{5.0.25 => 5.0.26}/templates/common.yaml | 0 .../mariadb/{5.0.25 => 5.0.26}/values.yaml | 0 dependency/memcached/5.0.24/CHANGELOG.md | 99 - dependency/memcached/5.0.24/Chart.yaml | 32 - dependency/memcached/5.0.24/app-changelog.md | 9 - dependency/memcached/5.0.25/CHANGELOG.md | 99 + dependency/memcached/5.0.25/Chart.yaml | 33 + .../memcached/{5.0.24 => 5.0.25}/README.md | 0 dependency/memcached/5.0.25/app-changelog.md | 9 + .../{5.0.24 => 5.0.25}/app-readme.md | 0 .../charts/common-11.1.2.tgz | Bin .../{5.0.24 => 5.0.25}/ix_values.yaml | 0 .../{5.0.24 => 5.0.25}/questions.yaml | 0 .../{5.0.24 => 5.0.25}/templates/common.yaml | 0 .../memcached/{5.0.24 => 5.0.25}/values.yaml | 0 dependency/postgresql/11.0.23/CHANGELOG.md | 99 + dependency/postgresql/11.0.23/Chart.yaml | 32 + .../6.0.12 => postgresql/11.0.23}/README.md | 0 .../postgresql/11.0.23/app-changelog.md | 9 + dependency/postgresql/11.0.23/app-readme.md | 8 + .../11.0.23}/charts/common-11.1.2.tgz | Bin dependency/postgresql/11.0.23/ix_values.yaml | 132 + dependency/postgresql/11.0.23/questions.yaml | 1596 ++++++++ .../11.0.23}/templates/common.yaml | 0 .../6.0.12 => postgresql/11.0.23}/values.yaml | 0 dependency/promtail/6.0.12/CHANGELOG.md | 99 - dependency/promtail/6.0.12/Chart.yaml | 32 - dependency/promtail/6.0.12/app-changelog.md | 9 - dependency/promtail/6.0.13/CHANGELOG.md | 99 + dependency/promtail/6.0.13/Chart.yaml | 33 + .../2.0.26 => promtail/6.0.13}/README.md | 0 dependency/promtail/6.0.13/app-changelog.md | 9 + .../promtail/{6.0.12 => 6.0.13}/app-readme.md | 0 .../6.0.13}/charts/common-11.1.2.tgz | Bin .../{6.0.12 => 6.0.13}/ix_values.yaml | 0 .../{6.0.12 => 6.0.13}/questions.yaml | 0 .../templates/_servicemonitor.tpl | 0 .../{6.0.12 => 6.0.13}/templates/common.yaml | 0 .../2.0.26 => promtail/6.0.13}/values.yaml | 0 dependency/solr/2.0.26/CHANGELOG.md | 99 - dependency/solr/2.0.26/Chart.yaml | 31 - dependency/solr/2.0.26/app-changelog.md | 9 - dependency/solr/2.0.27/CHANGELOG.md | 99 + dependency/solr/2.0.27/Chart.yaml | 31 + dependency/solr/2.0.27/README.md | 27 + dependency/solr/2.0.27/app-changelog.md | 9 + .../solr/{2.0.26 => 2.0.27}/app-readme.md | 0 .../solr/2.0.27}/charts/common-11.1.2.tgz | Bin .../solr/{2.0.26 => 2.0.27}/ix_values.yaml | 0 .../solr/{2.0.26 => 2.0.27}/questions.yaml | 0 .../solr/2.0.27}/templates/common.yaml | 0 .../solr/2.0.27}/values.yaml | 0 enterprise/prometheus/7.0.46/CHANGELOG.md | 48 - enterprise/prometheus/7.0.46/Chart.yaml | 37 - enterprise/prometheus/7.0.46/app-changelog.md | 11 - enterprise/prometheus/7.0.47/CHANGELOG.md | 57 + enterprise/prometheus/7.0.47/Chart.yaml | 38 + .../prometheus/{7.0.46 => 7.0.47}/README.md | 0 enterprise/prometheus/7.0.47/app-changelog.md | 9 + .../{7.0.46 => 7.0.47}/app-readme.md | 0 .../7.0.47}/charts/common-11.1.2.tgz | Bin .../charts/kube-state-metrics-3.2.8.tgz | Bin .../charts/node-exporter-3.2.8.tgz | Bin .../{7.0.46 => 7.0.47}/ix_values.yaml | 0 .../{7.0.46 => 7.0.47}/questions.yaml | 0 .../{7.0.46 => 7.0.47}/templates/_helpers.tpl | 0 .../templates/alertmanager/_alertmanager.tpl | 0 .../templates/alertmanager/secrets.yaml | 0 .../alertmanager/serviceaccount.yaml | 0 .../alertmanager/servicemonitor.yaml | 0 .../{7.0.46 => 7.0.47}/templates/common.yaml | 0 .../templates/exporters/core-dns/service.yaml | 0 .../exporters/core-dns/servicemonitor.yaml | 0 .../kube-apiserver/servicemonitor.yaml | 0 .../kube-controller-manager/endpoints.yaml | 0 .../kube-controller-manager/service.yaml | 0 .../servicemonitor.yaml | 0 .../exporters/kube-scheduler/endpoints.yaml | 0 .../exporters/kube-scheduler/service.yaml | 0 .../kube-scheduler/servicemonitor.yaml | 0 .../exporters/kubelet/servicemonitor.yaml | 0 .../prometheus/_additionalPrometheusRules.tpl | 0 .../prometheus/_additionalScrapeJobs.tpl | 0 .../templates/prometheus/_prometheus.tpl | 0 .../templates/prometheus/_servicemonitor.tpl | 0 .../templates/prometheus/clusterrole.yaml | 0 .../prometheus/clusterrolebinding.yaml | 0 .../templates/prometheus/serviceaccount.yaml | 0 .../prometheus/7.0.47}/values.yaml | 0 incubator/amtd/2.0.7/CHANGELOG.md | 99 - incubator/amtd/2.0.7/Chart.yaml | 31 - incubator/amtd/2.0.7/app-changelog.md | 9 - incubator/amtd/2.0.7/app-readme.md | 9 - incubator/amtd/2.0.7/questions.yaml | 1571 -------- incubator/amtd/2.0.8/CHANGELOG.md | 99 + incubator/amtd/2.0.8/Chart.yaml | 31 + incubator/amtd/{2.0.7 => 2.0.8}/README.md | 0 incubator/amtd/2.0.8/app-changelog.md | 9 + incubator/amtd/2.0.8/app-readme.md | 9 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../amtd/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/amtd/2.0.8/questions.yaml | 1571 ++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../{amvd/2.0.7 => amtd/2.0.8}/values.yaml | 0 incubator/amvd/2.0.7/CHANGELOG.md | 99 - incubator/amvd/2.0.7/Chart.yaml | 31 - incubator/amvd/2.0.7/app-changelog.md | 9 - incubator/amvd/2.0.7/app-readme.md | 8 - incubator/amvd/2.0.7/questions.yaml | 1629 -------- incubator/amvd/2.0.8/CHANGELOG.md | 99 + incubator/amvd/2.0.8/Chart.yaml | 31 + incubator/amvd/{2.0.7 => 2.0.8}/README.md | 0 incubator/amvd/2.0.8/app-changelog.md | 9 + incubator/amvd/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../amvd/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/amvd/2.0.8/questions.yaml | 1629 ++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => amvd/2.0.8}/values.yaml | 0 incubator/apache-webdav/2.0.7/CHANGELOG.md | 99 - incubator/apache-webdav/2.0.7/Chart.yaml | 29 - .../apache-webdav/2.0.7/app-changelog.md | 9 - incubator/apache-webdav/2.0.7/app-readme.md | 8 - incubator/apache-webdav/2.0.7/questions.yaml | 1960 ---------- incubator/apache-webdav/2.0.8/CHANGELOG.md | 99 + incubator/apache-webdav/2.0.8/Chart.yaml | 30 + .../apache-webdav/{2.0.7 => 2.0.8}/README.md | 0 .../apache-webdav/2.0.8/app-changelog.md | 9 + incubator/apache-webdav/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/apache-webdav/2.0.8/questions.yaml | 2001 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/awesome-ttrss/3.0.19/CHANGELOG.md | 99 - incubator/awesome-ttrss/3.0.19/Chart.yaml | 31 - .../awesome-ttrss/3.0.19/app-changelog.md | 9 - incubator/awesome-ttrss/3.0.20/CHANGELOG.md | 99 + incubator/awesome-ttrss/3.0.20/Chart.yaml | 32 + .../{3.0.19 => 3.0.20}/README.md | 0 .../awesome-ttrss/3.0.20/app-changelog.md | 9 + .../{3.0.19 => 3.0.20}/app-readme.md | 0 .../3.0.20}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../{3.0.19 => 3.0.20}/ix_values.yaml | 0 .../{3.0.19 => 3.0.20}/questions.yaml | 0 .../{3.0.19 => 3.0.20}/templates/common.yaml | 0 .../3.0.20}/values.yaml | 0 incubator/backuppc/2.0.11/CHANGELOG.md | 99 - incubator/backuppc/2.0.11/Chart.yaml | 31 - incubator/backuppc/2.0.11/app-changelog.md | 9 - incubator/backuppc/2.0.11/app-readme.md | 8 - incubator/backuppc/2.0.11/questions.yaml | 2039 ---------- incubator/backuppc/2.0.12/CHANGELOG.md | 99 + incubator/backuppc/2.0.12/Chart.yaml | 31 + .../backuppc/{2.0.11 => 2.0.12}/README.md | 0 incubator/backuppc/2.0.12/app-changelog.md | 9 + incubator/backuppc/2.0.12/app-readme.md | 8 + .../2.0.12}/charts/common-11.1.2.tgz | Bin .../{2.0.11 => 2.0.12}/ix_values.yaml | 0 incubator/backuppc/2.0.12/questions.yaml | 2080 ++++++++++ .../{2.0.11 => 2.0.12}/templates/common.yaml | 0 .../2.0.8 => backuppc/2.0.12}/values.yaml | 0 incubator/baikal/2.0.8/CHANGELOG.md | 99 - incubator/baikal/2.0.8/Chart.yaml | 28 - incubator/baikal/2.0.8/app-changelog.md | 9 - incubator/baikal/2.0.8/app-readme.md | 8 - incubator/baikal/2.0.8/questions.yaml | 1899 --------- incubator/baikal/2.0.9/CHANGELOG.md | 99 + incubator/baikal/2.0.9/Chart.yaml | 28 + incubator/baikal/{2.0.8 => 2.0.9}/README.md | 0 incubator/baikal/2.0.9/app-changelog.md | 9 + incubator/baikal/2.0.9/app-readme.md | 8 + .../2.0.9/charts/common-11.1.2.tgz | Bin .../baikal/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/baikal/2.0.9/questions.yaml | 1940 ++++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.9/values.yaml | 0 incubator/bitcoin-node/2.0.10/CHANGELOG.md | 99 + incubator/bitcoin-node/2.0.10/Chart.yaml | 29 + .../bitcoin-node/{2.0.9 => 2.0.10}/README.md | 0 .../bitcoin-node/2.0.10/app-changelog.md | 9 + incubator/bitcoin-node/2.0.10/app-readme.md | 8 + .../2.0.10}/charts/common-11.1.2.tgz | Bin .../{2.0.9 => 2.0.10}/ix_values.yaml | 0 incubator/bitcoin-node/2.0.10/questions.yaml | 1920 +++++++++ .../{2.0.9 => 2.0.10}/templates/common.yaml | 0 .../2.0.7 => bitcoin-node/2.0.10}/values.yaml | 0 incubator/bitcoin-node/2.0.9/CHANGELOG.md | 99 - incubator/bitcoin-node/2.0.9/Chart.yaml | 29 - incubator/bitcoin-node/2.0.9/app-changelog.md | 9 - incubator/bitcoin-node/2.0.9/app-readme.md | 8 - incubator/bitcoin-node/2.0.9/questions.yaml | 1879 --------- incubator/bitcoinunlimited/2.0.7/CHANGELOG.md | 99 - incubator/bitcoinunlimited/2.0.7/Chart.yaml | 28 - .../bitcoinunlimited/2.0.7/app-changelog.md | 9 - .../bitcoinunlimited/2.0.7/app-readme.md | 8 - .../bitcoinunlimited/2.0.7/questions.yaml | 1985 ---------- incubator/bitcoinunlimited/2.0.8/CHANGELOG.md | 99 + incubator/bitcoinunlimited/2.0.8/Chart.yaml | 28 + .../{2.0.7 => 2.0.8}/README.md | 0 .../bitcoinunlimited/2.0.8/app-changelog.md | 9 + .../bitcoinunlimited/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 .../bitcoinunlimited/2.0.8/questions.yaml | 2026 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/bwapp/2.0.7/CHANGELOG.md | 99 - incubator/bwapp/2.0.7/Chart.yaml | 31 - incubator/bwapp/2.0.7/app-changelog.md | 9 - incubator/bwapp/2.0.7/app-readme.md | 8 - incubator/bwapp/2.0.7/questions.yaml | 1402 ------- incubator/bwapp/2.0.8/CHANGELOG.md | 99 + incubator/bwapp/2.0.8/Chart.yaml | 31 + incubator/bwapp/{2.0.7 => 2.0.8}/README.md | 0 incubator/bwapp/2.0.8/app-changelog.md | 9 + incubator/bwapp/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../bwapp/{2.0.7 => 2.0.8}/ix_values.yaml | 0 .../2.0.8/questions.yaml | 0 .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../{cherry/2.0.7 => bwapp/2.0.8}/values.yaml | 0 incubator/cherry/2.0.7/CHANGELOG.md | 99 - incubator/cherry/2.0.7/Chart.yaml | 27 - incubator/cherry/2.0.7/app-changelog.md | 9 - incubator/cherry/2.0.7/app-readme.md | 8 - incubator/cherry/2.0.7/questions.yaml | 1868 --------- incubator/cherry/2.0.8/CHANGELOG.md | 99 + incubator/cherry/2.0.8/Chart.yaml | 28 + incubator/cherry/{2.0.7 => 2.0.8}/README.md | 0 incubator/cherry/2.0.8/app-changelog.md | 9 + incubator/cherry/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../cherry/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/cherry/2.0.8/questions.yaml | 1909 +++++++++ .../{2.0.7 => 2.0.8}/templates/_config.tpl | 0 .../{2.0.7 => 2.0.8}/templates/_secrets.tpl | 0 .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => cherry/2.0.8}/values.yaml | 0 incubator/chowdown/2.0.7/CHANGELOG.md | 99 - incubator/chowdown/2.0.7/Chart.yaml | 28 - incubator/chowdown/2.0.7/app-changelog.md | 9 - incubator/chowdown/2.0.7/app-readme.md | 8 - incubator/chowdown/2.0.7/questions.yaml | 1828 --------- incubator/chowdown/2.0.8/CHANGELOG.md | 99 + incubator/chowdown/2.0.8/Chart.yaml | 28 + incubator/chowdown/{2.0.7 => 2.0.8}/README.md | 0 incubator/chowdown/2.0.8/app-changelog.md | 9 + incubator/chowdown/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../chowdown/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/chowdown/2.0.8/questions.yaml | 1869 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.10 => chowdown/2.0.8}/values.yaml | 0 incubator/ciao/2.0.10/CHANGELOG.md | 99 - incubator/ciao/2.0.10/Chart.yaml | 33 - incubator/ciao/2.0.10/app-changelog.md | 9 - incubator/ciao/2.0.10/questions.yaml | 1896 --------- incubator/ciao/2.0.11/CHANGELOG.md | 99 + incubator/ciao/2.0.11/Chart.yaml | 33 + incubator/ciao/{2.0.10 => 2.0.11}/README.md | 0 incubator/ciao/2.0.11/app-changelog.md | 9 + .../ciao/{2.0.10 => 2.0.11}/app-readme.md | 0 .../2.0.11}/charts/common-11.1.2.tgz | Bin .../ciao/{2.0.10 => 2.0.11}/ix_values.yaml | 0 incubator/ciao/2.0.11/questions.yaml | 1937 ++++++++++ .../{2.0.10 => 2.0.11}/templates/common.yaml | 0 .../2.0.8 => ciao/2.0.11}/values.yaml | 0 incubator/cleanarr/2.0.8/CHANGELOG.md | 99 - incubator/cleanarr/2.0.8/Chart.yaml | 28 - incubator/cleanarr/2.0.8/app-changelog.md | 9 - incubator/cleanarr/2.0.8/questions.yaml | 1867 --------- incubator/cleanarr/2.0.9/CHANGELOG.md | 99 + incubator/cleanarr/2.0.9/Chart.yaml | 28 + incubator/cleanarr/{2.0.8 => 2.0.9}/README.md | 0 incubator/cleanarr/2.0.9/app-changelog.md | 9 + .../cleanarr/{2.0.8 => 2.0.9}/app-readme.md | 0 .../2.0.9}/charts/common-11.1.2.tgz | Bin .../cleanarr/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/cleanarr/2.0.9/questions.yaml | 1908 +++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../0.0.4 => cleanarr/2.0.9}/values.yaml | 0 incubator/clipplex/0.0.4/CHANGELOG.md | 35 - incubator/clipplex/0.0.4/Chart.yaml | 29 - incubator/clipplex/0.0.4/app-changelog.md | 9 - incubator/clipplex/0.0.4/app-readme.md | 8 - incubator/clipplex/0.0.4/questions.yaml | 1870 --------- incubator/clipplex/0.0.5/CHANGELOG.md | 44 + incubator/clipplex/0.0.5/Chart.yaml | 30 + incubator/clipplex/{0.0.4 => 0.0.5}/README.md | 0 incubator/clipplex/0.0.5/app-changelog.md | 9 + incubator/clipplex/0.0.5/app-readme.md | 8 + .../0.0.5}/charts/common-11.1.2.tgz | Bin .../clipplex/{0.0.4 => 0.0.5}/ix_values.yaml | 0 incubator/clipplex/0.0.5/questions.yaml | 1911 +++++++++ .../{0.0.4 => 0.0.5}/templates/common.yaml | 0 .../2.0.12 => clipplex/0.0.5}/values.yaml | 0 incubator/cloudbeaver/2.0.12/CHANGELOG.md | 99 - incubator/cloudbeaver/2.0.12/Chart.yaml | 31 - incubator/cloudbeaver/2.0.12/app-changelog.md | 9 - incubator/cloudbeaver/2.0.13/CHANGELOG.md | 99 + incubator/cloudbeaver/2.0.13/Chart.yaml | 31 + .../cloudbeaver/{2.0.12 => 2.0.13}/README.md | 0 incubator/cloudbeaver/2.0.13/app-changelog.md | 9 + .../{2.0.12 => 2.0.13}/app-readme.md | 0 .../2.0.13}/charts/common-11.1.2.tgz | Bin .../{2.0.12 => 2.0.13}/ix_values.yaml | 0 .../{2.0.12 => 2.0.13}/questions.yaml | 0 .../{2.0.12 => 2.0.13}/templates/common.yaml | 0 .../2.0.9 => cloudbeaver/2.0.13}/values.yaml | 0 incubator/cloudcommander/2.0.10/CHANGELOG.md | 99 + incubator/cloudcommander/2.0.10/Chart.yaml | 28 + .../{2.0.9 => 2.0.10}/README.md | 0 .../cloudcommander/2.0.10/app-changelog.md | 9 + .../{2.0.9 => 2.0.10}/app-readme.md | 0 .../2.0.10}/charts/common-11.1.2.tgz | Bin .../{2.0.9 => 2.0.10}/ix_values.yaml | 0 .../{2.0.9 => 2.0.10}/questions.yaml | 0 .../{2.0.9 => 2.0.10}/templates/common.yaml | 0 .../2.0.10}/values.yaml | 0 incubator/cloudcommander/2.0.9/CHANGELOG.md | 99 - incubator/cloudcommander/2.0.9/Chart.yaml | 28 - .../cloudcommander/2.0.9/app-changelog.md | 9 - incubator/cloudreve/2.0.7/CHANGELOG.md | 99 - incubator/cloudreve/2.0.7/Chart.yaml | 31 - incubator/cloudreve/2.0.7/app-changelog.md | 9 - incubator/cloudreve/2.0.7/app-readme.md | 8 - incubator/cloudreve/2.0.7/questions.yaml | 2039 ---------- incubator/cloudreve/2.0.8/CHANGELOG.md | 99 + incubator/cloudreve/2.0.8/Chart.yaml | 31 + .../cloudreve/{2.0.7 => 2.0.8}/README.md | 0 incubator/cloudreve/2.0.8/app-changelog.md | 9 + incubator/cloudreve/2.0.8/app-readme.md | 8 + .../2.0.8/charts/common-11.1.2.tgz | Bin .../cloudreve/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/cloudreve/2.0.8/questions.yaml | 2080 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../{convos => cloudreve}/2.0.8/values.yaml | 0 incubator/convos/2.0.8/CHANGELOG.md | 99 - incubator/convos/2.0.8/Chart.yaml | 29 - incubator/convos/2.0.8/app-changelog.md | 9 - incubator/convos/2.0.8/app-readme.md | 8 - incubator/convos/2.0.8/questions.yaml | 1829 --------- incubator/convos/2.0.9/CHANGELOG.md | 99 + incubator/convos/2.0.9/Chart.yaml | 29 + incubator/convos/{2.0.8 => 2.0.9}/README.md | 0 incubator/convos/2.0.9/app-changelog.md | 9 + incubator/convos/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../convos/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/convos/2.0.9/questions.yaml | 1870 +++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../{cowyo/2.0.7 => convos/2.0.9}/values.yaml | 0 incubator/cowyo/2.0.7/CHANGELOG.md | 99 - incubator/cowyo/2.0.7/Chart.yaml | 31 - incubator/cowyo/2.0.7/app-changelog.md | 9 - incubator/cowyo/2.0.7/app-readme.md | 8 - incubator/cowyo/2.0.7/questions.yaml | 1828 --------- incubator/cowyo/2.0.8/CHANGELOG.md | 99 + incubator/cowyo/2.0.8/Chart.yaml | 31 + incubator/cowyo/{2.0.7 => 2.0.8}/README.md | 0 incubator/cowyo/2.0.8/app-changelog.md | 9 + incubator/cowyo/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../cowyo/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/cowyo/2.0.8/questions.yaml | 1869 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.18 => cowyo/2.0.8}/values.yaml | 0 incubator/cryptpad/2.0.18/CHANGELOG.md | 99 - incubator/cryptpad/2.0.18/Chart.yaml | 31 - incubator/cryptpad/2.0.18/app-changelog.md | 9 - incubator/cryptpad/2.0.19/CHANGELOG.md | 99 + incubator/cryptpad/2.0.19/Chart.yaml | 31 + .../cryptpad/{2.0.18 => 2.0.19}/README.md | 0 incubator/cryptpad/2.0.19/app-changelog.md | 9 + .../cryptpad/{2.0.18 => 2.0.19}/app-readme.md | 0 .../2.0.19}/charts/common-11.1.2.tgz | Bin .../{2.0.18 => 2.0.19}/ix_values.yaml | 0 .../{2.0.18 => 2.0.19}/questions.yaml | 0 .../{2.0.18 => 2.0.19}/templates/common.yaml | 0 .../3.0.15 => cryptpad/2.0.19}/values.yaml | 0 incubator/cups-server/3.0.15/CHANGELOG.md | 99 - incubator/cups-server/3.0.15/Chart.yaml | 27 - incubator/cups-server/3.0.15/app-changelog.md | 9 - incubator/cups-server/3.0.15/questions.yaml | 1843 --------- incubator/cups-server/3.0.16/CHANGELOG.md | 99 + incubator/cups-server/3.0.16/Chart.yaml | 27 + .../cups-server/{3.0.15 => 3.0.16}/README.md | 0 incubator/cups-server/3.0.16/app-changelog.md | 9 + .../{3.0.15 => 3.0.16}/app-readme.md | 0 .../3.0.16}/charts/common-11.1.2.tgz | Bin .../{3.0.15 => 3.0.16}/ix_values.yaml | 0 incubator/cups-server/3.0.16/questions.yaml | 1884 +++++++++ .../{3.0.15 => 3.0.16}/templates/common.yaml | 0 .../2.0.11 => cups-server/3.0.16}/values.yaml | 0 incubator/damselfly/2.0.11/CHANGELOG.md | 99 - incubator/damselfly/2.0.11/Chart.yaml | 29 - incubator/damselfly/2.0.11/app-changelog.md | 9 - incubator/damselfly/2.0.11/app-readme.md | 8 - incubator/damselfly/2.0.11/questions.yaml | 1969 ---------- incubator/damselfly/2.0.12/CHANGELOG.md | 99 + incubator/damselfly/2.0.12/Chart.yaml | 29 + .../damselfly/{2.0.11 => 2.0.12}/README.md | 0 incubator/damselfly/2.0.12/app-changelog.md | 9 + incubator/damselfly/2.0.12/app-readme.md | 8 + .../2.0.12}/charts/common-11.1.2.tgz | Bin .../{2.0.11 => 2.0.12}/ix_values.yaml | 0 incubator/damselfly/2.0.12/questions.yaml | 2010 ++++++++++ .../{2.0.11 => 2.0.12}/templates/common.yaml | 0 .../2.0.7 => damselfly/2.0.12}/values.yaml | 0 incubator/dashmachine/2.0.7/CHANGELOG.md | 99 - incubator/dashmachine/2.0.7/Chart.yaml | 31 - incubator/dashmachine/2.0.7/app-changelog.md | 9 - incubator/dashmachine/2.0.7/app-readme.md | 8 - incubator/dashmachine/2.0.7/questions.yaml | 1829 --------- incubator/dashmachine/2.0.8/CHANGELOG.md | 99 + incubator/dashmachine/2.0.8/Chart.yaml | 30 + .../dashmachine/{2.0.7 => 2.0.8}/README.md | 0 incubator/dashmachine/2.0.8/app-changelog.md | 9 + incubator/dashmachine/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/dashmachine/2.0.8/questions.yaml | 1870 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => dashmachine/2.0.8}/values.yaml | 0 .../dropbox-by-otherguy/2.0.7/CHANGELOG.md | 99 - .../dropbox-by-otherguy/2.0.7/Chart.yaml | 29 - .../2.0.7/app-changelog.md | 9 - .../dropbox-by-otherguy/2.0.7/app-readme.md | 8 - .../dropbox-by-otherguy/2.0.7/questions.yaml | 1569 -------- .../dropbox-by-otherguy/2.0.8/CHANGELOG.md | 99 + .../dropbox-by-otherguy/2.0.8/Chart.yaml | 29 + .../{2.0.7 => 2.0.8}/README.md | 0 .../2.0.8/app-changelog.md | 9 + .../dropbox-by-otherguy/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 .../dropbox-by-otherguy/2.0.8/questions.yaml | 1569 ++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/ersatztv/0.0.2/CHANGELOG.md | 17 - incubator/ersatztv/0.0.2/Chart.yaml | 30 - incubator/ersatztv/0.0.2/app-changelog.md | 9 - incubator/ersatztv/0.0.3/CHANGELOG.md | 26 + incubator/ersatztv/0.0.3/Chart.yaml | 30 + incubator/ersatztv/{0.0.2 => 0.0.3}/README.md | 0 incubator/ersatztv/0.0.3/app-changelog.md | 9 + .../ersatztv/{0.0.2 => 0.0.3}/app-readme.md | 0 .../0.0.3}/charts/common-11.1.2.tgz | Bin .../ersatztv/{0.0.2 => 0.0.3}/ix_values.yaml | 0 .../ersatztv/{0.0.2 => 0.0.3}/questions.yaml | 0 .../{0.0.2 => 0.0.3}/templates/common.yaml | 0 .../3.0.21 => ersatztv/0.0.3}/values.yaml | 0 incubator/etesync/3.0.21/CHANGELOG.md | 99 - incubator/etesync/3.0.21/Chart.yaml | 49 - incubator/etesync/3.0.21/app-changelog.md | 9 - incubator/etesync/3.0.22/CHANGELOG.md | 99 + incubator/etesync/3.0.22/Chart.yaml | 49 + .../etesync/{3.0.21 => 3.0.22}/README.md | 0 incubator/etesync/3.0.22/app-changelog.md | 9 + .../etesync/{3.0.21 => 3.0.22}/app-readme.md | 0 .../3.0.22}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../charts/redis-5.0.29.tgz | Bin .../etesync/{3.0.21 => 3.0.22}/ix_values.yaml | 0 .../etesync/{3.0.21 => 3.0.22}/questions.yaml | 0 .../{3.0.21 => 3.0.22}/templates/_secret.tpl | 0 .../{3.0.21 => 3.0.22}/templates/common.yaml | 0 .../2.0.7 => etesync/3.0.22}/values.yaml | 0 incubator/ethercalc/2.0.7/CHANGELOG.md | 99 - incubator/ethercalc/2.0.7/Chart.yaml | 33 - incubator/ethercalc/2.0.7/app-changelog.md | 9 - incubator/ethercalc/2.0.7/app-readme.md | 8 - incubator/ethercalc/2.0.7/questions.yaml | 1770 --------- incubator/ethercalc/2.0.8/CHANGELOG.md | 99 + incubator/ethercalc/2.0.8/Chart.yaml | 33 + .../ethercalc/{2.0.7 => 2.0.8}/README.md | 0 incubator/ethercalc/2.0.8/app-changelog.md | 9 + incubator/ethercalc/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../ethercalc/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/ethercalc/2.0.8/questions.yaml | 1811 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../3.0.8 => ethercalc/2.0.8}/values.yaml | 0 incubator/euterpe/3.0.8/CHANGELOG.md | 99 - incubator/euterpe/3.0.8/Chart.yaml | 36 - incubator/euterpe/3.0.8/app-changelog.md | 9 - incubator/euterpe/3.0.8/app-readme.md | 8 - incubator/euterpe/3.0.8/questions.yaml | 1944 ---------- incubator/euterpe/3.0.9/CHANGELOG.md | 99 + incubator/euterpe/3.0.9/Chart.yaml | 36 + incubator/euterpe/{3.0.8 => 3.0.9}/README.md | 0 incubator/euterpe/3.0.9/app-changelog.md | 9 + incubator/euterpe/3.0.9/app-readme.md | 8 + .../3.0.9}/charts/common-11.1.2.tgz | Bin .../euterpe/{3.0.8 => 3.0.9}/ix_values.yaml | 0 incubator/euterpe/3.0.9/questions.yaml | 1985 ++++++++++ .../{3.0.8 => 3.0.9}/templates/_secret.tpl | 0 .../{3.0.8 => 3.0.9}/templates/common.yaml | 0 .../2.0.7 => euterpe/3.0.9}/values.yaml | 0 incubator/explainshell/2.0.7/CHANGELOG.md | 99 - incubator/explainshell/2.0.7/Chart.yaml | 29 - incubator/explainshell/2.0.7/app-changelog.md | 9 - incubator/explainshell/2.0.7/app-readme.md | 8 - incubator/explainshell/2.0.7/questions.yaml | 1402 ------- incubator/explainshell/2.0.8/CHANGELOG.md | 99 + incubator/explainshell/2.0.8/Chart.yaml | 29 + .../explainshell/{2.0.7 => 2.0.8}/README.md | 0 incubator/explainshell/2.0.8/app-changelog.md | 9 + incubator/explainshell/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/explainshell/2.0.8/questions.yaml | 1402 +++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => explainshell/2.0.8}/values.yaml | 0 .../factorioservermanager/2.0.7/CHANGELOG.md | 99 - .../factorioservermanager/2.0.7/Chart.yaml | 29 - .../2.0.7/app-changelog.md | 9 - .../factorioservermanager/2.0.7/app-readme.md | 8 - .../2.0.7/questions.yaml | 2019 ---------- .../factorioservermanager/2.0.8/CHANGELOG.md | 99 + .../factorioservermanager/2.0.8/Chart.yaml | 29 + .../{2.0.7 => 2.0.8}/README.md | 0 .../2.0.8/app-changelog.md | 9 + .../factorioservermanager/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 .../2.0.8/questions.yaml | 2060 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/facturascripts/2.0.7/CHANGELOG.md | 99 - incubator/facturascripts/2.0.7/Chart.yaml | 31 - .../facturascripts/2.0.7/app-changelog.md | 9 - incubator/facturascripts/2.0.7/app-readme.md | 8 - incubator/facturascripts/2.0.7/questions.yaml | 1828 --------- incubator/facturascripts/2.0.8/CHANGELOG.md | 99 + incubator/facturascripts/2.0.8/Chart.yaml | 31 + .../facturascripts/{2.0.7 => 2.0.8}/README.md | 0 .../facturascripts/2.0.8/app-changelog.md | 9 + incubator/facturascripts/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/facturascripts/2.0.8/questions.yaml | 1869 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/farmos/2.0.11/CHANGELOG.md | 99 - incubator/farmos/2.0.11/Chart.yaml | 31 - incubator/farmos/2.0.11/app-changelog.md | 9 - incubator/farmos/2.0.11/app-readme.md | 8 - incubator/farmos/2.0.11/questions.yaml | 1829 --------- incubator/farmos/2.0.12/CHANGELOG.md | 99 + incubator/farmos/2.0.12/Chart.yaml | 31 + incubator/farmos/{2.0.11 => 2.0.12}/README.md | 0 incubator/farmos/2.0.12/app-changelog.md | 9 + incubator/farmos/2.0.12/app-readme.md | 8 + .../2.0.12}/charts/common-11.1.2.tgz | Bin .../farmos/{2.0.11 => 2.0.12}/ix_values.yaml | 0 incubator/farmos/2.0.12/questions.yaml | 1870 +++++++++ .../{2.0.11 => 2.0.12}/templates/common.yaml | 0 .../2.0.7 => farmos/2.0.12}/values.yaml | 0 incubator/fenrus/2.0.7/CHANGELOG.md | 99 - incubator/fenrus/2.0.7/Chart.yaml | 29 - incubator/fenrus/2.0.7/app-changelog.md | 9 - incubator/fenrus/2.0.7/app-readme.md | 9 - incubator/fenrus/2.0.7/questions.yaml | 1899 --------- incubator/fenrus/2.0.8/CHANGELOG.md | 99 + incubator/fenrus/2.0.8/Chart.yaml | 29 + incubator/fenrus/{2.0.7 => 2.0.8}/README.md | 0 incubator/fenrus/2.0.8/app-changelog.md | 9 + incubator/fenrus/2.0.8/app-readme.md | 9 + .../2.0.8/charts/common-11.1.2.tgz | Bin .../fenrus/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/fenrus/2.0.8/questions.yaml | 1940 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../{fileshelter => fenrus}/2.0.8/values.yaml | 0 incubator/fileshelter/2.0.8/CHANGELOG.md | 99 - incubator/fileshelter/2.0.8/Chart.yaml | 35 - incubator/fileshelter/2.0.8/app-changelog.md | 9 - incubator/fileshelter/2.0.9/CHANGELOG.md | 99 + incubator/fileshelter/2.0.9/Chart.yaml | 35 + .../fileshelter/{2.0.8 => 2.0.9}/README.md | 0 incubator/fileshelter/2.0.9/app-changelog.md | 9 + .../{2.0.8 => 2.0.9}/app-readme.md | 0 .../2.0.9}/charts/common-11.1.2.tgz | Bin .../{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/fileshelter/2.0.9/questions.yaml | 1402 +++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.13 => fileshelter/2.0.9}/values.yaml | 0 incubator/filestash/2.0.13/CHANGELOG.md | 99 - incubator/filestash/2.0.13/Chart.yaml | 33 - incubator/filestash/2.0.13/app-changelog.md | 9 - incubator/filestash/2.0.13/app-readme.md | 8 - incubator/filestash/2.0.13/questions.yaml | 1829 --------- incubator/filestash/2.0.14/CHANGELOG.md | 99 + incubator/filestash/2.0.14/Chart.yaml | 33 + .../filestash/{2.0.13 => 2.0.14}/README.md | 0 incubator/filestash/2.0.14/app-changelog.md | 9 + incubator/filestash/2.0.14/app-readme.md | 8 + .../2.0.14}/charts/common-11.1.2.tgz | Bin .../{2.0.13 => 2.0.14}/ix_values.yaml | 0 incubator/filestash/2.0.14/questions.yaml | 1870 +++++++++ .../{2.0.13 => 2.0.14}/templates/common.yaml | 0 .../2.0.9 => filestash/2.0.14}/values.yaml | 0 incubator/fireshare/2.0.10/CHANGELOG.md | 99 + incubator/fireshare/2.0.10/Chart.yaml | 28 + .../fireshare/{2.0.9 => 2.0.10}/README.md | 0 incubator/fireshare/2.0.10/app-changelog.md | 9 + incubator/fireshare/2.0.10/app-readme.md | 8 + .../2.0.10}/charts/common-11.1.2.tgz | Bin .../{2.0.9 => 2.0.10}/ix_values.yaml | 0 incubator/fireshare/2.0.10/questions.yaml | 2036 ++++++++++ .../{2.0.9 => 2.0.10}/templates/_secrets.tpl | 0 .../{2.0.9 => 2.0.10}/templates/common.yaml | 0 .../2.0.7 => fireshare/2.0.10}/values.yaml | 0 incubator/fireshare/2.0.9/CHANGELOG.md | 99 - incubator/fireshare/2.0.9/Chart.yaml | 28 - incubator/fireshare/2.0.9/app-changelog.md | 9 - incubator/fireshare/2.0.9/app-readme.md | 8 - incubator/fireshare/2.0.9/questions.yaml | 1995 ---------- incubator/flame/2.0.7/CHANGELOG.md | 99 - incubator/flame/2.0.7/Chart.yaml | 29 - incubator/flame/2.0.7/app-changelog.md | 9 - incubator/flame/2.0.7/app-readme.md | 8 - incubator/flame/2.0.7/questions.yaml | 1856 --------- incubator/flame/2.0.8/CHANGELOG.md | 99 + incubator/flame/2.0.8/Chart.yaml | 29 + incubator/flame/{2.0.7 => 2.0.8}/README.md | 0 incubator/flame/2.0.8/app-changelog.md | 9 + incubator/flame/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../flame/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/flame/2.0.8/questions.yaml | 1897 +++++++++ .../templates/_integration.tpl | 0 .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => flame/2.0.8}/values.yaml | 0 incubator/flatnotes/2.0.7/CHANGELOG.md | 99 - incubator/flatnotes/2.0.7/Chart.yaml | 27 - incubator/flatnotes/2.0.7/app-changelog.md | 9 - incubator/flatnotes/2.0.7/app-readme.md | 8 - incubator/flatnotes/2.0.7/questions.yaml | 1861 --------- incubator/flatnotes/2.0.8/CHANGELOG.md | 99 + incubator/flatnotes/2.0.8/Chart.yaml | 27 + .../flatnotes/{2.0.7 => 2.0.8}/README.md | 0 incubator/flatnotes/2.0.8/app-changelog.md | 9 + incubator/flatnotes/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../flatnotes/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/flatnotes/2.0.8/questions.yaml | 1902 +++++++++ .../{2.0.7 => 2.0.8}/templates/_secrets.tpl | 0 .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => flatnotes/2.0.8}/values.yaml | 0 incubator/flextv/2.0.7/CHANGELOG.md | 99 - incubator/flextv/2.0.7/Chart.yaml | 29 - incubator/flextv/2.0.7/app-changelog.md | 9 - incubator/flextv/2.0.7/app-readme.md | 8 - incubator/flextv/2.0.7/questions.yaml | 1891 --------- incubator/flextv/2.0.8/CHANGELOG.md | 99 + incubator/flextv/2.0.8/Chart.yaml | 30 + incubator/flextv/{2.0.7 => 2.0.8}/README.md | 0 incubator/flextv/2.0.8/app-changelog.md | 9 + incubator/flextv/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../flextv/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/flextv/2.0.8/questions.yaml | 1932 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => flextv/2.0.8}/values.yaml | 0 incubator/fotosho/2.0.7/CHANGELOG.md | 99 - incubator/fotosho/2.0.7/Chart.yaml | 31 - incubator/fotosho/2.0.7/app-changelog.md | 9 - incubator/fotosho/2.0.7/app-readme.md | 8 - incubator/fotosho/2.0.7/questions.yaml | 1969 ---------- incubator/fotosho/2.0.8/CHANGELOG.md | 99 + incubator/fotosho/2.0.8/Chart.yaml | 31 + incubator/fotosho/{2.0.7 => 2.0.8}/README.md | 0 incubator/fotosho/2.0.8/app-changelog.md | 9 + incubator/fotosho/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../fotosho/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/fotosho/2.0.8/questions.yaml | 2010 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../6.0.0 => fotosho/2.0.8}/values.yaml | 0 incubator/frigate/6.0.0/CHANGELOG.md | 99 - incubator/frigate/6.0.0/Chart.yaml | 32 - incubator/frigate/6.0.0/app-changelog.md | 4 - incubator/frigate/6.0.0/questions.yaml | 3375 ---------------- incubator/frigate/6.0.1/CHANGELOG.md | 99 + incubator/frigate/6.0.1/Chart.yaml | 32 + incubator/frigate/{6.0.0 => 6.0.1}/README.md | 0 incubator/frigate/6.0.1/app-changelog.md | 9 + .../frigate/{6.0.0 => 6.0.1}/app-readme.md | 0 .../6.0.1}/charts/common-11.1.2.tgz | Bin .../frigate/{6.0.0 => 6.0.1}/ix_values.yaml | 0 incubator/frigate/6.0.1/questions.yaml | 3416 +++++++++++++++++ .../{6.0.0 => 6.0.1}/templates/_configmap.tpl | 0 .../{6.0.0 => 6.0.1}/templates/common.yaml | 0 .../2.1.7 => frigate/6.0.1}/values.yaml | 0 incubator/funkwhale/2.1.7/CHANGELOG.md | 99 - incubator/funkwhale/2.1.7/Chart.yaml | 31 - incubator/funkwhale/2.1.7/app-changelog.md | 9 - incubator/funkwhale/2.1.7/app-readme.md | 8 - incubator/funkwhale/2.1.7/questions.yaml | 1918 --------- incubator/funkwhale/2.1.8/CHANGELOG.md | 99 + incubator/funkwhale/2.1.8/Chart.yaml | 31 + .../funkwhale/{2.1.7 => 2.1.8}/README.md | 0 incubator/funkwhale/2.1.8/app-changelog.md | 9 + incubator/funkwhale/2.1.8/app-readme.md | 8 + .../2.1.8}/charts/common-11.1.2.tgz | Bin .../funkwhale/{2.1.7 => 2.1.8}/ix_values.yaml | 0 incubator/funkwhale/2.1.8/questions.yaml | 1959 ++++++++++ .../{2.1.7 => 2.1.8}/templates/_secret.tpl | 0 .../{2.1.7 => 2.1.8}/templates/common.yaml | 0 .../2.0.7 => funkwhale/2.1.8}/values.yaml | 0 incubator/glauth/2.0.7/CHANGELOG.md | 99 - incubator/glauth/2.0.7/Chart.yaml | 29 - incubator/glauth/2.0.7/app-changelog.md | 9 - incubator/glauth/2.0.7/app-readme.md | 8 - incubator/glauth/2.0.7/questions.yaml | 1933 ---------- incubator/glauth/2.0.8/CHANGELOG.md | 99 + incubator/glauth/2.0.8/Chart.yaml | 29 + incubator/glauth/{2.0.7 => 2.0.8}/README.md | 0 incubator/glauth/2.0.8/app-changelog.md | 9 + incubator/glauth/2.0.8/app-readme.md | 8 + .../2.0.8/charts/common-11.1.2.tgz | Bin .../glauth/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/glauth/2.0.8/questions.yaml | 1974 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8/values.yaml | 0 .../gridcoinwalletgui/2.0.8/CHANGELOG.md | 99 - incubator/gridcoinwalletgui/2.0.8/Chart.yaml | 29 - .../gridcoinwalletgui/2.0.8/app-changelog.md | 9 - .../gridcoinwalletgui/2.0.8/app-readme.md | 8 - .../gridcoinwalletgui/2.0.8/questions.yaml | 1970 ---------- .../gridcoinwalletgui/2.0.9/CHANGELOG.md | 99 + incubator/gridcoinwalletgui/2.0.9/Chart.yaml | 29 + .../{2.0.8 => 2.0.9}/README.md | 0 .../gridcoinwalletgui/2.0.9/app-changelog.md | 9 + .../gridcoinwalletgui/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../{2.0.8 => 2.0.9}/ix_values.yaml | 0 .../gridcoinwalletgui/2.0.9/questions.yaml | 2011 ++++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.9}/values.yaml | 0 incubator/hastebin/2.0.7/CHANGELOG.md | 99 - incubator/hastebin/2.0.7/Chart.yaml | 35 - incubator/hastebin/2.0.7/app-changelog.md | 9 - incubator/hastebin/2.0.7/app-readme.md | 8 - incubator/hastebin/2.0.7/questions.yaml | 1829 --------- incubator/hastebin/2.0.8/CHANGELOG.md | 99 + incubator/hastebin/2.0.8/Chart.yaml | 35 + incubator/hastebin/{2.0.7 => 2.0.8}/README.md | 0 incubator/hastebin/2.0.8/app-changelog.md | 9 + incubator/hastebin/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../hastebin/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/hastebin/2.0.8/questions.yaml | 1870 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => hastebin/2.0.8}/values.yaml | 0 incubator/hoobs/2.0.7/CHANGELOG.md | 99 - incubator/hoobs/2.0.7/Chart.yaml | 30 - incubator/hoobs/2.0.7/app-changelog.md | 9 - incubator/hoobs/2.0.7/app-readme.md | 8 - incubator/hoobs/2.0.7/questions.yaml | 1879 --------- incubator/hoobs/2.0.8/CHANGELOG.md | 99 + incubator/hoobs/2.0.8/Chart.yaml | 30 + incubator/hoobs/{2.0.7 => 2.0.8}/README.md | 0 incubator/hoobs/2.0.8/app-changelog.md | 9 + incubator/hoobs/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../hoobs/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/hoobs/2.0.8/questions.yaml | 1920 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.12 => hoobs/2.0.8}/values.yaml | 0 incubator/icloudpd/2.0.12/CHANGELOG.md | 99 - incubator/icloudpd/2.0.12/Chart.yaml | 33 - incubator/icloudpd/2.0.12/app-changelog.md | 9 - incubator/icloudpd/2.0.12/app-readme.md | 8 - incubator/icloudpd/2.0.12/questions.yaml | 1778 --------- incubator/icloudpd/2.0.13/CHANGELOG.md | 99 + incubator/icloudpd/2.0.13/Chart.yaml | 33 + .../icloudpd/{2.0.12 => 2.0.13}/README.md | 0 incubator/icloudpd/2.0.13/app-changelog.md | 9 + incubator/icloudpd/2.0.13/app-readme.md | 8 + .../2.0.13}/charts/common-11.1.2.tgz | Bin .../{2.0.12 => 2.0.13}/ix_values.yaml | 0 incubator/icloudpd/2.0.13/questions.yaml | 1778 +++++++++ .../{2.0.12 => 2.0.13}/templates/common.yaml | 0 .../2.0.7 => icloudpd/2.0.13}/values.yaml | 0 incubator/imgpush/2.0.7/CHANGELOG.md | 99 - incubator/imgpush/2.0.7/Chart.yaml | 37 - incubator/imgpush/2.0.7/app-changelog.md | 9 - incubator/imgpush/2.0.7/app-readme.md | 8 - incubator/imgpush/2.0.7/questions.yaml | 1897 --------- incubator/imgpush/2.0.8/CHANGELOG.md | 99 + incubator/imgpush/2.0.8/Chart.yaml | 37 + incubator/imgpush/{2.0.7 => 2.0.8}/README.md | 0 incubator/imgpush/2.0.8/app-changelog.md | 9 + incubator/imgpush/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../imgpush/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/imgpush/2.0.8/questions.yaml | 1938 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => imgpush/2.0.8}/values.yaml | 0 incubator/invitarr/2.0.7/CHANGELOG.md | 99 - incubator/invitarr/2.0.7/Chart.yaml | 34 - incubator/invitarr/2.0.7/app-changelog.md | 9 - incubator/invitarr/2.0.7/app-readme.md | 8 - incubator/invitarr/2.0.7/questions.yaml | 1493 ------- incubator/invitarr/2.0.8/CHANGELOG.md | 99 + incubator/invitarr/2.0.8/Chart.yaml | 34 + incubator/invitarr/{2.0.7 => 2.0.8}/README.md | 0 incubator/invitarr/2.0.8/app-changelog.md | 9 + incubator/invitarr/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../invitarr/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/invitarr/2.0.8/questions.yaml | 1493 +++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.12 => invitarr/2.0.8}/values.yaml | 0 incubator/jelu/2.0.12/CHANGELOG.md | 99 - incubator/jelu/2.0.12/Chart.yaml | 29 - incubator/jelu/2.0.12/app-changelog.md | 9 - incubator/jelu/2.0.13/CHANGELOG.md | 99 + incubator/jelu/2.0.13/Chart.yaml | 29 + incubator/jelu/{2.0.12 => 2.0.13}/README.md | 0 incubator/jelu/2.0.13/app-changelog.md | 9 + .../jelu/{2.0.12 => 2.0.13}/app-readme.md | 0 .../2.0.13}/charts/common-11.1.2.tgz | Bin .../jelu/{2.0.12 => 2.0.13}/ix_values.yaml | 0 .../jelu/{2.0.12 => 2.0.13}/questions.yaml | 0 .../{2.0.12 => 2.0.13}/templates/common.yaml | 0 .../3.0.5 => jelu/2.0.13}/values.yaml | 0 incubator/jenkins/3.0.5/CHANGELOG.md | 99 - incubator/jenkins/3.0.5/Chart.yaml | 29 - incubator/jenkins/3.0.5/app-changelog.md | 9 - incubator/jenkins/3.0.6/CHANGELOG.md | 99 + incubator/jenkins/3.0.6/Chart.yaml | 29 + incubator/jenkins/{3.0.5 => 3.0.6}/README.md | 0 incubator/jenkins/3.0.6/app-changelog.md | 9 + .../jenkins/{3.0.5 => 3.0.6}/app-readme.md | 0 .../3.0.6}/charts/common-11.1.2.tgz | Bin .../jenkins/{3.0.5 => 3.0.6}/ix_values.yaml | 0 .../jenkins/{3.0.5 => 3.0.6}/questions.yaml | 0 .../{3.0.5 => 3.0.6}/templates/_secret.tpl | 0 .../{3.0.5 => 3.0.6}/templates/common.yaml | 0 .../2.0.7 => jenkins/3.0.6}/values.yaml | 0 incubator/jmzhomeproxy/2.0.7/CHANGELOG.md | 99 - incubator/jmzhomeproxy/2.0.7/Chart.yaml | 31 - incubator/jmzhomeproxy/2.0.7/app-changelog.md | 9 - incubator/jmzhomeproxy/2.0.7/app-readme.md | 8 - incubator/jmzhomeproxy/2.0.7/questions.yaml | 1751 --------- incubator/jmzhomeproxy/2.0.8/CHANGELOG.md | 99 + incubator/jmzhomeproxy/2.0.8/Chart.yaml | 31 + .../jmzhomeproxy/{2.0.7 => 2.0.8}/README.md | 0 incubator/jmzhomeproxy/2.0.8/app-changelog.md | 9 + incubator/jmzhomeproxy/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/jmzhomeproxy/2.0.8/questions.yaml | 1792 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => jmzhomeproxy/2.0.8}/values.yaml | 0 incubator/jump/2.0.7/CHANGELOG.md | 99 - incubator/jump/2.0.7/Chart.yaml | 28 - incubator/jump/2.0.7/app-changelog.md | 9 - incubator/jump/2.0.7/app-readme.md | 8 - incubator/jump/2.0.7/questions.yaml | 2075 ---------- incubator/jump/2.0.8/CHANGELOG.md | 99 + incubator/jump/2.0.8/Chart.yaml | 28 + incubator/jump/{2.0.7 => 2.0.8}/README.md | 0 incubator/jump/2.0.8/app-changelog.md | 9 + incubator/jump/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../jump/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/jump/2.0.8/questions.yaml | 2116 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.9 => jump/2.0.8}/values.yaml | 0 incubator/kavitaemail/2.0.10/CHANGELOG.md | 99 + incubator/kavitaemail/2.0.10/Chart.yaml | 33 + .../kavitaemail/{2.0.9 => 2.0.10}/README.md | 0 incubator/kavitaemail/2.0.10/app-changelog.md | 9 + .../{2.0.9 => 2.0.10}/app-readme.md | 0 .../2.0.10}/charts/common-11.1.2.tgz | Bin .../{2.0.9 => 2.0.10}/ix_values.yaml | 0 .../{2.0.9 => 2.0.10}/questions.yaml | 0 .../{2.0.9 => 2.0.10}/templates/common.yaml | 0 .../2.0.8 => kavitaemail/2.0.10}/values.yaml | 0 incubator/kavitaemail/2.0.9/CHANGELOG.md | 99 - incubator/kavitaemail/2.0.9/Chart.yaml | 33 - incubator/kavitaemail/2.0.9/app-changelog.md | 9 - incubator/keeweb/2.0.8/CHANGELOG.md | 99 - incubator/keeweb/2.0.8/Chart.yaml | 34 - incubator/keeweb/2.0.8/app-changelog.md | 9 - incubator/keeweb/2.0.8/app-readme.md | 8 - incubator/keeweb/2.0.8/questions.yaml | 1991 ---------- incubator/keeweb/2.0.9/CHANGELOG.md | 99 + incubator/keeweb/2.0.9/Chart.yaml | 34 + incubator/keeweb/{2.0.8 => 2.0.9}/README.md | 0 incubator/keeweb/2.0.9/app-changelog.md | 9 + incubator/keeweb/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../keeweb/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/keeweb/2.0.9/questions.yaml | 2053 ++++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.7 => keeweb/2.0.9}/values.yaml | 0 incubator/kitana/2.0.7/CHANGELOG.md | 99 - incubator/kitana/2.0.7/Chart.yaml | 33 - incubator/kitana/2.0.7/app-changelog.md | 9 - incubator/kitana/2.0.7/app-readme.md | 8 - incubator/kitana/2.0.7/questions.yaml | 1829 --------- incubator/kitana/2.0.8/CHANGELOG.md | 99 + incubator/kitana/2.0.8/Chart.yaml | 33 + incubator/kitana/{2.0.7 => 2.0.8}/README.md | 0 incubator/kitana/2.0.8/app-changelog.md | 9 + incubator/kitana/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../kitana/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/kitana/2.0.8/questions.yaml | 1870 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => kitana/2.0.8}/values.yaml | 0 incubator/lemur-cfssl/2.0.7/CHANGELOG.md | 99 - incubator/lemur-cfssl/2.0.7/Chart.yaml | 29 - incubator/lemur-cfssl/2.0.7/app-changelog.md | 9 - incubator/lemur-cfssl/2.0.7/app-readme.md | 8 - incubator/lemur-cfssl/2.0.7/questions.yaml | 1550 -------- incubator/lemur-cfssl/2.0.8/CHANGELOG.md | 99 + incubator/lemur-cfssl/2.0.8/Chart.yaml | 29 + .../lemur-cfssl/{2.0.7 => 2.0.8}/README.md | 0 incubator/lemur-cfssl/2.0.8/app-changelog.md | 9 + incubator/lemur-cfssl/2.0.8/app-readme.md | 8 + .../2.0.8/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/lemur-cfssl/2.0.8/questions.yaml | 1550 ++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8/values.yaml | 0 incubator/linkwallet/2.0.8/CHANGELOG.md | 99 - incubator/linkwallet/2.0.8/Chart.yaml | 26 - incubator/linkwallet/2.0.8/app-changelog.md | 9 - incubator/linkwallet/2.0.8/app-readme.md | 8 - incubator/linkwallet/2.0.8/questions.yaml | 1829 --------- incubator/linkwallet/2.0.9/CHANGELOG.md | 99 + incubator/linkwallet/2.0.9/Chart.yaml | 27 + .../linkwallet/{2.0.8 => 2.0.9}/README.md | 0 incubator/linkwallet/2.0.9/app-changelog.md | 9 + incubator/linkwallet/2.0.9/app-readme.md | 8 + .../2.0.9/charts/common-11.1.2.tgz | Bin .../{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/linkwallet/2.0.9/questions.yaml | 1870 +++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.9/values.yaml | 0 incubator/livebook/2.0.10/CHANGELOG.md | 99 + incubator/livebook/2.0.10/Chart.yaml | 29 + .../livebook/{2.0.9 => 2.0.10}/README.md | 0 incubator/livebook/2.0.10/app-changelog.md | 9 + .../livebook/{2.0.9 => 2.0.10}/app-readme.md | 0 .../2.0.10}/charts/common-11.1.2.tgz | Bin .../livebook/{2.0.9 => 2.0.10}/ix_values.yaml | 0 incubator/livebook/2.0.10/questions.yaml | 1883 +++++++++ .../{2.0.9 => 2.0.10}/templates/common.yaml | 0 .../2.0.8 => livebook/2.0.10}/values.yaml | 0 incubator/livebook/2.0.9/CHANGELOG.md | 99 - incubator/livebook/2.0.9/Chart.yaml | 29 - incubator/livebook/2.0.9/app-changelog.md | 9 - incubator/livebook/2.0.9/questions.yaml | 1842 --------- incubator/livestreamdvr/2.0.8/CHANGELOG.md | 99 - incubator/livestreamdvr/2.0.8/Chart.yaml | 29 - .../livestreamdvr/2.0.8/app-changelog.md | 9 - incubator/livestreamdvr/2.0.8/app-readme.md | 8 - incubator/livestreamdvr/2.0.8/questions.yaml | 2053 ---------- incubator/livestreamdvr/2.0.9/CHANGELOG.md | 99 + incubator/livestreamdvr/2.0.9/Chart.yaml | 29 + .../livestreamdvr/{2.0.8 => 2.0.9}/README.md | 0 .../livestreamdvr/2.0.9/app-changelog.md | 9 + incubator/livestreamdvr/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/livestreamdvr/2.0.9/questions.yaml | 2094 ++++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.7 => livestreamdvr/2.0.9}/values.yaml | 0 incubator/mailpile/2.0.7/CHANGELOG.md | 99 - incubator/mailpile/2.0.7/Chart.yaml | 33 - incubator/mailpile/2.0.7/app-changelog.md | 9 - incubator/mailpile/2.0.7/app-readme.md | 8 - incubator/mailpile/2.0.7/questions.yaml | 1899 --------- incubator/mailpile/2.0.8/CHANGELOG.md | 99 + incubator/mailpile/2.0.8/Chart.yaml | 33 + incubator/mailpile/{2.0.7 => 2.0.8}/README.md | 0 incubator/mailpile/2.0.8/app-changelog.md | 9 + incubator/mailpile/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../mailpile/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/mailpile/2.0.8/questions.yaml | 1940 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => mailpile/2.0.8}/values.yaml | 0 incubator/maloja/2.0.7/CHANGELOG.md | 99 - incubator/maloja/2.0.7/Chart.yaml | 29 - incubator/maloja/2.0.7/app-changelog.md | 9 - incubator/maloja/2.0.7/app-readme.md | 8 - incubator/maloja/2.0.7/questions.yaml | 1848 --------- incubator/maloja/2.0.8/CHANGELOG.md | 99 + incubator/maloja/2.0.8/Chart.yaml | 29 + incubator/maloja/{2.0.7 => 2.0.8}/README.md | 0 incubator/maloja/2.0.8/app-changelog.md | 9 + incubator/maloja/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../maloja/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/maloja/2.0.8/questions.yaml | 1889 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../{mango/2.0.7 => maloja/2.0.8}/values.yaml | 0 incubator/mango/2.0.7/CHANGELOG.md | 99 - incubator/mango/2.0.7/Chart.yaml | 29 - incubator/mango/2.0.7/app-changelog.md | 9 - incubator/mango/2.0.7/app-readme.md | 9 - incubator/mango/2.0.7/questions.yaml | 1899 --------- incubator/mango/2.0.8/CHANGELOG.md | 99 + incubator/mango/2.0.8/Chart.yaml | 29 + incubator/mango/{2.0.7 => 2.0.8}/README.md | 0 incubator/mango/2.0.8/app-changelog.md | 9 + incubator/mango/2.0.8/app-readme.md | 9 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../mango/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/mango/2.0.8/questions.yaml | 1940 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => mango/2.0.8}/values.yaml | 0 incubator/mediaelch/2.0.7/CHANGELOG.md | 99 - incubator/mediaelch/2.0.7/Chart.yaml | 31 - incubator/mediaelch/2.0.7/app-changelog.md | 9 - incubator/mediaelch/2.0.7/app-readme.md | 8 - incubator/mediaelch/2.0.7/questions.yaml | 1840 --------- incubator/mediaelch/2.0.8/CHANGELOG.md | 99 + incubator/mediaelch/2.0.8/Chart.yaml | 31 + .../mediaelch/{2.0.7 => 2.0.8}/README.md | 0 incubator/mediaelch/2.0.8/app-changelog.md | 9 + incubator/mediaelch/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../mediaelch/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/mediaelch/2.0.8/questions.yaml | 1881 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => mediaelch/2.0.8}/values.yaml | 0 incubator/mediagoblin/2.0.7/CHANGELOG.md | 99 - incubator/mediagoblin/2.0.7/Chart.yaml | 29 - incubator/mediagoblin/2.0.7/app-changelog.md | 9 - incubator/mediagoblin/2.0.7/app-readme.md | 8 - incubator/mediagoblin/2.0.7/questions.yaml | 1829 --------- incubator/mediagoblin/2.0.8/CHANGELOG.md | 99 + incubator/mediagoblin/2.0.8/Chart.yaml | 29 + .../mediagoblin/{2.0.7 => 2.0.8}/README.md | 0 incubator/mediagoblin/2.0.8/app-changelog.md | 9 + incubator/mediagoblin/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/mediagoblin/2.0.8/questions.yaml | 1870 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => mediagoblin/2.0.8}/values.yaml | 0 incubator/mineos/2.0.7/CHANGELOG.md | 99 - incubator/mineos/2.0.7/Chart.yaml | 31 - incubator/mineos/2.0.7/app-changelog.md | 9 - incubator/mineos/2.0.7/app-readme.md | 8 - incubator/mineos/2.0.7/questions.yaml | 2332 ----------- incubator/mineos/2.0.8/CHANGELOG.md | 99 + incubator/mineos/2.0.8/Chart.yaml | 31 + incubator/mineos/{2.0.7 => 2.0.8}/README.md | 0 incubator/mineos/2.0.8/app-changelog.md | 9 + incubator/mineos/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../mineos/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/mineos/2.0.8/questions.yaml | 2373 ++++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../3.0.23 => mineos/2.0.8}/values.yaml | 0 incubator/misskey/3.0.23/CHANGELOG.md | 99 - incubator/misskey/3.0.23/Chart.yaml | 41 - incubator/misskey/3.0.23/app-changelog.md | 9 - incubator/misskey/3.0.24/CHANGELOG.md | 99 + incubator/misskey/3.0.24/Chart.yaml | 41 + .../misskey/{3.0.23 => 3.0.24}/README.md | 0 incubator/misskey/3.0.24/app-changelog.md | 9 + .../misskey/{3.0.23 => 3.0.24}/app-readme.md | 0 .../3.0.24}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../charts/redis-5.0.29.tgz | Bin .../misskey/{3.0.23 => 3.0.24}/ix_values.yaml | 0 .../misskey/{3.0.23 => 3.0.24}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{3.0.23 => 3.0.24}/templates/common.yaml | 0 .../2.0.9 => misskey/3.0.24}/values.yaml | 0 incubator/mocodo-mcd/2.0.10/CHANGELOG.md | 99 + incubator/mocodo-mcd/2.0.10/Chart.yaml | 29 + .../mocodo-mcd/{2.0.9 => 2.0.10}/README.md | 0 incubator/mocodo-mcd/2.0.10/app-changelog.md | 9 + incubator/mocodo-mcd/2.0.10/app-readme.md | 8 + .../2.0.10}/charts/common-11.1.2.tgz | Bin .../{2.0.9 => 2.0.10}/ix_values.yaml | 0 incubator/mocodo-mcd/2.0.10/questions.yaml | 1869 +++++++++ .../{2.0.9 => 2.0.10}/templates/common.yaml | 0 .../2.0.7 => mocodo-mcd/2.0.10}/values.yaml | 0 incubator/mocodo-mcd/2.0.9/CHANGELOG.md | 99 - incubator/mocodo-mcd/2.0.9/Chart.yaml | 29 - incubator/mocodo-mcd/2.0.9/app-changelog.md | 9 - incubator/mocodo-mcd/2.0.9/app-readme.md | 8 - incubator/mocodo-mcd/2.0.9/questions.yaml | 1828 --------- incubator/mojopaste/2.0.7/CHANGELOG.md | 99 - incubator/mojopaste/2.0.7/Chart.yaml | 35 - incubator/mojopaste/2.0.7/app-changelog.md | 9 - incubator/mojopaste/2.0.7/app-readme.md | 8 - incubator/mojopaste/2.0.7/questions.yaml | 1841 --------- incubator/mojopaste/2.0.8/CHANGELOG.md | 99 + incubator/mojopaste/2.0.8/Chart.yaml | 35 + .../mojopaste/{2.0.7 => 2.0.8}/README.md | 0 incubator/mojopaste/2.0.8/app-changelog.md | 9 + incubator/mojopaste/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../mojopaste/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/mojopaste/2.0.8/questions.yaml | 1882 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../3.0.27 => mojopaste/2.0.8}/values.yaml | 0 incubator/netbox/3.0.27/CHANGELOG.md | 99 - incubator/netbox/3.0.27/Chart.yaml | 35 - incubator/netbox/3.0.27/app-changelog.md | 9 - incubator/netbox/3.0.28/CHANGELOG.md | 99 + incubator/netbox/3.0.28/Chart.yaml | 36 + incubator/netbox/{3.0.27 => 3.0.28}/README.md | 0 incubator/netbox/3.0.28/app-changelog.md | 9 + .../netbox/{3.0.27 => 3.0.28}/app-readme.md | 0 .../3.0.28}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../charts/redis-5.0.29.tgz | Bin .../netbox/{3.0.27 => 3.0.28}/ix_values.yaml | 0 .../netbox/{3.0.27 => 3.0.28}/questions.yaml | 0 .../templates/_housekeeper.tpl | 0 .../{3.0.27 => 3.0.28}/templates/_secret.tpl | 0 .../{3.0.27 => 3.0.28}/templates/_worker.tpl | 0 .../{3.0.27 => 3.0.28}/templates/common.yaml | 0 .../templates/prometheusrules.yaml | 0 .../templates/servicemonitor.yaml | 0 .../1.0.6 => netbox/3.0.28}/values.yaml | 0 incubator/nitter/1.0.6/CHANGELOG.md | 62 - incubator/nitter/1.0.6/Chart.yaml | 33 - incubator/nitter/1.0.6/README.md | 1 - incubator/nitter/1.0.6/app-changelog.md | 9 - incubator/nitter/1.0.7/CHANGELOG.md | 71 + incubator/nitter/1.0.7/Chart.yaml | 34 + .../2.0.9 => nitter/1.0.7}/README.md | 0 incubator/nitter/1.0.7/app-changelog.md | 9 + .../nitter/{1.0.6 => 1.0.7}/app-readme.md | 0 .../1.0.7}/charts/common-11.1.2.tgz | Bin .../{1.0.6 => 1.0.7}/charts/redis-5.0.29.tgz | Bin .../nitter/{1.0.6 => 1.0.7}/ix_values.yaml | 0 .../nitter/{1.0.6 => 1.0.7}/questions.yaml | 0 .../{1.0.6 => 1.0.7}/templates/_secret.tpl | 0 .../{1.0.6 => 1.0.7}/templates/common.yaml | 0 .../2.0.9 => nitter/1.0.7}/values.yaml | 0 incubator/noisedash/2.0.10/CHANGELOG.md | 99 + incubator/noisedash/2.0.10/Chart.yaml | 27 + .../2.0.7 => noisedash/2.0.10}/README.md | 0 incubator/noisedash/2.0.10/app-changelog.md | 9 + incubator/noisedash/2.0.10/app-readme.md | 8 + .../2.0.10}/charts/common-11.1.2.tgz | Bin .../{2.0.9 => 2.0.10}/ix_values.yaml | 0 incubator/noisedash/2.0.10/questions.yaml | 1954 ++++++++++ .../templates/_configmap.tpl | 0 .../{2.0.9 => 2.0.10}/templates/common.yaml | 0 .../2.0.7 => noisedash/2.0.10}/values.yaml | 0 incubator/noisedash/2.0.9/CHANGELOG.md | 99 - incubator/noisedash/2.0.9/Chart.yaml | 26 - incubator/noisedash/2.0.9/app-changelog.md | 9 - incubator/noisedash/2.0.9/app-readme.md | 8 - incubator/noisedash/2.0.9/questions.yaml | 1913 --------- incubator/nosqlclient/2.0.7/CHANGELOG.md | 99 - incubator/nosqlclient/2.0.7/Chart.yaml | 31 - incubator/nosqlclient/2.0.7/app-changelog.md | 9 - incubator/nosqlclient/2.0.7/app-readme.md | 8 - incubator/nosqlclient/2.0.7/questions.yaml | 1842 --------- incubator/nosqlclient/2.0.8/CHANGELOG.md | 99 + incubator/nosqlclient/2.0.8/Chart.yaml | 31 + .../2.0.7 => nosqlclient/2.0.8}/README.md | 0 incubator/nosqlclient/2.0.8/app-changelog.md | 9 + incubator/nosqlclient/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/nosqlclient/2.0.8/questions.yaml | 1883 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => nosqlclient/2.0.8}/values.yaml | 0 incubator/notarius/2.0.7/CHANGELOG.md | 99 - incubator/notarius/2.0.7/Chart.yaml | 29 - incubator/notarius/2.0.7/app-changelog.md | 9 - incubator/notarius/2.0.7/app-readme.md | 8 - incubator/notarius/2.0.7/questions.yaml | 1402 ------- incubator/notarius/2.0.8/CHANGELOG.md | 99 + incubator/notarius/2.0.8/Chart.yaml | 29 + .../{notea/2.0.7 => notarius/2.0.8}/README.md | 0 incubator/notarius/2.0.8/app-changelog.md | 9 + incubator/notarius/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../notarius/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/notarius/2.0.8/questions.yaml | 1402 +++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => notarius/2.0.8}/values.yaml | 0 incubator/notea/2.0.7/CHANGELOG.md | 99 - incubator/notea/2.0.7/Chart.yaml | 29 - incubator/notea/2.0.7/app-changelog.md | 9 - incubator/notea/2.0.7/app-readme.md | 8 - incubator/notea/2.0.7/questions.yaml | 1427 ------- incubator/notea/2.0.8/CHANGELOG.md | 99 + incubator/notea/2.0.8/Chart.yaml | 30 + .../{observium => notea}/2.0.8/README.md | 0 incubator/notea/2.0.8/app-changelog.md | 9 + incubator/notea/2.0.8/app-readme.md | 8 + .../2.0.8/charts/common-11.1.2.tgz | Bin .../notea/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/notea/2.0.8/questions.yaml | 1427 +++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../{observium => notea}/2.0.8/values.yaml | 0 incubator/observium/2.0.8/CHANGELOG.md | 99 - incubator/observium/2.0.8/Chart.yaml | 29 - incubator/observium/2.0.8/app-changelog.md | 9 - incubator/observium/2.0.8/app-readme.md | 8 - incubator/observium/2.0.8/questions.yaml | 1879 --------- incubator/observium/2.0.9/CHANGELOG.md | 99 + incubator/observium/2.0.9/Chart.yaml | 29 + .../2.0.7 => observium/2.0.9}/README.md | 0 incubator/observium/2.0.9/app-changelog.md | 9 + incubator/observium/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../observium/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/observium/2.0.9/questions.yaml | 1920 +++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.7 => observium/2.0.9}/values.yaml | 0 incubator/openaudible/2.0.7/CHANGELOG.md | 99 - incubator/openaudible/2.0.7/Chart.yaml | 26 - incubator/openaudible/2.0.7/app-changelog.md | 9 - incubator/openaudible/2.0.7/app-readme.md | 8 - incubator/openaudible/2.0.7/questions.yaml | 1829 --------- incubator/openaudible/2.0.8/CHANGELOG.md | 99 + incubator/openaudible/2.0.8/Chart.yaml | 27 + .../3.0.21 => openaudible/2.0.8}/README.md | 0 incubator/openaudible/2.0.8/app-changelog.md | 9 + incubator/openaudible/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/openaudible/2.0.8/questions.yaml | 1870 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../0.0.1 => openaudible/2.0.8}/values.yaml | 0 incubator/openbooks/0.0.1/CHANGELOG.md | 8 - incubator/openbooks/0.0.1/Chart.yaml | 30 - incubator/openbooks/0.0.1/README.md | 1 - incubator/openbooks/0.0.1/app-changelog.md | 4 - incubator/openbooks/0.0.1/questions.yaml | 1891 --------- incubator/openbooks/0.0.2/CHANGELOG.md | 17 + incubator/openbooks/0.0.2/Chart.yaml | 30 + .../2.0.7 => openbooks/0.0.2}/README.md | 0 incubator/openbooks/0.0.2/app-changelog.md | 9 + .../openbooks/{0.0.1 => 0.0.2}/app-readme.md | 0 .../0.0.2}/charts/common-11.1.2.tgz | Bin .../openbooks/{0.0.1 => 0.0.2}/ix_values.yaml | 0 incubator/openbooks/0.0.2/questions.yaml | 1932 ++++++++++ .../{0.0.1 => 0.0.2}/templates/_args.tpl | 0 .../{0.0.1 => 0.0.2}/templates/common.yaml | 0 .../3.0.21 => openbooks/0.0.2}/values.yaml | 0 incubator/openproject/3.0.21/CHANGELOG.md | 99 - incubator/openproject/3.0.21/Chart.yaml | 34 - incubator/openproject/3.0.21/app-changelog.md | 9 - incubator/openproject/3.0.22/CHANGELOG.md | 99 + incubator/openproject/3.0.22/Chart.yaml | 34 + .../0.0.5 => openproject/3.0.22}/README.md | 0 incubator/openproject/3.0.22/app-changelog.md | 9 + .../{3.0.21 => 3.0.22}/app-readme.md | 0 .../3.0.22}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../{3.0.21 => 3.0.22}/ix_values.yaml | 0 .../{3.0.21 => 3.0.22}/questions.yaml | 0 .../{3.0.21 => 3.0.22}/templates/_secrets.tpl | 0 .../{3.0.21 => 3.0.22}/templates/common.yaml | 0 .../2.0.7 => openproject/3.0.22}/values.yaml | 0 incubator/openra/2.0.7/CHANGELOG.md | 99 - incubator/openra/2.0.7/Chart.yaml | 29 - incubator/openra/2.0.7/app-changelog.md | 9 - incubator/openra/2.0.7/app-readme.md | 8 - incubator/openra/2.0.7/questions.yaml | 1818 --------- incubator/openra/2.0.8/CHANGELOG.md | 99 + incubator/openra/2.0.8/Chart.yaml | 29 + .../{pastey/2.0.7 => openra/2.0.8}/README.md | 0 incubator/openra/2.0.8/app-changelog.md | 9 + incubator/openra/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../openra/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/openra/2.0.8/questions.yaml | 1859 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../0.0.5 => openra/2.0.8}/values.yaml | 0 incubator/owntracks/0.0.5/CHANGELOG.md | 40 - incubator/owntracks/0.0.5/Chart.yaml | 30 - incubator/owntracks/0.0.5/app-changelog.md | 9 - incubator/owntracks/0.0.5/app-readme.md | 8 - incubator/owntracks/0.0.5/questions.yaml | 1895 --------- incubator/owntracks/0.0.6/CHANGELOG.md | 49 + incubator/owntracks/0.0.6/Chart.yaml | 31 + .../2.0.7 => owntracks/0.0.6}/README.md | 0 incubator/owntracks/0.0.6/app-changelog.md | 9 + incubator/owntracks/0.0.6/app-readme.md | 8 + .../0.0.6}/charts/common-11.1.2.tgz | Bin .../owntracks/{0.0.5 => 0.0.6}/ix_values.yaml | 0 incubator/owntracks/0.0.6/questions.yaml | 1936 ++++++++++ .../{0.0.5 => 0.0.6}/templates/_secret.tpl | 0 .../{0.0.5 => 0.0.6}/templates/common.yaml | 0 .../2.0.7 => owntracks/0.0.6}/values.yaml | 0 incubator/pastey/2.0.7/CHANGELOG.md | 99 - incubator/pastey/2.0.7/Chart.yaml | 31 - incubator/pastey/2.0.7/app-changelog.md | 9 - incubator/pastey/2.0.7/app-readme.md | 8 - incubator/pastey/2.0.7/questions.yaml | 1884 --------- incubator/pastey/2.0.8/CHANGELOG.md | 99 + incubator/pastey/2.0.8/Chart.yaml | 31 + .../2.0.7 => pastey/2.0.8}/README.md | 0 incubator/pastey/2.0.8/app-changelog.md | 9 + incubator/pastey/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../pastey/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/pastey/2.0.8/questions.yaml | 1925 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => pastey/2.0.8}/values.yaml | 0 .../phoronix-test-suite/2.0.7/CHANGELOG.md | 99 - .../phoronix-test-suite/2.0.7/Chart.yaml | 29 - .../2.0.7/app-changelog.md | 9 - .../phoronix-test-suite/2.0.7/app-readme.md | 8 - .../phoronix-test-suite/2.0.7/questions.yaml | 1550 -------- .../phoronix-test-suite/2.0.8/CHANGELOG.md | 99 + .../phoronix-test-suite/2.0.8/Chart.yaml | 29 + .../2.0.8}/README.md | 0 .../2.0.8/app-changelog.md | 9 + .../phoronix-test-suite/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 .../phoronix-test-suite/2.0.8/questions.yaml | 1550 ++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/photostructure/2.0.7/CHANGELOG.md | 99 - incubator/photostructure/2.0.7/Chart.yaml | 33 - .../photostructure/2.0.7/app-changelog.md | 9 - incubator/photostructure/2.0.7/app-readme.md | 9 - incubator/photostructure/2.0.7/questions.yaml | 2058 ---------- incubator/photostructure/2.0.8/CHANGELOG.md | 99 + incubator/photostructure/2.0.8/Chart.yaml | 33 + .../4.0.21 => photostructure/2.0.8}/README.md | 0 .../photostructure/2.0.8/app-changelog.md | 9 + incubator/photostructure/2.0.8/app-readme.md | 9 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/photostructure/2.0.8/questions.yaml | 2099 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/phpmyadmin/2.0.7/CHANGELOG.md | 99 - incubator/phpmyadmin/2.0.7/Chart.yaml | 30 - incubator/phpmyadmin/2.0.7/app-changelog.md | 9 - incubator/phpmyadmin/2.0.7/app-readme.md | 8 - incubator/phpmyadmin/2.0.7/questions.yaml | 1782 --------- incubator/phpmyadmin/2.0.8/CHANGELOG.md | 99 + incubator/phpmyadmin/2.0.8/Chart.yaml | 30 + .../2.0.10 => phpmyadmin/2.0.8}/README.md | 0 incubator/phpmyadmin/2.0.8/app-changelog.md | 9 + incubator/phpmyadmin/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/phpmyadmin/2.0.8/questions.yaml | 1823 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../4.0.21 => phpmyadmin/2.0.8}/values.yaml | 0 incubator/plausible/4.0.21/CHANGELOG.md | 99 - incubator/plausible/4.0.21/Chart.yaml | 42 - incubator/plausible/4.0.21/app-changelog.md | 9 - incubator/plausible/4.0.22/CHANGELOG.md | 99 + incubator/plausible/4.0.22/Chart.yaml | 42 + .../0.0.7 => plausible/4.0.22}/README.md | 0 incubator/plausible/4.0.22/app-changelog.md | 9 + .../{4.0.21 => 4.0.22}/app-readme.md | 0 .../charts/clickhouse-3.0.17.tgz | Bin .../4.0.22}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../{4.0.21 => 4.0.22}/ix_values.yaml | 0 .../{4.0.21 => 4.0.22}/questions.yaml | 0 .../{4.0.21 => 4.0.22}/templates/_env.tpl | 0 .../{4.0.21 => 4.0.22}/templates/common.yaml | 0 .../2.0.10 => plausible/4.0.22}/values.yaml | 0 incubator/plexripper/2.0.10/CHANGELOG.md | 99 - incubator/plexripper/2.0.10/Chart.yaml | 39 - incubator/plexripper/2.0.10/app-changelog.md | 9 - incubator/plexripper/2.0.11/CHANGELOG.md | 99 + incubator/plexripper/2.0.11/Chart.yaml | 39 + .../3.0.23 => plexripper/2.0.11}/README.md | 0 incubator/plexripper/2.0.11/app-changelog.md | 9 + .../{2.0.10 => 2.0.11}/app-readme.md | 0 .../2.0.11}/charts/common-11.1.2.tgz | Bin .../{2.0.10 => 2.0.11}/ix_values.yaml | 0 .../{2.0.10 => 2.0.11}/questions.yaml | 0 .../{2.0.10 => 2.0.11}/templates/common.yaml | 0 .../0.0.7 => plexripper/2.0.11}/values.yaml | 0 incubator/plik/0.0.7/CHANGELOG.md | 62 - incubator/plik/0.0.7/Chart.yaml | 33 - incubator/plik/0.0.7/app-changelog.md | 9 - incubator/plik/0.0.8/CHANGELOG.md | 71 + incubator/plik/0.0.8/Chart.yaml | 34 + incubator/{pwm/2.0.7 => plik/0.0.8}/README.md | 0 incubator/plik/0.0.8/app-changelog.md | 9 + incubator/plik/{0.0.7 => 0.0.8}/app-readme.md | 0 .../0.0.8}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../plik/{0.0.7 => 0.0.8}/ix_values.yaml | 0 .../plik/{0.0.7 => 0.0.8}/questions.yaml | 0 .../{0.0.7 => 0.0.8}/templates/_config.tpl | 0 .../{0.0.7 => 0.0.8}/templates/common.yaml | 0 .../3.0.23 => plik/0.0.8}/values.yaml | 0 incubator/privatebin/3.0.23/CHANGELOG.md | 99 - incubator/privatebin/3.0.23/Chart.yaml | 35 - incubator/privatebin/3.0.23/app-changelog.md | 9 - incubator/privatebin/3.0.24/CHANGELOG.md | 99 + incubator/privatebin/3.0.24/Chart.yaml | 35 + .../2.0.7 => privatebin/3.0.24}/README.md | 0 incubator/privatebin/3.0.24/app-changelog.md | 9 + .../{3.0.23 => 3.0.24}/app-readme.md | 0 .../3.0.24}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../{3.0.23 => 3.0.24}/ix_values.yaml | 0 .../{3.0.23 => 3.0.24}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{3.0.23 => 3.0.24}/templates/_secrets.tpl | 0 .../{3.0.23 => 3.0.24}/templates/common.yaml | 0 .../2.0.7 => privatebin/3.0.24}/values.yaml | 0 incubator/pwm/2.0.7/CHANGELOG.md | 99 - incubator/pwm/2.0.7/Chart.yaml | 29 - incubator/pwm/2.0.7/app-changelog.md | 9 - incubator/pwm/2.0.7/app-readme.md | 8 - incubator/pwm/2.0.7/questions.yaml | 1842 --------- incubator/pwm/2.0.8/CHANGELOG.md | 99 + incubator/pwm/2.0.8/Chart.yaml | 29 + .../2.0.14 => pwm/2.0.8}/README.md | 0 incubator/pwm/2.0.8/app-changelog.md | 9 + incubator/pwm/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin incubator/pwm/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/pwm/2.0.8/questions.yaml | 1883 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => pwm/2.0.8}/values.yaml | 0 incubator/quickshare/2.0.7/CHANGELOG.md | 99 - incubator/quickshare/2.0.7/Chart.yaml | 35 - incubator/quickshare/2.0.7/app-changelog.md | 9 - incubator/quickshare/2.0.7/app-readme.md | 8 - incubator/quickshare/2.0.7/questions.yaml | 1848 --------- incubator/quickshare/2.0.8/CHANGELOG.md | 99 + incubator/quickshare/2.0.8/Chart.yaml | 35 + .../2.0.7 => quickshare/2.0.8}/README.md | 0 incubator/quickshare/2.0.8/app-changelog.md | 9 + incubator/quickshare/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/quickshare/2.0.8/questions.yaml | 1889 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.14 => quickshare/2.0.8}/values.yaml | 0 .../ra-rom-processor/2.0.14/CHANGELOG.md | 99 - incubator/ra-rom-processor/2.0.14/Chart.yaml | 31 - .../ra-rom-processor/2.0.14/app-changelog.md | 9 - .../ra-rom-processor/2.0.15/CHANGELOG.md | 99 + incubator/ra-rom-processor/2.0.15/Chart.yaml | 31 + .../2.0.15}/README.md | 0 .../ra-rom-processor/2.0.15/app-changelog.md | 9 + .../{2.0.14 => 2.0.15}/app-readme.md | 0 .../2.0.15}/charts/common-11.1.2.tgz | Bin .../{2.0.14 => 2.0.15}/ix_values.yaml | 0 .../{2.0.14 => 2.0.15}/questions.yaml | 0 .../{2.0.14 => 2.0.15}/templates/common.yaml | 0 .../2.0.15}/values.yaml | 0 incubator/redisinsight/2.0.7/CHANGELOG.md | 99 - incubator/redisinsight/2.0.7/Chart.yaml | 30 - incubator/redisinsight/2.0.7/app-changelog.md | 9 - incubator/redisinsight/2.0.7/app-readme.md | 8 - incubator/redisinsight/2.0.7/questions.yaml | 1949 ---------- incubator/redisinsight/2.0.8/CHANGELOG.md | 99 + incubator/redisinsight/2.0.8/Chart.yaml | 30 + .../3.0.3 => redisinsight/2.0.8}/README.md | 0 incubator/redisinsight/2.0.8/app-changelog.md | 9 + incubator/redisinsight/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/redisinsight/2.0.8/questions.yaml | 1990 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.10 => redisinsight/2.0.8}/values.yaml | 0 incubator/restreamer/2.0.10/CHANGELOG.md | 99 - incubator/restreamer/2.0.10/Chart.yaml | 35 - incubator/restreamer/2.0.10/app-changelog.md | 9 - incubator/restreamer/2.0.10/app-readme.md | 8 - incubator/restreamer/2.0.10/questions.yaml | 2791 -------------- incubator/restreamer/2.0.11/CHANGELOG.md | 99 + incubator/restreamer/2.0.11/Chart.yaml | 35 + .../2.0.8 => restreamer/2.0.11}/README.md | 0 incubator/restreamer/2.0.11/app-changelog.md | 9 + incubator/restreamer/2.0.11/app-readme.md | 8 + .../2.0.11}/charts/common-11.1.2.tgz | Bin .../{2.0.10 => 2.0.11}/ix_values.yaml | 0 incubator/restreamer/2.0.11/questions.yaml | 2853 ++++++++++++++ .../{2.0.10 => 2.0.11}/templates/_config.tpl | 0 .../{2.0.10 => 2.0.11}/templates/_secret.tpl | 0 .../{2.0.10 => 2.0.11}/templates/common.yaml | 0 .../3.0.3 => restreamer/2.0.11}/values.yaml | 0 incubator/rstudio/3.0.3/CHANGELOG.md | 99 - incubator/rstudio/3.0.3/Chart.yaml | 30 - incubator/rstudio/3.0.3/app-changelog.md | 9 - incubator/rstudio/3.0.3/app-readme.md | 8 - incubator/rstudio/3.0.3/questions.yaml | 1938 ---------- incubator/rstudio/3.0.4/CHANGELOG.md | 99 + incubator/rstudio/3.0.4/Chart.yaml | 30 + .../2.0.8 => rstudio/3.0.4}/README.md | 0 incubator/rstudio/3.0.4/app-changelog.md | 9 + incubator/rstudio/3.0.4/app-readme.md | 8 + .../3.0.4}/charts/common-11.1.2.tgz | Bin .../rstudio/{3.0.3 => 3.0.4}/ix_values.yaml | 0 incubator/rstudio/3.0.4/questions.yaml | 1979 ++++++++++ .../{3.0.3 => 3.0.4}/templates/common.yaml | 0 .../2.0.8 => rstudio/3.0.4}/values.yaml | 0 incubator/rustpad/2.0.8/CHANGELOG.md | 99 - incubator/rustpad/2.0.8/Chart.yaml | 33 - incubator/rustpad/2.0.8/app-changelog.md | 9 - incubator/rustpad/2.0.8/app-readme.md | 8 - incubator/rustpad/2.0.8/questions.yaml | 1854 --------- incubator/rustpad/2.0.9/CHANGELOG.md | 99 + incubator/rustpad/2.0.9/Chart.yaml | 33 + .../2.0.16 => rustpad/2.0.9}/README.md | 0 incubator/rustpad/2.0.9/app-changelog.md | 9 + incubator/rustpad/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../rustpad/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/rustpad/2.0.9/questions.yaml | 1895 +++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.8 => rustpad/2.0.9}/values.yaml | 0 incubator/scprime/2.0.8/CHANGELOG.md | 99 - incubator/scprime/2.0.8/Chart.yaml | 31 - incubator/scprime/2.0.8/app-changelog.md | 9 - incubator/scprime/2.0.8/app-readme.md | 8 - incubator/scprime/2.0.8/questions.yaml | 1964 ---------- incubator/scprime/2.0.9/CHANGELOG.md | 99 + incubator/scprime/2.0.9/Chart.yaml | 31 + .../0.0.7 => scprime/2.0.9}/README.md | 0 incubator/scprime/2.0.9/app-changelog.md | 9 + incubator/scprime/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../scprime/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/scprime/2.0.9/questions.yaml | 2005 ++++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.16 => scprime/2.0.9}/values.yaml | 0 incubator/searxng/2.0.16/CHANGELOG.md | 99 - incubator/searxng/2.0.16/Chart.yaml | 32 - incubator/searxng/2.0.16/app-changelog.md | 9 - incubator/searxng/2.0.17/CHANGELOG.md | 99 + incubator/searxng/2.0.17/Chart.yaml | 32 + .../2.0.7 => searxng/2.0.17}/README.md | 0 incubator/searxng/2.0.17/app-changelog.md | 9 + .../searxng/{2.0.16 => 2.0.17}/app-readme.md | 0 .../2.0.17}/charts/common-11.1.2.tgz | Bin .../searxng/{2.0.16 => 2.0.17}/ix_values.yaml | 0 .../searxng/{2.0.16 => 2.0.17}/questions.yaml | 0 .../{2.0.16 => 2.0.17}/templates/common.yaml | 0 .../0.0.7 => searxng/2.0.17}/values.yaml | 0 incubator/serpbear/0.0.7/CHANGELOG.md | 62 - incubator/serpbear/0.0.7/Chart.yaml | 30 - incubator/serpbear/0.0.7/app-changelog.md | 9 - incubator/serpbear/0.0.7/questions.yaml | 1872 --------- incubator/serpbear/0.0.8/CHANGELOG.md | 71 + incubator/serpbear/0.0.8/Chart.yaml | 30 + .../2.0.9 => serpbear/0.0.8}/README.md | 0 incubator/serpbear/0.0.8/app-changelog.md | 9 + .../serpbear/{0.0.7 => 0.0.8}/app-readme.md | 0 .../0.0.8}/charts/common-11.1.2.tgz | Bin .../serpbear/{0.0.7 => 0.0.8}/ix_values.yaml | 0 incubator/serpbear/0.0.8/questions.yaml | 1913 +++++++++ .../{0.0.7 => 0.0.8}/templates/_secret.tpl | 0 .../{0.0.7 => 0.0.8}/templates/common.yaml | 0 .../2.0.7 => serpbear/0.0.8}/values.yaml | 0 incubator/serviio/2.0.7/CHANGELOG.md | 99 - incubator/serviio/2.0.7/Chart.yaml | 37 - incubator/serviio/2.0.7/app-changelog.md | 9 - incubator/serviio/2.0.7/app-readme.md | 8 - incubator/serviio/2.0.7/questions.yaml | 2247 ----------- incubator/serviio/2.0.8/CHANGELOG.md | 99 + incubator/serviio/2.0.8/Chart.yaml | 37 + .../{shaarli => serviio}/2.0.8/README.md | 0 incubator/serviio/2.0.8/app-changelog.md | 9 + incubator/serviio/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../serviio/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/serviio/2.0.8/questions.yaml | 2288 +++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.9 => serviio/2.0.8}/values.yaml | 0 incubator/sftpgo/2.0.10/CHANGELOG.md | 99 + incubator/sftpgo/2.0.10/Chart.yaml | 29 + .../3.0.19 => sftpgo/2.0.10}/README.md | 0 incubator/sftpgo/2.0.10/app-changelog.md | 9 + incubator/sftpgo/2.0.10/app-readme.md | 8 + .../2.0.10}/charts/common-11.1.2.tgz | Bin .../sftpgo/{2.0.9 => 2.0.10}/ix_values.yaml | 0 incubator/sftpgo/2.0.10/questions.yaml | 2325 +++++++++++ .../{2.0.9 => 2.0.10}/templates/common.yaml | 0 .../2.0.8 => sftpgo/2.0.10}/values.yaml | 0 incubator/sftpgo/2.0.9/CHANGELOG.md | 99 - incubator/sftpgo/2.0.9/Chart.yaml | 29 - incubator/sftpgo/2.0.9/app-changelog.md | 9 - incubator/sftpgo/2.0.9/app-readme.md | 8 - incubator/sftpgo/2.0.9/questions.yaml | 2284 ----------- incubator/shaarli/2.0.8/CHANGELOG.md | 99 - incubator/shaarli/2.0.8/Chart.yaml | 29 - incubator/shaarli/2.0.8/app-changelog.md | 9 - incubator/shaarli/2.0.8/app-readme.md | 8 - incubator/shaarli/2.0.8/questions.yaml | 1899 --------- incubator/shaarli/2.0.9/CHANGELOG.md | 99 + incubator/shaarli/2.0.9/Chart.yaml | 29 + .../3.0.0 => shaarli/2.0.9}/README.md | 0 incubator/shaarli/2.0.9/app-changelog.md | 9 + incubator/shaarli/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../shaarli/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/shaarli/2.0.9/questions.yaml | 1940 ++++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../3.0.19 => shaarli/2.0.9}/values.yaml | 0 incubator/sheetable/3.0.19/CHANGELOG.md | 99 - incubator/sheetable/3.0.19/Chart.yaml | 31 - incubator/sheetable/3.0.19/app-changelog.md | 9 - incubator/sheetable/3.0.20/CHANGELOG.md | 99 + incubator/sheetable/3.0.20/Chart.yaml | 32 + .../2.0.7 => sheetable/3.0.20}/README.md | 0 incubator/sheetable/3.0.20/app-changelog.md | 9 + .../{3.0.19 => 3.0.20}/app-readme.md | 0 .../3.0.20}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../{3.0.19 => 3.0.20}/ix_values.yaml | 0 .../{3.0.19 => 3.0.20}/questions.yaml | 0 .../{3.0.19 => 3.0.20}/templates/_secrets.tpl | 0 .../{3.0.19 => 3.0.20}/templates/common.yaml | 0 .../3.0.0 => sheetable/3.0.20}/values.yaml | 0 incubator/shoko-server/3.0.0/CHANGELOG.md | 99 - incubator/shoko-server/3.0.0/Chart.yaml | 31 - incubator/shoko-server/3.0.0/app-changelog.md | 4 - incubator/shoko-server/3.0.1/CHANGELOG.md | 99 + incubator/shoko-server/3.0.1/Chart.yaml | 31 + .../2.0.12 => shoko-server/3.0.1}/README.md | 0 incubator/shoko-server/3.0.1/app-changelog.md | 9 + .../{3.0.0 => 3.0.1}/app-readme.md | 0 .../3.0.1}/charts/common-11.1.2.tgz | Bin .../{3.0.0 => 3.0.1}/ix_values.yaml | 0 .../{3.0.0 => 3.0.1}/questions.yaml | 0 .../{3.0.0 => 3.0.1}/templates/common.yaml | 0 .../2.0.7 => shoko-server/3.0.1}/values.yaml | 0 incubator/sinusbot/2.0.7/CHANGELOG.md | 99 - incubator/sinusbot/2.0.7/Chart.yaml | 33 - incubator/sinusbot/2.0.7/app-changelog.md | 9 - incubator/sinusbot/2.0.7/app-readme.md | 8 - incubator/sinusbot/2.0.7/questions.yaml | 1911 --------- incubator/sinusbot/2.0.8/CHANGELOG.md | 99 + incubator/sinusbot/2.0.8/Chart.yaml | 33 + .../2.0.12 => sinusbot/2.0.8}/README.md | 0 incubator/sinusbot/2.0.8/app-changelog.md | 9 + incubator/sinusbot/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../sinusbot/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/sinusbot/2.0.8/questions.yaml | 1952 ++++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.12 => sinusbot/2.0.8}/values.yaml | 0 incubator/songkong/2.0.12/CHANGELOG.md | 99 - incubator/songkong/2.0.12/Chart.yaml | 29 - incubator/songkong/2.0.12/app-changelog.md | 9 - incubator/songkong/2.0.12/app-readme.md | 8 - incubator/songkong/2.0.12/questions.yaml | 1899 --------- incubator/songkong/2.0.13/CHANGELOG.md | 99 + incubator/songkong/2.0.13/Chart.yaml | 29 + .../2.0.8 => songkong/2.0.13}/README.md | 0 incubator/songkong/2.0.13/app-changelog.md | 9 + incubator/songkong/2.0.13/app-readme.md | 8 + .../2.0.13}/charts/common-11.1.2.tgz | Bin .../{2.0.12 => 2.0.13}/ix_values.yaml | 0 incubator/songkong/2.0.13/questions.yaml | 1940 ++++++++++ .../{2.0.12 => 2.0.13}/templates/common.yaml | 0 .../2.0.12 => songkong/2.0.13}/values.yaml | 0 incubator/sourcegraph/2.0.12/CHANGELOG.md | 99 - incubator/sourcegraph/2.0.12/Chart.yaml | 36 - incubator/sourcegraph/2.0.12/app-changelog.md | 9 - incubator/sourcegraph/2.0.13/CHANGELOG.md | 99 + incubator/sourcegraph/2.0.13/Chart.yaml | 36 + .../3.0.6 => sourcegraph/2.0.13}/README.md | 0 incubator/sourcegraph/2.0.13/app-changelog.md | 9 + .../{2.0.12 => 2.0.13}/app-readme.md | 0 .../2.0.13}/charts/common-11.1.2.tgz | Bin .../{2.0.12 => 2.0.13}/ix_values.yaml | 0 .../{2.0.12 => 2.0.13}/questions.yaml | 0 .../{2.0.12 => 2.0.13}/templates/common.yaml | 0 .../2.0.8 => sourcegraph/2.0.13}/values.yaml | 0 incubator/spaceengineers/2.0.8/CHANGELOG.md | 99 - incubator/spaceengineers/2.0.8/Chart.yaml | 29 - .../spaceengineers/2.0.8/app-changelog.md | 9 - incubator/spaceengineers/2.0.9/CHANGELOG.md | 99 + incubator/spaceengineers/2.0.9/Chart.yaml | 28 + .../2.0.7 => spaceengineers/2.0.9}/README.md | 0 .../spaceengineers/2.0.9/app-changelog.md | 9 + .../{2.0.8 => 2.0.9}/app-readme.md | 0 .../2.0.9}/charts/common-11.1.2.tgz | Bin .../{2.0.8 => 2.0.9}/ix_values.yaml | 0 .../{2.0.8 => 2.0.9}/questions.yaml | 0 .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.9}/values.yaml | 0 incubator/splunk/3.0.6/CHANGELOG.md | 99 - incubator/splunk/3.0.6/Chart.yaml | 31 - incubator/splunk/3.0.6/app-changelog.md | 9 - incubator/splunk/3.0.6/app-readme.md | 8 - incubator/splunk/3.0.6/questions.yaml | 2105 ---------- incubator/splunk/3.0.7/CHANGELOG.md | 99 + incubator/splunk/3.0.7/Chart.yaml | 31 + .../2.0.7 => splunk/3.0.7}/README.md | 0 incubator/splunk/3.0.7/app-changelog.md | 9 + incubator/splunk/3.0.7/app-readme.md | 8 + .../3.0.7}/charts/common-11.1.2.tgz | Bin .../splunk/{3.0.6 => 3.0.7}/ix_values.yaml | 0 incubator/splunk/3.0.7/questions.yaml | 2146 +++++++++++ .../{3.0.6 => 3.0.7}/templates/_config.tpl | 0 .../{3.0.6 => 3.0.7}/templates/common.yaml | 0 .../2.0.7 => splunk/3.0.7}/values.yaml | 0 incubator/stackedit/2.0.7/CHANGELOG.md | 99 - incubator/stackedit/2.0.7/Chart.yaml | 31 - incubator/stackedit/2.0.7/app-changelog.md | 9 - incubator/stackedit/2.0.7/app-readme.md | 8 - incubator/stackedit/2.0.7/questions.yaml | 1764 --------- incubator/stackedit/2.0.8/CHANGELOG.md | 99 + incubator/stackedit/2.0.8/Chart.yaml | 31 + .../2.0.7 => stackedit/2.0.8}/README.md | 0 incubator/stackedit/2.0.8/app-changelog.md | 9 + incubator/stackedit/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../stackedit/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/stackedit/2.0.8/questions.yaml | 1805 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => stackedit/2.0.8}/values.yaml | 0 .../standardnotes-web/2.0.7/CHANGELOG.md | 99 - incubator/standardnotes-web/2.0.7/Chart.yaml | 29 - .../standardnotes-web/2.0.7/app-changelog.md | 9 - .../standardnotes-web/2.0.7/app-readme.md | 8 - .../standardnotes-web/2.0.7/questions.yaml | 1402 ------- .../standardnotes-web/2.0.8/CHANGELOG.md | 99 + incubator/standardnotes-web/2.0.8/Chart.yaml | 29 + .../2.0.8}/README.md | 0 .../standardnotes-web/2.0.8/app-changelog.md | 9 + .../standardnotes-web/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 .../standardnotes-web/2.0.8/questions.yaml | 1402 +++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/tanoshi/2.0.7/CHANGELOG.md | 99 - incubator/tanoshi/2.0.7/Chart.yaml | 33 - incubator/tanoshi/2.0.7/app-changelog.md | 9 - incubator/tanoshi/2.0.7/app-readme.md | 8 - incubator/tanoshi/2.0.7/questions.yaml | 1828 --------- incubator/tanoshi/2.0.8/CHANGELOG.md | 99 + incubator/tanoshi/2.0.8/Chart.yaml | 33 + .../2.0.7 => tanoshi/2.0.8}/README.md | 0 incubator/tanoshi/2.0.8/app-changelog.md | 9 + incubator/tanoshi/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../tanoshi/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/tanoshi/2.0.8/questions.yaml | 1869 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => tanoshi/2.0.8}/values.yaml | 0 incubator/tasmoadmin/2.0.7/CHANGELOG.md | 99 - incubator/tasmoadmin/2.0.7/Chart.yaml | 30 - incubator/tasmoadmin/2.0.7/app-changelog.md | 9 - incubator/tasmoadmin/2.0.7/app-readme.md | 8 - incubator/tasmoadmin/2.0.7/questions.yaml | 1829 --------- incubator/tasmoadmin/2.0.8/CHANGELOG.md | 99 + incubator/tasmoadmin/2.0.8/Chart.yaml | 30 + .../0.0.5 => tasmoadmin/2.0.8}/README.md | 0 incubator/tasmoadmin/2.0.8/app-changelog.md | 9 + incubator/tasmoadmin/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/tasmoadmin/2.0.8/questions.yaml | 1870 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.7 => tasmoadmin/2.0.8}/values.yaml | 0 incubator/teedy-docs/2.0.7/CHANGELOG.md | 99 - incubator/teedy-docs/2.0.7/Chart.yaml | 31 - incubator/teedy-docs/2.0.7/app-changelog.md | 9 - incubator/teedy-docs/2.0.7/app-readme.md | 8 - incubator/teedy-docs/2.0.7/questions.yaml | 1493 ------- incubator/teedy-docs/2.0.8/CHANGELOG.md | 99 + incubator/teedy-docs/2.0.8/Chart.yaml | 31 + .../2.0.7 => teedy-docs/2.0.8}/README.md | 0 incubator/teedy-docs/2.0.8/app-changelog.md | 9 + incubator/teedy-docs/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/teedy-docs/2.0.8/questions.yaml | 1493 +++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../0.0.5 => teedy-docs/2.0.8}/values.yaml | 0 incubator/thumba/0.0.5/CHANGELOG.md | 44 - incubator/thumba/0.0.5/Chart.yaml | 30 - incubator/thumba/0.0.5/app-changelog.md | 9 - incubator/thumba/0.0.5/app-readme.md | 8 - incubator/thumba/0.0.5/questions.yaml | 1944 ---------- incubator/thumba/0.0.6/CHANGELOG.md | 53 + incubator/thumba/0.0.6/Chart.yaml | 30 + .../2.0.8 => thumba/0.0.6}/README.md | 0 incubator/thumba/0.0.6/app-changelog.md | 9 + incubator/thumba/0.0.6/app-readme.md | 8 + .../0.0.6}/charts/common-11.1.2.tgz | Bin .../thumba/{0.0.5 => 0.0.6}/ix_values.yaml | 0 incubator/thumba/0.0.6/questions.yaml | 1985 ++++++++++ .../{0.0.5 => 0.0.6}/templates/common.yaml | 0 .../2.0.7 => thumba/0.0.6}/values.yaml | 0 incubator/tonido/2.0.7/CHANGELOG.md | 99 - incubator/tonido/2.0.7/Chart.yaml | 28 - incubator/tonido/2.0.7/app-changelog.md | 9 - incubator/tonido/2.0.7/app-readme.md | 8 - incubator/tonido/2.0.7/questions.yaml | 1828 --------- incubator/tonido/2.0.8/CHANGELOG.md | 99 + incubator/tonido/2.0.8/Chart.yaml | 29 + incubator/{troddit => tonido}/2.0.8/README.md | 0 incubator/tonido/2.0.8/app-changelog.md | 9 + incubator/tonido/2.0.8/app-readme.md | 8 + .../2.0.8/charts/common-11.1.2.tgz | Bin .../tonido/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/tonido/2.0.8/questions.yaml | 1869 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../{traktarr => tonido}/2.0.8/values.yaml | 0 incubator/traktarr/2.0.8/CHANGELOG.md | 99 - incubator/traktarr/2.0.8/Chart.yaml | 30 - incubator/traktarr/2.0.8/app-changelog.md | 9 - incubator/traktarr/2.0.8/app-readme.md | 8 - incubator/traktarr/2.0.8/questions.yaml | 1548 -------- incubator/traktarr/2.0.9/CHANGELOG.md | 99 + incubator/traktarr/2.0.9/Chart.yaml | 30 + .../2.0.10 => traktarr/2.0.9}/README.md | 0 incubator/traktarr/2.0.9/app-changelog.md | 9 + incubator/traktarr/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../traktarr/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/traktarr/2.0.9/questions.yaml | 1548 ++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.8 => traktarr/2.0.9}/values.yaml | 0 incubator/troddit/2.0.8/CHANGELOG.md | 99 - incubator/troddit/2.0.8/Chart.yaml | 29 - incubator/troddit/2.0.8/app-changelog.md | 9 - incubator/troddit/2.0.8/app-readme.md | 8 - incubator/troddit/2.0.8/questions.yaml | 1788 --------- incubator/troddit/2.0.9/CHANGELOG.md | 99 + incubator/troddit/2.0.9/Chart.yaml | 29 + .../2.0.12 => troddit/2.0.9}/README.md | 0 incubator/troddit/2.0.9/app-changelog.md | 9 + incubator/troddit/2.0.9/app-readme.md | 8 + .../2.0.9}/charts/common-11.1.2.tgz | Bin .../troddit/{2.0.8 => 2.0.9}/ix_values.yaml | 0 incubator/troddit/2.0.9/questions.yaml | 1829 +++++++++ .../{2.0.8 => 2.0.9}/templates/common.yaml | 0 .../2.0.10 => troddit/2.0.9}/values.yaml | 0 .../2.0.10/CHANGELOG.md | 99 - .../tubearchivist-redisjson/2.0.10/Chart.yaml | 29 - .../2.0.10/app-changelog.md | 9 - .../2.0.10/app-readme.md | 8 - .../2.0.10/questions.yaml | 1829 --------- .../2.0.11/CHANGELOG.md | 99 + .../tubearchivist-redisjson/2.0.11/Chart.yaml | 29 + .../2.0.11}/README.md | 0 .../2.0.11/app-changelog.md | 9 + .../2.0.11/app-readme.md | 8 + .../2.0.11}/charts/common-11.1.2.tgz | Bin .../{2.0.10 => 2.0.11}/ix_values.yaml | 0 .../2.0.11/questions.yaml | 1870 +++++++++ .../{2.0.10 => 2.0.11}/templates/common.yaml | 0 .../2.0.11}/values.yaml | 0 .../2.0.12/CHANGELOG.md | 99 - .../universal-media-server/2.0.12/Chart.yaml | 35 - .../2.0.12/app-changelog.md | 9 - .../2.0.13/CHANGELOG.md | 99 + .../universal-media-server/2.0.13/Chart.yaml | 35 + .../2.0.13}/README.md | 0 .../2.0.13/app-changelog.md | 9 + .../{2.0.12 => 2.0.13}/app-readme.md | 0 .../2.0.13}/charts/common-11.1.2.tgz | Bin .../{2.0.12 => 2.0.13}/ix_values.yaml | 0 .../{2.0.12 => 2.0.13}/questions.yaml | 0 .../{2.0.12 => 2.0.13}/templates/common.yaml | 0 .../2.0.13}/values.yaml | 0 incubator/vaulthunters/2.0.7/CHANGELOG.md | 99 - incubator/vaulthunters/2.0.7/Chart.yaml | 29 - incubator/vaulthunters/2.0.7/app-changelog.md | 9 - incubator/vaulthunters/2.0.7/app-readme.md | 8 - incubator/vaulthunters/2.0.7/questions.yaml | 1854 --------- incubator/vaulthunters/2.0.8/CHANGELOG.md | 99 + incubator/vaulthunters/2.0.8/Chart.yaml | 29 + .../2.0.7 => vaulthunters/2.0.8}/README.md | 0 incubator/vaulthunters/2.0.8/app-changelog.md | 9 + incubator/vaulthunters/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/vaulthunters/2.0.8/questions.yaml | 1895 +++++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.16 => vaulthunters/2.0.8}/values.yaml | 0 incubator/vertex/2.0.16/CHANGELOG.md | 99 - incubator/vertex/2.0.16/Chart.yaml | 31 - incubator/vertex/2.0.16/app-changelog.md | 9 - incubator/vertex/2.0.16/questions.yaml | 1842 --------- incubator/vertex/2.0.17/CHANGELOG.md | 99 + incubator/vertex/2.0.17/Chart.yaml | 31 + .../2.0.11 => vertex/2.0.17}/README.md | 0 incubator/vertex/2.0.17/app-changelog.md | 9 + .../vertex/{2.0.16 => 2.0.17}/app-readme.md | 0 .../2.0.17}/charts/common-11.1.2.tgz | Bin .../vertex/{2.0.16 => 2.0.17}/ix_values.yaml | 0 incubator/vertex/2.0.17/questions.yaml | 1883 +++++++++ .../{2.0.16 => 2.0.17}/templates/common.yaml | 0 .../2.0.7 => vertex/2.0.17}/values.yaml | 0 .../vlmcsd-kms-server/2.0.7/CHANGELOG.md | 99 - incubator/vlmcsd-kms-server/2.0.7/Chart.yaml | 33 - .../vlmcsd-kms-server/2.0.7/app-changelog.md | 9 - .../vlmcsd-kms-server/2.0.7/app-readme.md | 8 - .../vlmcsd-kms-server/2.0.7/questions.yaml | 1402 ------- .../vlmcsd-kms-server/2.0.8/CHANGELOG.md | 99 + incubator/vlmcsd-kms-server/2.0.8/Chart.yaml | 33 + .../2.0.8}/README.md | 0 .../vlmcsd-kms-server/2.0.8/app-changelog.md | 9 + .../vlmcsd-kms-server/2.0.8/app-readme.md | 8 + .../2.0.8}/charts/common-11.1.2.tgz | Bin .../{2.0.7 => 2.0.8}/ix_values.yaml | 0 .../vlmcsd-kms-server/2.0.8/questions.yaml | 1402 +++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../2.0.8}/values.yaml | 0 incubator/webp-server/2.0.11/CHANGELOG.md | 99 - incubator/webp-server/2.0.11/Chart.yaml | 39 - incubator/webp-server/2.0.11/app-changelog.md | 9 - incubator/webp-server/2.0.11/app-readme.md | 8 - incubator/webp-server/2.0.11/questions.yaml | 1921 --------- incubator/webp-server/2.0.12/CHANGELOG.md | 99 + incubator/webp-server/2.0.12/Chart.yaml | 39 + .../2.0.7 => webp-server/2.0.12}/README.md | 0 incubator/webp-server/2.0.12/app-changelog.md | 9 + incubator/webp-server/2.0.12/app-readme.md | 8 + .../2.0.12}/charts/common-11.1.2.tgz | Bin .../{2.0.11 => 2.0.12}/ix_values.yaml | 0 incubator/webp-server/2.0.12/questions.yaml | 1962 ++++++++++ .../{2.0.11 => 2.0.12}/templates/common.yaml | 0 .../0.0.5 => webp-server/2.0.12}/values.yaml | 0 incubator/wizarr/0.0.5/CHANGELOG.md | 44 - incubator/wizarr/0.0.5/Chart.yaml | 34 - incubator/wizarr/0.0.5/app-changelog.md | 9 - incubator/wizarr/0.0.5/app-readme.md | 8 - incubator/wizarr/0.0.5/questions.yaml | 1854 --------- incubator/wizarr/0.0.6/CHANGELOG.md | 53 + incubator/wizarr/0.0.6/Chart.yaml | 34 + .../wizarr/0.0.6}/README.md | 0 incubator/wizarr/0.0.6/app-changelog.md | 9 + incubator/wizarr/0.0.6/app-readme.md | 8 + .../0.0.6}/charts/common-11.1.2.tgz | Bin .../wizarr/{0.0.5 => 0.0.6}/ix_values.yaml | 0 incubator/wizarr/0.0.6/questions.yaml | 1895 +++++++++ .../{0.0.5 => 0.0.6}/templates/common.yaml | 0 .../{xmrig/2.0.7 => wizarr/0.0.6}/values.yaml | 0 incubator/xmrig/2.0.7/CHANGELOG.md | 99 - incubator/xmrig/2.0.7/Chart.yaml | 28 - incubator/xmrig/2.0.7/app-changelog.md | 9 - incubator/xmrig/2.0.7/app-readme.md | 8 - incubator/xmrig/2.0.7/questions.yaml | 1469 ------- incubator/xmrig/2.0.8/CHANGELOG.md | 99 + incubator/xmrig/2.0.8/Chart.yaml | 28 + incubator/xmrig/2.0.8/README.md | 27 + incubator/xmrig/2.0.8/app-changelog.md | 9 + incubator/xmrig/2.0.8/app-readme.md | 8 + .../xmrig/2.0.8}/charts/common-11.1.2.tgz | Bin .../xmrig/{2.0.7 => 2.0.8}/ix_values.yaml | 0 incubator/xmrig/2.0.8/questions.yaml | 1469 +++++++ .../{2.0.7 => 2.0.8}/templates/common.yaml | 0 .../xmrig/2.0.8}/values.yaml | 0 stable/adguard-home/4.0.11/CHANGELOG.md | 99 - stable/adguard-home/4.0.11/Chart.yaml | 27 - stable/adguard-home/4.0.11/app-changelog.md | 9 - stable/adguard-home/4.0.11/questions.yaml | 2289 ----------- stable/adguard-home/4.0.12/CHANGELOG.md | 99 + stable/adguard-home/4.0.12/Chart.yaml | 27 + .../adguard-home/{4.0.11 => 4.0.12}/README.md | 0 stable/adguard-home/4.0.12/app-changelog.md | 9 + .../{4.0.11 => 4.0.12}/app-readme.md | 0 .../4.0.12}/charts/common-11.1.2.tgz | Bin .../{4.0.11 => 4.0.12}/ix_values.yaml | 0 stable/adguard-home/4.0.12/questions.yaml | 2330 +++++++++++ .../{4.0.11 => 4.0.12}/templates/common.yaml | 0 .../2.1.6 => adguard-home/4.0.12}/values.yaml | 0 stable/amule/2.1.6/CHANGELOG.md | 99 - stable/amule/2.1.6/Chart.yaml | 33 - stable/amule/2.1.6/app-changelog.md | 9 - stable/amule/2.1.6/app-readme.md | 8 - stable/amule/2.1.6/questions.yaml | 2092 ---------- stable/amule/2.1.7/CHANGELOG.md | 99 + stable/amule/2.1.7/Chart.yaml | 33 + stable/amule/{2.1.6 => 2.1.7}/README.md | 0 stable/amule/2.1.7/app-changelog.md | 9 + stable/amule/2.1.7/app-readme.md | 8 + .../2.1.7}/charts/common-11.1.2.tgz | Bin stable/amule/{2.1.6 => 2.1.7}/ix_values.yaml | 0 stable/amule/2.1.7/questions.yaml | 2133 ++++++++++ .../{2.1.6 => 2.1.7}/templates/common.yaml | 0 .../{aria2/7.0.7 => amule/2.1.7}/values.yaml | 0 stable/anonaddy/12.0.21/CHANGELOG.md | 99 + stable/anonaddy/12.0.21/Chart.yaml | 35 + .../7.0.7 => anonaddy/12.0.21}/README.md | 0 stable/anonaddy/12.0.21/app-changelog.md | 9 + stable/anonaddy/12.0.21/app-readme.md | 8 + .../12.0.21}/charts/common-11.1.2.tgz | Bin .../12.0.21}/charts/mariadb-5.0.25.tgz | Bin .../12.0.21}/charts/redis-5.0.29.tgz | Bin stable/anonaddy/12.0.21/ix_values.yaml | 78 + stable/anonaddy/12.0.21/questions.yaml | 1935 ++++++++++ stable/anonaddy/12.0.21/templates/_appkey.tpl | 28 + stable/anonaddy/12.0.21/templates/common.yaml | 9 + .../3.0.8 => anonaddy/12.0.21}/values.yaml | 0 stable/aria2/7.0.7/CHANGELOG.md | 99 - stable/aria2/7.0.7/Chart.yaml | 26 - stable/aria2/7.0.7/app-changelog.md | 9 - stable/aria2/7.0.7/app-readme.md | 8 - stable/aria2/7.0.7/questions.yaml | 1895 --------- stable/aria2/7.0.8/CHANGELOG.md | 99 + stable/aria2/7.0.8/Chart.yaml | 26 + .../{ariang/3.0.8 => aria2/7.0.8}/README.md | 0 stable/aria2/7.0.8/app-changelog.md | 9 + stable/aria2/7.0.8/app-readme.md | 8 + .../7.0.8}/charts/common-11.1.2.tgz | Bin stable/aria2/{7.0.7 => 7.0.8}/ix_values.yaml | 0 stable/aria2/7.0.8/questions.yaml | 1936 ++++++++++ .../{7.0.7 => 7.0.8}/templates/common.yaml | 0 .../4.0.15 => aria2/7.0.8}/values.yaml | 0 stable/ariang/3.0.8/CHANGELOG.md | 99 - stable/ariang/3.0.8/Chart.yaml | 27 - stable/ariang/3.0.8/app-changelog.md | 9 - stable/ariang/3.0.8/app-readme.md | 8 - stable/ariang/3.0.8/questions.yaml | 1751 --------- stable/ariang/3.0.9/CHANGELOG.md | 99 + stable/ariang/3.0.9/Chart.yaml | 27 + .../4.0.15 => ariang/3.0.9}/README.md | 0 stable/ariang/3.0.9/app-changelog.md | 9 + stable/ariang/3.0.9/app-readme.md | 8 + .../3.0.9}/charts/common-11.1.2.tgz | Bin stable/ariang/{3.0.8 => 3.0.9}/ix_values.yaml | 0 stable/ariang/3.0.9/questions.yaml | 1792 +++++++++ .../{3.0.8 => 3.0.9}/templates/common.yaml | 0 .../4.0.7 => ariang/3.0.9}/values.yaml | 0 stable/audiobookshelf/4.0.15/CHANGELOG.md | 99 - stable/audiobookshelf/4.0.15/Chart.yaml | 27 - stable/audiobookshelf/4.0.15/app-changelog.md | 9 - stable/audiobookshelf/4.0.15/app-readme.md | 8 - stable/audiobookshelf/4.0.15/questions.yaml | 1969 ---------- stable/audiobookshelf/4.0.16/CHANGELOG.md | 99 + stable/audiobookshelf/4.0.16/Chart.yaml | 27 + .../4.0.7 => audiobookshelf/4.0.16}/README.md | 0 stable/audiobookshelf/4.0.16/app-changelog.md | 9 + stable/audiobookshelf/4.0.16/app-readme.md | 8 + .../4.0.16}/charts/common-11.1.2.tgz | Bin .../{4.0.15 => 4.0.16}/ix_values.yaml | 0 stable/audiobookshelf/4.0.16/questions.yaml | 2010 ++++++++++ .../{4.0.15 => 4.0.16}/templates/_secrets.tpl | 0 .../{4.0.15 => 4.0.16}/templates/common.yaml | 0 .../4.0.16}/values.yaml | 0 .../4.0.7/CHANGELOG.md | 99 - .../4.0.7/Chart.yaml | 32 - .../4.0.7/app-changelog.md | 9 - .../4.0.7/app-readme.md | 8 - .../4.0.7/questions.yaml | 1801 --------- .../4.0.8/CHANGELOG.md | 99 + .../4.0.8/Chart.yaml | 32 + .../4.0.8}/README.md | 0 .../4.0.8/app-changelog.md | 9 + .../4.0.8/app-readme.md | 8 + .../4.0.8}/charts/common-11.1.2.tgz | Bin .../{4.0.7 => 4.0.8}/ix_values.yaml | 0 .../4.0.8/questions.yaml | 1801 +++++++++ .../{4.0.7 => 4.0.8}/templates/common.yaml | 0 .../4.0.8}/values.yaml | 0 stable/avidemux/3.0.7/CHANGELOG.md | 99 - stable/avidemux/3.0.7/Chart.yaml | 30 - stable/avidemux/3.0.7/app-changelog.md | 9 - stable/avidemux/3.0.7/app-readme.md | 8 - stable/avidemux/3.0.7/questions.yaml | 2013 ---------- stable/avidemux/3.0.8/CHANGELOG.md | 99 + stable/avidemux/3.0.8/Chart.yaml | 30 + .../6.0.24 => avidemux/3.0.8}/README.md | 0 stable/avidemux/3.0.8/app-changelog.md | 9 + stable/avidemux/3.0.8/app-readme.md | 8 + .../3.0.8}/charts/common-11.1.2.tgz | Bin .../avidemux/{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/avidemux/3.0.8/questions.yaml | 2054 ++++++++++ .../{3.0.7 => 3.0.8}/templates/common.yaml | 0 .../4.0.9 => avidemux/3.0.8}/values.yaml | 0 stable/baserow/6.0.24/CHANGELOG.md | 99 - stable/baserow/6.0.24/Chart.yaml | 35 - stable/baserow/6.0.24/app-changelog.md | 9 - stable/baserow/6.0.25/CHANGELOG.md | 99 + stable/baserow/6.0.25/Chart.yaml | 35 + .../4.0.9 => baserow/6.0.25}/README.md | 0 stable/baserow/6.0.25/app-changelog.md | 9 + .../baserow/{6.0.24 => 6.0.25}/app-readme.md | 0 .../6.0.25}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../6.0.25}/charts/redis-5.0.29.tgz | Bin .../baserow/{6.0.24 => 6.0.25}/ix_values.yaml | 0 .../baserow/{6.0.24 => 6.0.25}/questions.yaml | 0 .../{6.0.24 => 6.0.25}/templates/_secrets.tpl | 0 .../{6.0.24 => 6.0.25}/templates/common.yaml | 0 .../3.0.7 => baserow/6.0.25}/values.yaml | 0 stable/browserless-chrome/4.0.10/CHANGELOG.md | 99 + stable/browserless-chrome/4.0.10/Chart.yaml | 29 + .../4.0.10}/README.md | 0 .../4.0.10/app-changelog.md | 9 + .../browserless-chrome/4.0.10/app-readme.md | 8 + .../4.0.10}/charts/common-11.1.2.tgz | Bin .../{4.0.9 => 4.0.10}/ix_values.yaml | 0 .../browserless-chrome/4.0.10/questions.yaml | 2076 ++++++++++ .../{4.0.9 => 4.0.10}/templates/common.yaml | 0 .../4.0.10}/values.yaml | 0 stable/browserless-chrome/4.0.9/CHANGELOG.md | 99 - stable/browserless-chrome/4.0.9/Chart.yaml | 29 - .../browserless-chrome/4.0.9/app-changelog.md | 9 - stable/browserless-chrome/4.0.9/app-readme.md | 8 - .../browserless-chrome/4.0.9/questions.yaml | 2035 ---------- stable/chronos/3.0.7/CHANGELOG.md | 99 - stable/chronos/3.0.7/Chart.yaml | 29 - stable/chronos/3.0.7/app-changelog.md | 9 - stable/chronos/3.0.7/app-readme.md | 8 - stable/chronos/3.0.7/questions.yaml | 1828 --------- stable/chronos/3.0.8/CHANGELOG.md | 99 + stable/chronos/3.0.8/Chart.yaml | 29 + .../5.0.12 => chronos/3.0.8}/README.md | 0 stable/chronos/3.0.8/app-changelog.md | 9 + stable/chronos/3.0.8/app-readme.md | 8 + .../3.0.8}/charts/common-11.1.2.tgz | Bin .../chronos/{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/chronos/3.0.8/questions.yaml | 1869 +++++++++ .../{3.0.7 => 3.0.8}/templates/common.yaml | 0 .../6.0.19 => chronos/3.0.8}/values.yaml | 0 stable/clamav/5.0.12/CHANGELOG.md | 99 - stable/clamav/5.0.12/Chart.yaml | 30 - stable/clamav/5.0.12/app-changelog.md | 9 - stable/clamav/5.0.12/app-readme.md | 8 - stable/clamav/5.0.12/questions.yaml | 2102 ---------- stable/clamav/5.0.13/CHANGELOG.md | 99 + stable/clamav/5.0.13/Chart.yaml | 30 + .../6.0.19 => clamav/5.0.13}/README.md | 0 stable/clamav/5.0.13/app-changelog.md | 9 + stable/clamav/5.0.13/app-readme.md | 8 + .../5.0.13}/charts/common-11.1.2.tgz | Bin .../clamav/{5.0.12 => 5.0.13}/ix_values.yaml | 0 stable/clamav/5.0.13/questions.yaml | 2143 +++++++++++ .../{5.0.12 => 5.0.13}/templates/_cronjob.tpl | 0 .../{5.0.12 => 5.0.13}/templates/common.yaml | 0 .../6.0.7 => clamav/5.0.13}/values.yaml | 0 stable/commento-plusplus/6.0.19/CHANGELOG.md | 99 - stable/commento-plusplus/6.0.19/Chart.yaml | 31 - .../commento-plusplus/6.0.19/app-changelog.md | 9 - stable/commento-plusplus/6.0.20/CHANGELOG.md | 99 + stable/commento-plusplus/6.0.20/Chart.yaml | 31 + .../6.0.20}/README.md | 0 .../commento-plusplus/6.0.20/app-changelog.md | 9 + .../{6.0.19 => 6.0.20}/app-readme.md | 0 .../6.0.20}/charts/common-11.1.2.tgz | Bin .../charts/postgresql-11.0.22.tgz | Bin .../{6.0.19 => 6.0.20}/ix_values.yaml | 0 .../{6.0.19 => 6.0.20}/questions.yaml | 0 .../{6.0.19 => 6.0.20}/templates/common.yaml | 0 .../6.0.20}/values.yaml | 0 stable/cryptofolio/6.0.7/CHANGELOG.md | 99 - stable/cryptofolio/6.0.7/Chart.yaml | 26 - stable/cryptofolio/6.0.7/app-changelog.md | 9 - stable/cryptofolio/6.0.7/app-readme.md | 8 - stable/cryptofolio/6.0.7/questions.yaml | 1829 --------- stable/cryptofolio/6.0.8/CHANGELOG.md | 99 + stable/cryptofolio/6.0.8/Chart.yaml | 27 + .../4.0.24 => cryptofolio/6.0.8}/README.md | 0 stable/cryptofolio/6.0.8/app-changelog.md | 9 + stable/cryptofolio/6.0.8/app-readme.md | 8 + .../6.0.8}/charts/common-11.1.2.tgz | Bin .../{6.0.7 => 6.0.8}/ix_values.yaml | 0 stable/cryptofolio/6.0.8/questions.yaml | 1870 +++++++++ .../{6.0.7 => 6.0.8}/templates/common.yaml | 0 .../3.0.12 => cryptofolio/6.0.8}/values.yaml | 0 stable/cyberchef/4.0.24/CHANGELOG.md | 99 - stable/cyberchef/4.0.24/Chart.yaml | 26 - stable/cyberchef/4.0.24/app-changelog.md | 9 - stable/cyberchef/4.0.25/CHANGELOG.md | 99 + stable/cyberchef/4.0.25/Chart.yaml | 26 + .../3.0.12 => cyberchef/4.0.25}/README.md | 0 stable/cyberchef/4.0.25/app-changelog.md | 9 + .../{4.0.24 => 4.0.25}/app-readme.md | 0 .../4.0.25}/charts/common-11.1.2.tgz | Bin .../{4.0.24 => 4.0.25}/ix_values.yaml | 0 .../{4.0.24 => 4.0.25}/questions.yaml | 0 .../{4.0.24 => 4.0.25}/templates/common.yaml | 0 .../3.0.11 => cyberchef/4.0.25}/values.yaml | 0 stable/czkawka/3.0.12/CHANGELOG.md | 99 - stable/czkawka/3.0.12/Chart.yaml | 33 - stable/czkawka/3.0.12/app-changelog.md | 9 - stable/czkawka/3.0.12/app-readme.md | 8 - stable/czkawka/3.0.12/questions.yaml | 2082 ---------- stable/czkawka/3.0.13/CHANGELOG.md | 99 + stable/czkawka/3.0.13/Chart.yaml | 33 + .../3.0.11 => czkawka/3.0.13}/README.md | 0 stable/czkawka/3.0.13/app-changelog.md | 9 + stable/czkawka/3.0.13/app-readme.md | 8 + .../3.0.13}/charts/common-11.1.2.tgz | Bin .../czkawka/{3.0.12 => 3.0.13}/ix_values.yaml | 0 stable/czkawka/3.0.13/questions.yaml | 2123 ++++++++++ .../{3.0.12 => 3.0.13}/templates/common.yaml | 0 .../9.0.7 => czkawka/3.0.13}/values.yaml | 0 stable/dashdot/3.0.11/CHANGELOG.md | 99 - stable/dashdot/3.0.11/Chart.yaml | 28 - stable/dashdot/3.0.11/app-changelog.md | 9 - stable/dashdot/3.0.12/CHANGELOG.md | 99 + stable/dashdot/3.0.12/Chart.yaml | 28 + .../9.0.7 => dashdot/3.0.12}/README.md | 0 stable/dashdot/3.0.12/app-changelog.md | 9 + .../dashdot/{3.0.11 => 3.0.12}/app-readme.md | 0 .../3.0.12}/charts/common-11.1.2.tgz | Bin .../dashdot/{3.0.11 => 3.0.12}/ix_values.yaml | 0 .../dashdot/{3.0.11 => 3.0.12}/questions.yaml | 0 .../{3.0.11 => 3.0.12}/templates/common.yaml | 0 .../3.0.7 => dashdot/3.0.12}/values.yaml | 0 stable/deconz/10.0.13/CHANGELOG.md | 99 + stable/deconz/10.0.13/Chart.yaml | 31 + .../3.0.7 => deconz/10.0.13}/README.md | 0 stable/deconz/10.0.13/app-changelog.md | 9 + stable/deconz/10.0.13/app-readme.md | 8 + .../10.0.13}/charts/common-11.1.2.tgz | Bin stable/deconz/10.0.13/ix_values.yaml | 67 + stable/deconz/10.0.13/questions.yaml | 2020 ++++++++++ .../10.0.13}/templates/common.yaml | 0 .../5.0.18 => deconz/10.0.13}/values.yaml | 0 stable/dizquetv/9.0.7/CHANGELOG.md | 99 - stable/dizquetv/9.0.7/Chart.yaml | 28 - stable/dizquetv/9.0.7/app-changelog.md | 9 - stable/dizquetv/9.0.7/app-readme.md | 8 - stable/dizquetv/9.0.7/questions.yaml | 1829 --------- stable/dizquetv/9.0.8/CHANGELOG.md | 99 + stable/dizquetv/9.0.8/Chart.yaml | 28 + .../5.0.18 => dizquetv/9.0.8}/README.md | 0 stable/dizquetv/9.0.8/app-changelog.md | 9 + stable/dizquetv/9.0.8/app-readme.md | 8 + .../9.0.8}/charts/common-11.1.2.tgz | Bin .../dizquetv/{9.0.7 => 9.0.8}/ix_values.yaml | 0 stable/dizquetv/9.0.8/questions.yaml | 1870 +++++++++ .../9.0.8}/templates/common.yaml | 0 .../4.0.19 => dizquetv/9.0.8}/values.yaml | 0 stable/docusaurus/3.0.7/CHANGELOG.md | 99 - stable/docusaurus/3.0.7/Chart.yaml | 32 - stable/docusaurus/3.0.7/app-changelog.md | 9 - stable/docusaurus/3.0.7/app-readme.md | 8 - stable/docusaurus/3.0.7/questions.yaml | 1864 --------- stable/docusaurus/3.0.8/CHANGELOG.md | 99 + stable/docusaurus/3.0.8/Chart.yaml | 32 + .../4.0.19 => docusaurus/3.0.8}/README.md | 0 stable/docusaurus/3.0.8/app-changelog.md | 9 + stable/docusaurus/3.0.8/app-readme.md | 8 + .../3.0.8/charts/common-11.1.2.tgz | Bin .../{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/docusaurus/3.0.8/questions.yaml | 1905 +++++++++ .../3.0.8}/templates/common.yaml | 0 .../3.0.8/values.yaml | 0 stable/dokuwiki/5.0.18/CHANGELOG.md | 99 - stable/dokuwiki/5.0.18/Chart.yaml | 29 - stable/dokuwiki/5.0.18/app-changelog.md | 9 - stable/dokuwiki/5.0.19/CHANGELOG.md | 99 + stable/dokuwiki/5.0.19/Chart.yaml | 29 + .../3.0.8 => dokuwiki/5.0.19}/README.md | 0 stable/dokuwiki/5.0.19/app-changelog.md | 9 + .../dokuwiki/{5.0.18 => 5.0.19}/app-readme.md | 0 .../5.0.19}/charts/common-11.1.2.tgz | Bin .../{5.0.18 => 5.0.19}/ix_values.yaml | 0 .../{5.0.18 => 5.0.19}/questions.yaml | 0 .../5.0.19}/templates/common.yaml | 0 .../3.0.9 => dokuwiki/5.0.19}/values.yaml | 0 stable/drawio/4.0.19/CHANGELOG.md | 99 - stable/drawio/4.0.19/Chart.yaml | 27 - stable/drawio/4.0.19/app-changelog.md | 9 - stable/drawio/4.0.20/CHANGELOG.md | 99 + stable/drawio/4.0.20/Chart.yaml | 27 + .../3.0.9 => drawio/4.0.20}/README.md | 0 stable/drawio/4.0.20/app-changelog.md | 9 + .../drawio/{4.0.19 => 4.0.20}/app-readme.md | 0 .../4.0.20}/charts/common-11.1.2.tgz | Bin .../drawio/{4.0.19 => 4.0.20}/ix_values.yaml | 0 .../drawio/{4.0.19 => 4.0.20}/questions.yaml | 0 .../4.0.20}/templates/common.yaml | 0 .../4.0.9 => drawio/4.0.20}/values.yaml | 0 stable/dupeguru/3.0.8/CHANGELOG.md | 99 - stable/dupeguru/3.0.8/Chart.yaml | 30 - stable/dupeguru/3.0.8/app-changelog.md | 9 - stable/dupeguru/3.0.9/CHANGELOG.md | 99 + stable/dupeguru/3.0.9/Chart.yaml | 30 + .../4.0.9 => dupeguru/3.0.9}/README.md | 0 stable/dupeguru/3.0.9/app-changelog.md | 9 + .../dupeguru/{3.0.8 => 3.0.9}/app-readme.md | 0 .../3.0.9}/charts/common-11.1.2.tgz | Bin .../dupeguru/{3.0.8 => 3.0.9}/ix_values.yaml | 0 .../dupeguru/{3.0.8 => 3.0.9}/questions.yaml | 0 .../3.0.9/templates/common.yaml | 0 .../6.0.17 => dupeguru/3.0.9}/values.yaml | 0 stable/esphome/13.0.18/CHANGELOG.md | 99 + stable/esphome/13.0.18/Chart.yaml | 29 + .../6.0.17 => esphome/13.0.18}/README.md | 0 stable/esphome/13.0.18/app-changelog.md | 9 + stable/esphome/13.0.18/app-readme.md | 8 + .../13.0.18}/charts/common-11.1.2.tgz | Bin stable/esphome/13.0.18/ix_values.yaml | 42 + stable/esphome/13.0.18/questions.yaml | 1954 ++++++++++ .../13.0.18}/templates/common.yaml | 0 .../3.0.4 => esphome/13.0.18}/values.yaml | 0 stable/filebot/3.0.10/CHANGELOG.md | 99 + stable/filebot/3.0.10/Chart.yaml | 30 + .../3.0.4 => filebot/3.0.10}/README.md | 0 stable/filebot/3.0.10/app-changelog.md | 9 + .../filebot/{3.0.9 => 3.0.10}/app-readme.md | 0 .../3.0.10}/charts/common-11.1.2.tgz | Bin .../filebot/{3.0.9 => 3.0.10}/ix_values.yaml | 0 stable/filebot/3.0.10/questions.yaml | 2351 ++++++++++++ .../3.0.10}/templates/common.yaml | 0 .../4.0.18 => filebot/3.0.10}/values.yaml | 0 stable/filebot/3.0.9/CHANGELOG.md | 99 - stable/filebot/3.0.9/Chart.yaml | 30 - stable/filebot/3.0.9/app-changelog.md | 9 - stable/filebot/3.0.9/questions.yaml | 2310 ----------- stable/fileflows/4.0.10/CHANGELOG.md | 99 + stable/fileflows/4.0.10/Chart.yaml | 27 + .../4.0.18 => fileflows/4.0.10}/README.md | 0 stable/fileflows/4.0.10/app-changelog.md | 9 + stable/fileflows/4.0.10/app-readme.md | 8 + .../4.0.10}/charts/common-11.1.2.tgz | Bin .../{4.0.9 => 4.0.10}/ix_values.yaml | 0 stable/fileflows/4.0.10/questions.yaml | 2081 ++++++++++ .../4.0.10}/templates/common.yaml | 0 .../4.0.11 => fileflows/4.0.10}/values.yaml | 0 stable/fileflows/4.0.9/CHANGELOG.md | 99 - stable/fileflows/4.0.9/Chart.yaml | 27 - stable/fileflows/4.0.9/app-changelog.md | 9 - stable/fileflows/4.0.9/app-readme.md | 8 - stable/fileflows/4.0.9/questions.yaml | 2040 ---------- stable/filerun/6.0.17/CHANGELOG.md | 99 - stable/filerun/6.0.17/Chart.yaml | 32 - stable/filerun/6.0.17/app-changelog.md | 9 - stable/filerun/6.0.18/CHANGELOG.md | 99 + stable/filerun/6.0.18/Chart.yaml | 32 + .../4.0.11 => filerun/6.0.18}/README.md | 0 stable/filerun/6.0.18/app-changelog.md | 9 + .../filerun/{6.0.17 => 6.0.18}/app-readme.md | 0 .../6.0.18}/charts/common-11.1.2.tgz | Bin .../6.0.18}/charts/mariadb-5.0.25.tgz | Bin .../filerun/{6.0.17 => 6.0.18}/ix_values.yaml | 0 .../filerun/{6.0.17 => 6.0.18}/questions.yaml | 0 .../6.0.18}/templates/common.yaml | 0 .../8.0.9 => filerun/6.0.18}/values.yaml | 0 stable/flashpaper/3.0.4/CHANGELOG.md | 44 - stable/flashpaper/3.0.4/Chart.yaml | 38 - stable/flashpaper/3.0.4/app-changelog.md | 9 - stable/flashpaper/3.0.4/app-readme.md | 8 - stable/flashpaper/3.0.4/questions.yaml | 1916 --------- stable/flashpaper/3.0.5/CHANGELOG.md | 53 + stable/flashpaper/3.0.5/Chart.yaml | 38 + .../8.0.9 => flashpaper/3.0.5}/README.md | 0 stable/flashpaper/3.0.5/app-changelog.md | 9 + stable/flashpaper/3.0.5/app-readme.md | 8 + .../3.0.5}/charts/common-11.1.2.tgz | Bin .../{3.0.4 => 3.0.5}/ix_values.yaml | 0 stable/flashpaper/3.0.5/questions.yaml | 1957 ++++++++++ .../{3.0.4 => 3.0.5}/templates/common.yaml | 0 .../7.0.22 => flashpaper/3.0.5}/values.yaml | 0 stable/flexget/4.0.18/CHANGELOG.md | 99 - stable/flexget/4.0.18/Chart.yaml | 30 - stable/flexget/4.0.18/app-changelog.md | 9 - stable/flexget/4.0.19/CHANGELOG.md | 99 + stable/flexget/4.0.19/Chart.yaml | 30 + .../7.0.22 => flexget/4.0.19}/README.md | 0 stable/flexget/4.0.19/app-changelog.md | 9 + .../flexget/{4.0.18 => 4.0.19}/app-readme.md | 0 .../4.0.19}/charts/common-11.1.2.tgz | Bin .../flexget/{4.0.18 => 4.0.19}/ix_values.yaml | 0 .../flexget/{4.0.18 => 4.0.19}/questions.yaml | 0 .../4.0.19}/templates/common.yaml | 0 .../7.0.19 => flexget/4.0.19}/values.yaml | 0 stable/fluidd/4.0.11/CHANGELOG.md | 99 - stable/fluidd/4.0.11/Chart.yaml | 27 - stable/fluidd/4.0.11/app-changelog.md | 9 - stable/fluidd/4.0.11/app-readme.md | 8 - stable/fluidd/4.0.11/questions.yaml | 1751 --------- stable/fluidd/4.0.12/CHANGELOG.md | 99 + stable/fluidd/4.0.12/Chart.yaml | 27 + .../7.0.19 => fluidd/4.0.12}/README.md | 0 stable/fluidd/4.0.12/app-changelog.md | 9 + stable/fluidd/4.0.12/app-readme.md | 8 + .../4.0.12}/charts/common-11.1.2.tgz | Bin .../fluidd/{4.0.11 => 4.0.12}/ix_values.yaml | 0 stable/fluidd/4.0.12/questions.yaml | 1792 +++++++++ .../4.0.12}/templates/common.yaml | 0 .../4.0.7 => fluidd/4.0.12}/values.yaml | 0 stable/focalboard/12.0.22/CHANGELOG.md | 99 + stable/focalboard/12.0.22/Chart.yaml | 35 + .../4.0.7 => focalboard/12.0.22}/README.md | 0 stable/focalboard/12.0.22/app-changelog.md | 9 + stable/focalboard/12.0.22/app-readme.md | 8 + .../12.0.22}/charts/common-11.1.2.tgz | Bin .../12.0.22}/charts/postgresql-11.0.22.tgz | Bin stable/focalboard/12.0.22/ix_values.yaml | 35 + stable/focalboard/12.0.22/questions.yaml | 1901 +++++++++ .../12.0.22/templates/_configmap.tpl | 31 + .../focalboard/12.0.22/templates/common.yaml | 20 + .../3.0.7 => focalboard/12.0.22}/values.yaml | 0 stable/gaps/13.0.8/CHANGELOG.md | 99 + stable/gaps/13.0.8/Chart.yaml | 31 + .../3.0.7 => gaps/13.0.8}/README.md | 0 stable/gaps/13.0.8/app-changelog.md | 9 + stable/gaps/13.0.8/app-readme.md | 8 + .../13.0.8}/charts/common-11.1.2.tgz | Bin stable/gaps/13.0.8/ix_values.yaml | 24 + stable/gaps/13.0.8/questions.yaml | 1870 +++++++++ .../13.0.8}/templates/common.yaml | 0 .../6.0.7 => gaps/13.0.8}/values.yaml | 0 stable/gitea/12.0.26/CHANGELOG.md | 99 + stable/gitea/12.0.26/Chart.yaml | 43 + .../6.0.7 => gitea/12.0.26}/README.md | 0 stable/gitea/12.0.26/app-changelog.md | 9 + stable/gitea/12.0.26/app-readme.md | 8 + .../12.0.26}/charts/common-11.1.2.tgz | Bin .../gitea/12.0.26/charts/memcached-5.0.24.tgz | Bin 0 -> 187003 bytes .../12.0.26}/charts/postgresql-11.0.22.tgz | Bin stable/gitea/12.0.26/ix_values.yaml | 145 + stable/gitea/12.0.26/questions.yaml | 2025 ++++++++++ stable/gitea/12.0.26/templates/_configmap.tpl | 20 + stable/gitea/12.0.26/templates/_secrets.tpl | 246 ++ stable/gitea/12.0.26/templates/common.yaml | 38 + .../3.0.12 => gitea/12.0.26}/values.yaml | 0 stable/gonic/8.0.10/CHANGELOG.md | 99 + stable/gonic/8.0.10/Chart.yaml | 28 + .../3.0.12 => gonic/8.0.10}/README.md | 0 stable/gonic/8.0.10/app-changelog.md | 9 + stable/gonic/8.0.10/app-readme.md | 8 + .../8.0.10}/charts/common-11.1.2.tgz | Bin stable/gonic/{8.0.9 => 8.0.10}/ix_values.yaml | 0 stable/gonic/8.0.10/questions.yaml | 1870 +++++++++ .../8.0.10}/templates/common.yaml | 0 .../7.0.27 => gonic/8.0.10}/values.yaml | 0 stable/gonic/8.0.9/CHANGELOG.md | 99 - stable/gonic/8.0.9/Chart.yaml | 28 - stable/gonic/8.0.9/app-changelog.md | 9 - stable/gonic/8.0.9/app-readme.md | 8 - stable/gonic/8.0.9/questions.yaml | 1829 --------- stable/grist/7.0.22/CHANGELOG.md | 99 - stable/grist/7.0.22/Chart.yaml | 38 - stable/grist/7.0.22/app-changelog.md | 9 - stable/grist/7.0.23/CHANGELOG.md | 99 + stable/grist/7.0.23/Chart.yaml | 38 + .../7.0.27 => grist/7.0.23}/README.md | 0 stable/grist/7.0.23/app-changelog.md | 9 + stable/grist/{7.0.22 => 7.0.23}/app-readme.md | 0 .../7.0.23}/charts/common-11.1.2.tgz | Bin .../7.0.23}/charts/postgresql-11.0.22.tgz | Bin .../7.0.23}/charts/redis-5.0.29.tgz | Bin .../grist/{7.0.22 => 7.0.23}/ix_values.yaml | 0 .../grist/{7.0.22 => 7.0.23}/questions.yaml | 0 .../{7.0.22 => 7.0.23}/templates/_config.tpl | 0 .../{7.0.22 => 7.0.23}/templates/_secret.tpl | 0 .../{7.0.22 => 7.0.23}/templates/common.yaml | 0 .../{ipfs/5.0.12 => grist/7.0.23}/values.yaml | 0 stable/guacamole-client/7.0.19/CHANGELOG.md | 99 - stable/guacamole-client/7.0.19/Chart.yaml | 34 - .../guacamole-client/7.0.19/app-changelog.md | 9 - stable/guacamole-client/7.0.20/CHANGELOG.md | 99 + stable/guacamole-client/7.0.20/Chart.yaml | 34 + .../7.0.20}/README.md | 0 .../guacamole-client/7.0.20/app-changelog.md | 9 + .../{7.0.19 => 7.0.20}/app-readme.md | 0 .../7.0.20}/charts/common-11.1.2.tgz | Bin .../7.0.20}/charts/postgresql-11.0.22.tgz | Bin .../{7.0.19 => 7.0.20}/ix_values.yaml | 0 .../{7.0.19 => 7.0.20}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{7.0.19 => 7.0.20}/templates/common.yaml | 0 .../7.0.20}/values.yaml | 0 stable/hammond/4.0.7/CHANGELOG.md | 99 - stable/hammond/4.0.7/Chart.yaml | 27 - stable/hammond/4.0.7/app-changelog.md | 9 - stable/hammond/4.0.7/app-readme.md | 8 - stable/hammond/4.0.7/questions.yaml | 1899 --------- stable/hammond/4.0.8/CHANGELOG.md | 99 + stable/hammond/4.0.8/Chart.yaml | 27 + .../4.0.13 => hammond/4.0.8}/README.md | 0 stable/hammond/4.0.8/app-changelog.md | 9 + stable/hammond/4.0.8/app-readme.md | 8 + .../4.0.8}/charts/common-11.1.2.tgz | Bin .../hammond/{4.0.7 => 4.0.8}/ix_values.yaml | 0 stable/hammond/4.0.8/questions.yaml | 1940 ++++++++++ .../{4.0.7 => 4.0.8}/templates/_secrets.tpl | 0 .../{4.0.7 => 4.0.8}/templates/common.yaml | 0 .../4.0.9 => hammond/4.0.8}/values.yaml | 0 stable/handbrake/15.0.8/CHANGELOG.md | 99 + stable/handbrake/15.0.8/Chart.yaml | 32 + .../4.0.9 => handbrake/15.0.8}/README.md | 0 stable/handbrake/15.0.8/app-changelog.md | 9 + stable/handbrake/15.0.8/app-readme.md | 8 + .../15.0.8}/charts/common-11.1.2.tgz | Bin stable/handbrake/15.0.8/ix_values.yaml | 72 + stable/handbrake/15.0.8/questions.yaml | 2159 +++++++++++ .../15.0.8}/templates/common.yaml | 0 .../6.0.22 => handbrake/15.0.8}/values.yaml | 0 stable/heimdall/14.0.4/CHANGELOG.md | 99 + stable/heimdall/14.0.4/Chart.yaml | 29 + .../6.0.22 => heimdall/14.0.4}/README.md | 0 stable/heimdall/14.0.4/app-changelog.md | 9 + stable/heimdall/14.0.4/app-readme.md | 8 + .../14.0.4}/charts/common-11.1.2.tgz | Bin stable/heimdall/14.0.4/ix_values.yaml | 31 + stable/heimdall/14.0.4/questions.yaml | 1870 +++++++++ .../14.0.4}/templates/common.yaml | 0 .../8.0.10 => heimdall/14.0.4}/values.yaml | 0 stable/homelablabelmaker/3.0.7/CHANGELOG.md | 99 - stable/homelablabelmaker/3.0.7/Chart.yaml | 31 - .../homelablabelmaker/3.0.7/app-changelog.md | 9 - stable/homelablabelmaker/3.0.7/app-readme.md | 8 - stable/homelablabelmaker/3.0.7/questions.yaml | 1721 --------- stable/homelablabelmaker/3.0.8/CHANGELOG.md | 99 + stable/homelablabelmaker/3.0.8/Chart.yaml | 31 + .../3.0.8}/README.md | 0 .../homelablabelmaker/3.0.8/app-changelog.md | 9 + stable/homelablabelmaker/3.0.8/app-readme.md | 8 + .../3.0.8}/charts/common-11.1.2.tgz | Bin .../{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/homelablabelmaker/3.0.8/questions.yaml | 1762 +++++++++ .../{3.0.7 => 3.0.8}/templates/common.yaml | 0 .../3.0.8}/values.yaml | 0 .../6.0.7/CHANGELOG.md | 99 - .../6.0.7/Chart.yaml | 29 - .../6.0.7/app-changelog.md | 9 - .../6.0.7/app-readme.md | 8 - .../6.0.7/questions.yaml | 1914 --------- .../6.0.8/CHANGELOG.md | 99 + .../6.0.8/Chart.yaml | 30 + .../6.0.8}/README.md | 0 .../6.0.8/app-changelog.md | 9 + .../6.0.8/app-readme.md | 8 + .../6.0.8}/charts/common-11.1.2.tgz | Bin .../{6.0.7 => 6.0.8}/ix_values.yaml | 0 .../6.0.8/questions.yaml | 1955 ++++++++++ .../{6.0.7 => 6.0.8}/templates/common.yaml | 0 .../6.0.8}/values.yaml | 0 stable/impostor-server/3.0.12/CHANGELOG.md | 99 - stable/impostor-server/3.0.12/Chart.yaml | 27 - .../impostor-server/3.0.12/app-changelog.md | 9 - stable/impostor-server/3.0.13/CHANGELOG.md | 99 + stable/impostor-server/3.0.13/Chart.yaml | 28 + .../3.0.13}/README.md | 0 .../impostor-server/3.0.13/app-changelog.md | 9 + .../{3.0.12 => 3.0.13}/app-readme.md | 0 .../3.0.13}/charts/common-11.1.2.tgz | Bin .../{3.0.12 => 3.0.13}/ix_values.yaml | 0 .../{3.0.12 => 3.0.13}/questions.yaml | 0 .../3.0.13}/templates/common.yaml | 0 .../3.0.13}/values.yaml | 0 stable/inventree/7.0.27/CHANGELOG.md | 99 - stable/inventree/7.0.27/Chart.yaml | 36 - stable/inventree/7.0.27/app-changelog.md | 9 - stable/inventree/7.0.28/CHANGELOG.md | 99 + stable/inventree/7.0.28/Chart.yaml | 37 + .../3.0.9 => inventree/7.0.28}/README.md | 0 stable/inventree/7.0.28/app-changelog.md | 9 + .../{7.0.27 => 7.0.28}/app-readme.md | 0 .../7.0.28}/charts/common-11.1.2.tgz | Bin .../7.0.28}/charts/postgresql-11.0.22.tgz | Bin .../7.0.28}/charts/redis-5.0.29.tgz | Bin .../{7.0.27 => 7.0.28}/ix_values.yaml | 0 .../{7.0.27 => 7.0.28}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{7.0.27 => 7.0.28}/templates/_init.tpl | 0 .../{7.0.27 => 7.0.28}/templates/_nginx.tpl | 0 .../{7.0.27 => 7.0.28}/templates/_secrets.tpl | 0 .../{7.0.27 => 7.0.28}/templates/_worker.tpl | 0 .../{7.0.27 => 7.0.28}/templates/common.yaml | 0 .../4.0.9 => inventree/7.0.28}/values.yaml | 0 stable/ipfs/5.0.12/CHANGELOG.md | 99 - stable/ipfs/5.0.12/Chart.yaml | 30 - stable/ipfs/5.0.12/app-changelog.md | 9 - stable/ipfs/5.0.13/CHANGELOG.md | 99 + stable/ipfs/5.0.13/Chart.yaml | 30 + .../4.0.9 => ipfs/5.0.13}/README.md | 0 stable/ipfs/5.0.13/app-changelog.md | 9 + stable/ipfs/{5.0.12 => 5.0.13}/app-readme.md | 0 .../5.0.13}/charts/common-11.1.2.tgz | Bin stable/ipfs/{5.0.12 => 5.0.13}/ix_values.yaml | 0 stable/ipfs/{5.0.12 => 5.0.13}/questions.yaml | 0 .../{5.0.12 => 5.0.13}/templates/common.yaml | 0 .../7.0.22 => ipfs/5.0.13}/values.yaml | 0 stable/ispy-agent-dvr/4.0.13/CHANGELOG.md | 99 - stable/ispy-agent-dvr/4.0.13/Chart.yaml | 29 - stable/ispy-agent-dvr/4.0.13/app-changelog.md | 9 - stable/ispy-agent-dvr/4.0.13/app-readme.md | 8 - stable/ispy-agent-dvr/4.0.13/questions.yaml | 2074 ---------- stable/ispy-agent-dvr/4.0.14/CHANGELOG.md | 99 + stable/ispy-agent-dvr/4.0.14/Chart.yaml | 29 + .../4.0.14}/README.md | 0 stable/ispy-agent-dvr/4.0.14/app-changelog.md | 9 + stable/ispy-agent-dvr/4.0.14/app-readme.md | 8 + .../4.0.14}/charts/common-11.1.2.tgz | Bin .../{4.0.13 => 4.0.14}/ix_values.yaml | 0 stable/ispy-agent-dvr/4.0.14/questions.yaml | 2115 ++++++++++ .../4.0.14}/templates/common.yaml | 0 .../4.0.14}/values.yaml | 0 stable/jellyseerr/4.0.10/CHANGELOG.md | 99 + stable/jellyseerr/4.0.10/Chart.yaml | 27 + .../3.0.13 => jellyseerr/4.0.10}/README.md | 0 stable/jellyseerr/4.0.10/app-changelog.md | 9 + .../{4.0.9 => 4.0.10}/app-readme.md | 0 .../4.0.10}/charts/common-11.1.2.tgz | Bin .../{4.0.9 => 4.0.10}/ix_values.yaml | 0 .../{4.0.9 => 4.0.10}/questions.yaml | 0 .../4.0.10}/templates/common.yaml | 0 .../7.0.21 => jellyseerr/4.0.10}/values.yaml | 0 stable/jellyseerr/4.0.9/CHANGELOG.md | 99 - stable/jellyseerr/4.0.9/Chart.yaml | 27 - stable/jellyseerr/4.0.9/app-changelog.md | 9 - stable/joplin-server/11.0.23/CHANGELOG.md | 99 + stable/joplin-server/11.0.23/Chart.yaml | 35 + .../11.0.23}/README.md | 0 stable/joplin-server/11.0.23/app-changelog.md | 9 + stable/joplin-server/11.0.23/app-readme.md | 8 + .../11.0.23}/charts/common-11.1.2.tgz | Bin .../11.0.23}/charts/postgresql-11.0.22.tgz | Bin stable/joplin-server/11.0.23/ix_values.yaml | 65 + stable/joplin-server/11.0.23/questions.yaml | 1942 ++++++++++ .../11.0.23}/templates/common.yaml | 0 .../11.0.23}/values.yaml | 0 stable/kanboard/11.0.21/CHANGELOG.md | 99 + stable/kanboard/11.0.21/Chart.yaml | 32 + .../4.0.10 => kanboard/11.0.21}/README.md | 0 stable/kanboard/11.0.21/app-changelog.md | 9 + stable/kanboard/11.0.21/app-readme.md | 8 + .../11.0.21}/charts/common-11.1.2.tgz | Bin .../11.0.21}/charts/postgresql-11.0.22.tgz | Bin stable/kanboard/11.0.21/ix_values.yaml | 52 + stable/kanboard/11.0.21/questions.yaml | 1959 ++++++++++ .../11.0.21}/templates/common.yaml | 0 .../9.0.11 => kanboard/11.0.21}/values.yaml | 0 stable/koel/6.0.22/CHANGELOG.md | 99 - stable/koel/6.0.22/Chart.yaml | 34 - stable/koel/6.0.22/app-changelog.md | 9 - stable/koel/6.0.23/CHANGELOG.md | 99 + stable/koel/6.0.23/Chart.yaml | 34 + stable/{loki/9.0.11 => koel/6.0.23}/README.md | 0 stable/koel/6.0.23/app-changelog.md | 9 + stable/koel/{6.0.22 => 6.0.23}/app-readme.md | 0 .../6.0.23}/charts/common-11.1.2.tgz | Bin .../6.0.23}/charts/mariadb-5.0.25.tgz | Bin stable/koel/{6.0.22 => 6.0.23}/ix_values.yaml | 0 stable/koel/{6.0.22 => 6.0.23}/questions.yaml | 0 .../{6.0.22 => 6.0.23}/templates/_secrets.tpl | 0 .../{6.0.22 => 6.0.23}/templates/common.yaml | 0 .../4.0.8 => koel/6.0.23}/values.yaml | 0 stable/komga/8.0.10/CHANGELOG.md | 99 - stable/komga/8.0.10/Chart.yaml | 30 - stable/komga/8.0.10/app-changelog.md | 9 - stable/komga/8.0.11/CHANGELOG.md | 99 + stable/komga/8.0.11/Chart.yaml | 31 + .../{makemkv/4.0.8 => komga/8.0.11}/README.md | 0 stable/komga/8.0.11/app-changelog.md | 9 + stable/komga/{8.0.10 => 8.0.11}/app-readme.md | 0 .../8.0.11}/charts/common-11.1.2.tgz | Bin .../komga/{8.0.10 => 8.0.11}/ix_values.yaml | 0 .../komga/{8.0.10 => 8.0.11}/questions.yaml | 0 .../8.0.11}/templates/common.yaml | 0 .../6.0.34 => komga/8.0.11}/values.yaml | 0 stable/kopia/4.0.7/CHANGELOG.md | 99 - stable/kopia/4.0.7/Chart.yaml | 28 - stable/kopia/4.0.7/app-changelog.md | 9 - stable/kopia/4.0.7/app-readme.md | 8 - stable/kopia/4.0.7/questions.yaml | 2069 ---------- stable/kopia/4.0.8/CHANGELOG.md | 99 + stable/kopia/4.0.8/Chart.yaml | 28 + .../{matomo/6.0.34 => kopia/4.0.8}/README.md | 0 stable/kopia/4.0.8/app-changelog.md | 9 + stable/kopia/4.0.8/app-readme.md | 8 + .../4.0.8}/charts/common-11.1.2.tgz | Bin stable/kopia/{4.0.7 => 4.0.8}/ix_values.yaml | 0 stable/kopia/4.0.8/questions.yaml | 2110 ++++++++++ .../4.0.8}/templates/common.yaml | 0 .../3.0.10 => kopia/4.0.8}/values.yaml | 0 stable/kutt/6.0.20/CHANGELOG.md | 99 - stable/kutt/6.0.20/Chart.yaml | 38 - stable/kutt/6.0.20/app-changelog.md | 9 - stable/kutt/6.0.21/CHANGELOG.md | 99 + stable/kutt/6.0.21/Chart.yaml | 39 + .../3.0.10 => kutt/6.0.21}/README.md | 0 stable/kutt/6.0.21/app-changelog.md | 9 + stable/kutt/{6.0.20 => 6.0.21}/app-readme.md | 0 .../6.0.21}/charts/common-11.1.2.tgz | Bin .../6.0.21}/charts/postgresql-11.0.22.tgz | Bin .../6.0.21}/charts/redis-5.0.29.tgz | Bin stable/kutt/{6.0.20 => 6.0.21}/ix_values.yaml | 0 stable/kutt/{6.0.20 => 6.0.21}/questions.yaml | 0 .../{6.0.20 => 6.0.21}/templates/_secrets.tpl | 0 .../{6.0.20 => 6.0.21}/templates/common.yaml | 0 .../4.0.7 => kutt/6.0.21}/values.yaml | 0 .../lancache-monolithic/3.0.10/CHANGELOG.md | 99 + stable/lancache-monolithic/3.0.10/Chart.yaml | 30 + .../3.0.10}/README.md | 0 .../3.0.10/app-changelog.md | 9 + .../lancache-monolithic/3.0.10/app-readme.md | 8 + .../3.0.10}/charts/common-11.1.2.tgz | Bin .../{3.0.9 => 3.0.10}/ix_values.yaml | 0 .../lancache-monolithic/3.0.10/questions.yaml | 2034 ++++++++++ .../3.0.10/templates/common.yaml | 0 .../3.0.10}/values.yaml | 0 stable/lancache-monolithic/3.0.9/CHANGELOG.md | 99 - stable/lancache-monolithic/3.0.9/Chart.yaml | 30 - .../3.0.9/app-changelog.md | 9 - .../lancache-monolithic/3.0.9/app-readme.md | 8 - .../lancache-monolithic/3.0.9/questions.yaml | 1993 ---------- stable/lanraragi/4.0.10/CHANGELOG.md | 99 + stable/lanraragi/4.0.10/Chart.yaml | 30 + .../5.0.13 => lanraragi/4.0.10}/README.md | 0 stable/lanraragi/4.0.10/app-changelog.md | 9 + stable/lanraragi/4.0.10/app-readme.md | 8 + .../4.0.10}/charts/common-11.1.2.tgz | Bin .../{4.0.9 => 4.0.10}/ix_values.yaml | 0 stable/lanraragi/4.0.10/questions.yaml | 1940 ++++++++++ .../4.0.10}/templates/common.yaml | 0 .../3.0.7 => lanraragi/4.0.10}/values.yaml | 0 stable/lanraragi/4.0.9/CHANGELOG.md | 99 - stable/lanraragi/4.0.9/Chart.yaml | 30 - stable/lanraragi/4.0.9/app-changelog.md | 9 - stable/lanraragi/4.0.9/app-readme.md | 8 - stable/lanraragi/4.0.9/questions.yaml | 1899 --------- stable/leantime/7.0.22/CHANGELOG.md | 99 - stable/leantime/7.0.22/Chart.yaml | 33 - stable/leantime/7.0.22/app-changelog.md | 9 - stable/leantime/7.0.23/CHANGELOG.md | 99 + stable/leantime/7.0.23/Chart.yaml | 33 + .../3.0.7 => leantime/7.0.23}/README.md | 0 stable/leantime/7.0.23/app-changelog.md | 9 + .../leantime/{7.0.22 => 7.0.23}/app-readme.md | 0 .../7.0.23}/charts/common-11.1.2.tgz | Bin .../7.0.23}/charts/mariadb-5.0.25.tgz | Bin .../{7.0.22 => 7.0.23}/ix_values.yaml | 0 .../{7.0.22 => 7.0.23}/questions.yaml | 0 .../{7.0.22 => 7.0.23}/templates/_secrets.tpl | 0 .../{7.0.22 => 7.0.23}/templates/common.yaml | 0 .../4.0.9 => leantime/7.0.23}/values.yaml | 0 stable/libreddit/3.0.13/CHANGELOG.md | 99 - stable/libreddit/3.0.13/Chart.yaml | 29 - stable/libreddit/3.0.13/app-changelog.md | 9 - stable/libreddit/3.0.13/app-readme.md | 8 - stable/libreddit/3.0.13/questions.yaml | 1865 --------- stable/libreddit/3.0.14/CHANGELOG.md | 99 + stable/libreddit/3.0.14/Chart.yaml | 29 + .../4.0.9 => libreddit/3.0.14}/README.md | 0 stable/libreddit/3.0.14/app-changelog.md | 9 + stable/libreddit/3.0.14/app-readme.md | 8 + .../3.0.14}/charts/common-11.1.2.tgz | Bin .../{3.0.13 => 3.0.14}/ix_values.yaml | 0 stable/libreddit/3.0.14/questions.yaml | 1906 +++++++++ .../3.0.14}/templates/common.yaml | 0 .../3.0.7 => libreddit/3.0.14}/values.yaml | 0 stable/linkace/7.0.21/CHANGELOG.md | 99 - stable/linkace/7.0.21/Chart.yaml | 36 - stable/linkace/7.0.21/app-changelog.md | 9 - stable/linkace/7.0.22/CHANGELOG.md | 99 + stable/linkace/7.0.22/Chart.yaml | 36 + .../3.0.7 => linkace/7.0.22}/README.md | 0 stable/linkace/7.0.22/app-changelog.md | 9 + .../linkace/{7.0.21 => 7.0.22}/app-readme.md | 0 .../7.0.22}/charts/common-11.1.2.tgz | Bin .../7.0.22}/charts/mariadb-5.0.25.tgz | Bin .../7.0.22}/charts/redis-5.0.29.tgz | Bin .../linkace/{7.0.21 => 7.0.22}/ix_values.yaml | 0 .../linkace/{7.0.21 => 7.0.22}/questions.yaml | 0 .../{7.0.21 => 7.0.22}/templates/_cronjob.tpl | 0 .../{7.0.21 => 7.0.22}/templates/_secrets.tpl | 0 .../{7.0.21 => 7.0.22}/templates/common.yaml | 0 .../4.0.9 => linkace/7.0.22}/values.yaml | 0 stable/linkding/4.0.10/CHANGELOG.md | 99 - stable/linkding/4.0.10/Chart.yaml | 28 - stable/linkding/4.0.10/app-changelog.md | 9 - stable/linkding/4.0.11/CHANGELOG.md | 99 + stable/linkding/4.0.11/Chart.yaml | 28 + .../4.0.9 => linkding/4.0.11}/README.md | 0 stable/linkding/4.0.11/app-changelog.md | 9 + .../linkding/{4.0.10 => 4.0.11}/app-readme.md | 0 .../4.0.11}/charts/common-11.1.2.tgz | Bin .../{4.0.10 => 4.0.11}/ix_values.yaml | 0 .../{4.0.10 => 4.0.11}/questions.yaml | 0 .../4.0.11}/templates/common.yaml | 0 .../6.0.27 => linkding/4.0.11}/values.yaml | 0 stable/loki/9.0.11/CHANGELOG.md | 99 - stable/loki/9.0.11/Chart.yaml | 32 - stable/loki/9.0.11/app-changelog.md | 9 - stable/loki/9.0.12/CHANGELOG.md | 99 + stable/loki/9.0.12/Chart.yaml | 33 + .../{nocodb/6.0.27 => loki/9.0.12}/README.md | 0 stable/loki/9.0.12/app-changelog.md | 9 + stable/loki/{9.0.11 => 9.0.12}/app-readme.md | 0 .../9.0.12}/charts/common-11.1.2.tgz | Bin .../charts/promtail-6.0.12.tgz | Bin stable/loki/{9.0.11 => 9.0.12}/ix_values.yaml | 0 stable/loki/{9.0.11 => 9.0.12}/questions.yaml | 0 .../{9.0.11 => 9.0.12}/templates/_helpers.tpl | 0 .../9.0.12}/templates/common.yaml | 0 .../{ntfy/4.0.9 => loki/9.0.12}/values.yaml | 0 stable/makemkv/4.0.8/CHANGELOG.md | 99 - stable/makemkv/4.0.8/Chart.yaml | 27 - stable/makemkv/4.0.8/app-changelog.md | 4 - stable/makemkv/4.0.8/questions.yaml | 2131 ---------- stable/makemkv/4.0.9/CHANGELOG.md | 99 + stable/makemkv/4.0.9/Chart.yaml | 27 + stable/{ntfy => makemkv}/4.0.9/README.md | 0 stable/makemkv/4.0.9/app-changelog.md | 9 + stable/makemkv/{4.0.8 => 4.0.9}/app-readme.md | 0 .../4.0.9}/charts/common-11.1.2.tgz | Bin .../makemkv/{4.0.8 => 4.0.9}/ix_values.yaml | 0 stable/makemkv/4.0.9/questions.yaml | 2172 +++++++++++ .../4.0.9}/templates/common.yaml | 0 .../8.0.7 => makemkv/4.0.9}/values.yaml | 0 stable/matomo/6.0.34/CHANGELOG.md | 99 - stable/matomo/6.0.34/Chart.yaml | 32 - stable/matomo/6.0.34/app-changelog.md | 9 - stable/matomo/6.0.35/CHANGELOG.md | 99 + stable/matomo/6.0.35/Chart.yaml | 32 + .../8.0.7 => matomo/6.0.35}/README.md | 0 stable/matomo/6.0.35/app-changelog.md | 9 + .../matomo/{6.0.34 => 6.0.35}/app-readme.md | 0 .../6.0.35}/charts/common-11.1.2.tgz | Bin .../6.0.35}/charts/mariadb-5.0.25.tgz | Bin .../matomo/{6.0.34 => 6.0.35}/ix_values.yaml | 0 .../matomo/{6.0.34 => 6.0.35}/questions.yaml | 0 .../6.0.35}/templates/common.yaml | 0 .../4.0.9 => matomo/6.0.35}/values.yaml | 0 stable/mediainfo/3.0.10/CHANGELOG.md | 99 - stable/mediainfo/3.0.10/Chart.yaml | 30 - stable/mediainfo/3.0.10/app-changelog.md | 9 - stable/mediainfo/3.0.10/app-readme.md | 8 - stable/mediainfo/3.0.10/questions.yaml | 2013 ---------- stable/mediainfo/3.0.11/CHANGELOG.md | 99 + stable/mediainfo/3.0.11/Chart.yaml | 30 + .../4.0.9 => mediainfo/3.0.11}/README.md | 0 stable/mediainfo/3.0.11/app-changelog.md | 9 + stable/mediainfo/3.0.11/app-readme.md | 8 + .../3.0.11}/charts/common-11.1.2.tgz | Bin .../{3.0.10 => 3.0.11}/ix_values.yaml | 0 stable/mediainfo/3.0.11/questions.yaml | 2054 ++++++++++ .../3.0.11}/templates/common.yaml | 0 .../9.0.7 => mediainfo/3.0.11}/values.yaml | 0 stable/meshroom/4.0.7/CHANGELOG.md | 99 - stable/meshroom/4.0.7/Chart.yaml | 27 - stable/meshroom/4.0.7/app-changelog.md | 9 - stable/meshroom/4.0.7/app-readme.md | 8 - stable/meshroom/4.0.7/questions.yaml | 1830 --------- stable/meshroom/4.0.8/CHANGELOG.md | 99 + stable/meshroom/4.0.8/Chart.yaml | 27 + .../9.0.7 => meshroom/4.0.8}/README.md | 0 stable/meshroom/4.0.8/app-changelog.md | 9 + stable/meshroom/4.0.8/app-readme.md | 8 + .../4.0.8}/charts/common-11.1.2.tgz | Bin .../meshroom/{4.0.7 => 4.0.8}/ix_values.yaml | 0 stable/meshroom/4.0.8/questions.yaml | 1871 +++++++++ .../4.0.8}/templates/common.yaml | 0 .../3.0.14 => meshroom/4.0.8}/values.yaml | 0 stable/miniflux/10.0.22/CHANGELOG.md | 99 + stable/miniflux/10.0.22/Chart.yaml | 33 + .../3.0.14 => miniflux/10.0.22}/README.md | 0 stable/miniflux/10.0.22/app-changelog.md | 9 + stable/miniflux/10.0.22/app-readme.md | 8 + .../10.0.22}/charts/common-11.1.2.tgz | Bin .../10.0.22}/charts/postgresql-11.0.22.tgz | Bin stable/miniflux/10.0.22/ix_values.yaml | 51 + stable/miniflux/10.0.22/questions.yaml | 1909 +++++++++ .../10.0.22}/templates/common.yaml | 0 .../6.0.20 => miniflux/10.0.22}/values.yaml | 0 stable/minio-console/5.0.13/CHANGELOG.md | 99 - stable/minio-console/5.0.13/Chart.yaml | 28 - stable/minio-console/5.0.13/app-changelog.md | 9 - stable/minio-console/5.0.13/questions.yaml | 1858 --------- stable/minio-console/5.0.14/CHANGELOG.md | 99 + stable/minio-console/5.0.14/Chart.yaml | 29 + .../6.0.20 => minio-console/5.0.14}/README.md | 0 stable/minio-console/5.0.14/app-changelog.md | 9 + .../{5.0.13 => 5.0.14}/app-readme.md | 0 .../5.0.14}/charts/common-11.1.2.tgz | Bin .../{5.0.13 => 5.0.14}/ix_values.yaml | 0 stable/minio-console/5.0.14/questions.yaml | 1899 +++++++++ .../5.0.14}/templates/common.yaml | 0 .../5.0.14}/values.yaml | 0 stable/mkvcleaver/3.0.7/CHANGELOG.md | 99 - stable/mkvcleaver/3.0.7/Chart.yaml | 30 - stable/mkvcleaver/3.0.7/app-changelog.md | 9 - stable/mkvcleaver/3.0.7/app-readme.md | 8 - stable/mkvcleaver/3.0.7/questions.yaml | 2013 ---------- stable/mkvcleaver/3.0.8/CHANGELOG.md | 99 + stable/mkvcleaver/3.0.8/Chart.yaml | 30 + .../8.0.8 => mkvcleaver/3.0.8}/README.md | 0 stable/mkvcleaver/3.0.8/app-changelog.md | 9 + stable/mkvcleaver/3.0.8/app-readme.md | 8 + .../3.0.8}/charts/common-11.1.2.tgz | Bin .../{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/mkvcleaver/3.0.8/questions.yaml | 2054 ++++++++++ .../3.0.8}/templates/common.yaml | 0 .../3.0.7 => mkvcleaver/3.0.8}/values.yaml | 0 stable/mkvtoolnix/4.0.10/CHANGELOG.md | 99 + stable/mkvtoolnix/4.0.10/Chart.yaml | 32 + .../3.0.7 => mkvtoolnix/4.0.10}/README.md | 0 stable/mkvtoolnix/4.0.10/app-changelog.md | 9 + stable/mkvtoolnix/4.0.10/app-readme.md | 8 + .../4.0.10}/charts/common-11.1.2.tgz | Bin .../{4.0.9 => 4.0.10}/ix_values.yaml | 0 stable/mkvtoolnix/4.0.10/questions.yaml | 2054 ++++++++++ .../4.0.10}/templates/common.yaml | 0 .../7.0.19 => mkvtoolnix/4.0.10}/values.yaml | 0 stable/mkvtoolnix/4.0.9/CHANGELOG.md | 99 - stable/mkvtoolnix/4.0.9/Chart.yaml | 32 - stable/mkvtoolnix/4.0.9/app-changelog.md | 9 - stable/mkvtoolnix/4.0.9/app-readme.md | 8 - stable/mkvtoolnix/4.0.9/questions.yaml | 2013 ---------- stable/mymediaforalexa/3.0.7/CHANGELOG.md | 99 - stable/mymediaforalexa/3.0.7/Chart.yaml | 31 - stable/mymediaforalexa/3.0.7/app-changelog.md | 9 - stable/mymediaforalexa/3.0.7/app-readme.md | 8 - stable/mymediaforalexa/3.0.7/questions.yaml | 1951 ---------- stable/mymediaforalexa/3.0.8/CHANGELOG.md | 99 + stable/mymediaforalexa/3.0.8/Chart.yaml | 31 + .../3.0.8}/README.md | 0 stable/mymediaforalexa/3.0.8/app-changelog.md | 9 + stable/mymediaforalexa/3.0.8/app-readme.md | 8 + .../3.0.8}/charts/common-11.1.2.tgz | Bin .../{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/mymediaforalexa/3.0.8/questions.yaml | 1992 ++++++++++ .../3.0.8}/templates/common.yaml | 0 .../3.0.8}/values.yaml | 0 stable/navidrome/14.0.2/CHANGELOG.md | 99 + stable/navidrome/14.0.2/Chart.yaml | 31 + .../8.0.7 => navidrome/14.0.2}/README.md | 0 stable/navidrome/14.0.2/app-changelog.md | 9 + stable/navidrome/14.0.2/app-readme.md | 8 + .../14.0.2}/charts/common-11.1.2.tgz | Bin stable/navidrome/14.0.2/ix_values.yaml | 29 + stable/navidrome/14.0.2/questions.yaml | 1940 ++++++++++ .../14.0.2}/templates/common.yaml | 0 .../8.0.7 => navidrome/14.0.2}/values.yaml | 0 stable/netdata/4.0.10/CHANGELOG.md | 99 + stable/netdata/4.0.10/Chart.yaml | 28 + .../8.0.7 => netdata/4.0.10}/README.md | 0 stable/netdata/4.0.10/app-changelog.md | 9 + stable/netdata/4.0.10/app-readme.md | 8 + .../4.0.10}/charts/common-11.1.2.tgz | Bin .../netdata/{4.0.9 => 4.0.10}/ix_values.yaml | 0 stable/netdata/4.0.10/questions.yaml | 2034 ++++++++++ .../{4.0.9 => 4.0.10}/templates/common.yaml | 0 .../4.0.8 => netdata/4.0.10}/values.yaml | 0 stable/netdata/4.0.9/CHANGELOG.md | 99 - stable/netdata/4.0.9/Chart.yaml | 27 - stable/netdata/4.0.9/app-changelog.md | 9 - stable/netdata/4.0.9/app-readme.md | 8 - stable/netdata/4.0.9/questions.yaml | 1993 ---------- stable/nocodb/6.0.27/CHANGELOG.md | 99 - stable/nocodb/6.0.27/Chart.yaml | 35 - stable/nocodb/6.0.27/app-changelog.md | 9 - stable/nocodb/6.0.28/CHANGELOG.md | 99 + stable/nocodb/6.0.28/Chart.yaml | 35 + .../4.0.8 => nocodb/6.0.28}/README.md | 0 stable/nocodb/6.0.28/app-changelog.md | 9 + .../nocodb/{6.0.27 => 6.0.28}/app-readme.md | 0 .../6.0.28}/charts/common-11.1.2.tgz | Bin .../6.0.28}/charts/postgresql-11.0.22.tgz | Bin .../6.0.28}/charts/redis-5.0.29.tgz | Bin .../nocodb/{6.0.27 => 6.0.28}/ix_values.yaml | 0 .../nocodb/{6.0.27 => 6.0.28}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{6.0.27 => 6.0.28}/templates/_secrets.tpl | 0 .../{6.0.27 => 6.0.28}/templates/common.yaml | 0 .../8.0.14 => nocodb/6.0.28}/values.yaml | 0 stable/ntfy/4.0.10/CHANGELOG.md | 99 + stable/ntfy/4.0.10/Chart.yaml | 27 + .../{pihole/8.0.14 => ntfy/4.0.10}/README.md | 0 stable/ntfy/4.0.10/app-changelog.md | 9 + stable/ntfy/4.0.10/app-readme.md | 8 + .../4.0.10}/charts/common-11.1.2.tgz | Bin stable/ntfy/{4.0.9 => 4.0.10}/ix_values.yaml | 0 stable/ntfy/4.0.10/questions.yaml | 2170 +++++++++++ .../4.0.10}/templates/common.yaml | 0 .../{pinry/4.0.7 => ntfy/4.0.10}/values.yaml | 0 stable/ntfy/4.0.9/CHANGELOG.md | 99 - stable/ntfy/4.0.9/Chart.yaml | 26 - stable/ntfy/4.0.9/app-changelog.md | 9 - stable/ntfy/4.0.9/app-readme.md | 8 - stable/ntfy/4.0.9/questions.yaml | 2129 ---------- stable/octoprint/8.0.7/CHANGELOG.md | 99 - stable/octoprint/8.0.7/Chart.yaml | 29 - stable/octoprint/8.0.7/app-changelog.md | 9 - stable/octoprint/8.0.7/app-readme.md | 8 - stable/octoprint/8.0.7/questions.yaml | 1854 --------- stable/octoprint/8.0.8/CHANGELOG.md | 99 + stable/octoprint/8.0.8/Chart.yaml | 29 + .../4.0.7 => octoprint/8.0.8}/README.md | 0 stable/octoprint/8.0.8/app-changelog.md | 9 + stable/octoprint/8.0.8/app-readme.md | 8 + .../8.0.8}/charts/common-11.1.2.tgz | Bin .../octoprint/{8.0.7 => 8.0.8}/ix_values.yaml | 0 stable/octoprint/8.0.8/questions.yaml | 1895 +++++++++ .../8.0.8}/templates/common.yaml | 0 .../3.0.7 => octoprint/8.0.8}/values.yaml | 0 stable/openhab/4.0.10/CHANGELOG.md | 99 + stable/openhab/4.0.10/Chart.yaml | 29 + .../{plaxt/3.0.7 => openhab/4.0.10}/README.md | 0 stable/openhab/4.0.10/app-changelog.md | 9 + stable/openhab/4.0.10/app-readme.md | 8 + .../4.0.10}/charts/common-11.1.2.tgz | Bin .../openhab/{4.0.9 => 4.0.10}/ix_values.yaml | 0 stable/openhab/4.0.10/questions.yaml | 2062 ++++++++++ .../{4.0.9 => 4.0.10}/templates/common.yaml | 0 .../3.0.7 => openhab/4.0.10}/values.yaml | 0 stable/openhab/4.0.9/CHANGELOG.md | 99 - stable/openhab/4.0.9/Chart.yaml | 29 - stable/openhab/4.0.9/app-changelog.md | 9 - stable/openhab/4.0.9/app-readme.md | 8 - stable/openhab/4.0.9/questions.yaml | 2021 ---------- stable/openldap/9.0.7/CHANGELOG.md | 99 - stable/openldap/9.0.7/Chart.yaml | 32 - stable/openldap/9.0.7/app-changelog.md | 9 - stable/openldap/9.0.7/app-readme.md | 8 - stable/openldap/9.0.7/questions.yaml | 1827 --------- stable/openldap/9.0.8/CHANGELOG.md | 99 + stable/openldap/9.0.8/Chart.yaml | 33 + .../3.0.7 => openldap/9.0.8}/README.md | 0 stable/openldap/9.0.8/app-changelog.md | 9 + stable/openldap/9.0.8/app-readme.md | 8 + .../9.0.8}/charts/common-11.1.2.tgz | Bin .../openldap/{9.0.7 => 9.0.8}/ix_values.yaml | 0 stable/openldap/9.0.8/questions.yaml | 1827 +++++++++ .../{9.0.7 => 9.0.8}/templates/_configmap.tpl | 0 .../{9.0.7 => 9.0.8}/templates/common.yaml | 0 .../8.0.7 => openldap/9.0.8}/values.yaml | 0 stable/openspeedtest/3.0.14/CHANGELOG.md | 99 - stable/openspeedtest/3.0.14/Chart.yaml | 31 - stable/openspeedtest/3.0.14/app-changelog.md | 9 - stable/openspeedtest/3.0.15/CHANGELOG.md | 99 + stable/openspeedtest/3.0.15/Chart.yaml | 32 + .../8.0.7 => openspeedtest/3.0.15}/README.md | 0 stable/openspeedtest/3.0.15/app-changelog.md | 9 + .../{3.0.14 => 3.0.15}/app-readme.md | 0 .../3.0.15}/charts/common-11.1.2.tgz | Bin .../{3.0.14 => 3.0.15}/ix_values.yaml | 0 .../{3.0.14 => 3.0.15}/questions.yaml | 0 .../3.0.15}/templates/common.yaml | 0 .../3.0.15}/values.yaml | 0 stable/organizr/13.0.9/CHANGELOG.md | 99 + stable/organizr/13.0.9/Chart.yaml | 29 + .../6.0.10 => organizr/13.0.9}/README.md | 0 stable/organizr/13.0.9/app-changelog.md | 9 + stable/organizr/13.0.9/app-readme.md | 8 + .../13.0.9}/charts/common-11.1.2.tgz | Bin stable/organizr/13.0.9/ix_values.yaml | 30 + stable/organizr/13.0.9/questions.yaml | 1940 ++++++++++ .../13.0.9}/templates/common.yaml | 0 .../3.0.8 => organizr/13.0.9}/values.yaml | 0 stable/outline/6.0.20/CHANGELOG.md | 99 - stable/outline/6.0.20/Chart.yaml | 37 - stable/outline/6.0.20/app-changelog.md | 9 - stable/outline/6.0.21/CHANGELOG.md | 99 + stable/outline/6.0.21/Chart.yaml | 38 + .../{putty/3.0.8 => outline/6.0.21}/README.md | 0 stable/outline/6.0.21/app-changelog.md | 9 + .../outline/{6.0.20 => 6.0.21}/app-readme.md | 0 .../6.0.21}/charts/common-11.1.2.tgz | Bin .../6.0.21}/charts/postgresql-11.0.22.tgz | Bin .../6.0.21}/charts/redis-5.0.29.tgz | Bin .../outline/{6.0.20 => 6.0.21}/ix_values.yaml | 0 .../outline/{6.0.20 => 6.0.21}/questions.yaml | 0 .../{6.0.20 => 6.0.21}/templates/_secrets.tpl | 0 .../{6.0.20 => 6.0.21}/templates/common.yaml | 0 .../7.0.19 => outline/6.0.21}/values.yaml | 0 stable/owncast/8.0.8/CHANGELOG.md | 99 - stable/owncast/8.0.8/Chart.yaml | 30 - stable/owncast/8.0.8/app-changelog.md | 9 - stable/owncast/8.0.8/app-readme.md | 8 - stable/owncast/8.0.8/questions.yaml | 1889 --------- stable/owncast/8.0.9/CHANGELOG.md | 99 + stable/owncast/8.0.9/Chart.yaml | 31 + .../7.0.19 => owncast/8.0.9}/README.md | 0 stable/owncast/8.0.9/app-changelog.md | 9 + stable/owncast/8.0.9/app-readme.md | 8 + .../8.0.9}/charts/common-11.1.2.tgz | Bin .../owncast/{8.0.8 => 8.0.9}/ix_values.yaml | 0 stable/owncast/8.0.9/questions.yaml | 1930 ++++++++++ .../8.0.9}/templates/common.yaml | 0 .../3.0.9 => owncast/8.0.9}/values.yaml | 0 stable/pasta/3.0.7/CHANGELOG.md | 99 - stable/pasta/3.0.7/Chart.yaml | 33 - stable/pasta/3.0.7/app-changelog.md | 9 - stable/pasta/3.0.7/app-readme.md | 8 - stable/pasta/3.0.7/questions.yaml | 1751 --------- stable/pasta/3.0.8/CHANGELOG.md | 99 + stable/pasta/3.0.8/Chart.yaml | 33 + .../{qdirstat/3.0.9 => pasta/3.0.8}/README.md | 0 stable/pasta/3.0.8/app-changelog.md | 9 + stable/pasta/3.0.8/app-readme.md | 8 + .../3.0.8}/charts/common-11.1.2.tgz | Bin stable/pasta/{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/pasta/3.0.8/questions.yaml | 1792 +++++++++ .../{3.0.7 => 3.0.8}/templates/common.yaml | 0 .../4.0.14 => pasta/3.0.8}/values.yaml | 0 stable/photoprism/13.0.23/CHANGELOG.md | 99 + stable/photoprism/13.0.23/Chart.yaml | 34 + .../4.0.14 => photoprism/13.0.23}/README.md | 0 stable/photoprism/13.0.23/app-changelog.md | 9 + stable/photoprism/13.0.23/app-readme.md | 8 + .../13.0.23}/charts/common-11.1.2.tgz | Bin .../13.0.23}/charts/mariadb-5.0.25.tgz | Bin stable/photoprism/13.0.23/ix_values.yaml | 61 + stable/photoprism/13.0.23/questions.yaml | 1980 ++++++++++ .../13.0.23}/templates/common.yaml | 0 .../3.0.10 => photoprism/13.0.23}/values.yaml | 0 stable/photoview/7.0.19/CHANGELOG.md | 99 - stable/photoview/7.0.19/Chart.yaml | 32 - stable/photoview/7.0.19/app-changelog.md | 9 - stable/photoview/7.0.20/CHANGELOG.md | 99 + stable/photoview/7.0.20/Chart.yaml | 32 + .../3.0.10 => photoview/7.0.20}/README.md | 0 stable/photoview/7.0.20/app-changelog.md | 9 + .../{7.0.19 => 7.0.20}/app-readme.md | 0 .../7.0.20}/charts/common-11.1.2.tgz | Bin .../7.0.20}/charts/postgresql-11.0.22.tgz | Bin .../{7.0.19 => 7.0.20}/ix_values.yaml | 0 .../{7.0.19 => 7.0.20}/questions.yaml | 0 .../7.0.20}/templates/common.yaml | 0 .../3.0.8 => photoview/7.0.20}/values.yaml | 0 stable/phpldapadmin/8.0.7/CHANGELOG.md | 99 - stable/phpldapadmin/8.0.7/Chart.yaml | 30 - stable/phpldapadmin/8.0.7/app-changelog.md | 9 - stable/phpldapadmin/8.0.7/app-readme.md | 8 - stable/phpldapadmin/8.0.7/questions.yaml | 1770 --------- stable/phpldapadmin/8.0.8/CHANGELOG.md | 99 + stable/phpldapadmin/8.0.8/Chart.yaml | 31 + .../3.0.8 => phpldapadmin/8.0.8}/README.md | 0 stable/phpldapadmin/8.0.8/app-changelog.md | 9 + stable/phpldapadmin/8.0.8/app-readme.md | 8 + .../8.0.8}/charts/common-11.1.2.tgz | Bin .../{8.0.7 => 8.0.8}/ix_values.yaml | 0 stable/phpldapadmin/8.0.8/questions.yaml | 1811 +++++++++ .../8.0.8}/templates/common.yaml | 0 .../6.0.29 => phpldapadmin/8.0.8}/values.yaml | 0 stable/piaware/8.0.7/CHANGELOG.md | 99 - stable/piaware/8.0.7/Chart.yaml | 28 - stable/piaware/8.0.7/app-changelog.md | 9 - stable/piaware/8.0.7/app-readme.md | 8 - stable/piaware/8.0.7/questions.yaml | 1829 --------- stable/piaware/8.0.8/CHANGELOG.md | 99 + stable/piaware/8.0.8/Chart.yaml | 29 + .../6.0.29 => piaware/8.0.8}/README.md | 0 stable/piaware/8.0.8/app-changelog.md | 9 + stable/piaware/8.0.8/app-readme.md | 8 + .../8.0.8}/charts/common-11.1.2.tgz | Bin .../piaware/{8.0.7 => 8.0.8}/ix_values.yaml | 0 stable/piaware/8.0.8/questions.yaml | 1870 +++++++++ .../8.0.8}/templates/common.yaml | 0 .../6.0.0 => piaware/8.0.8}/values.yaml | 0 stable/picoshare/4.0.8/CHANGELOG.md | 99 - stable/picoshare/4.0.8/Chart.yaml | 27 - stable/picoshare/4.0.8/app-changelog.md | 9 - stable/picoshare/4.0.8/app-readme.md | 8 - stable/picoshare/4.0.8/questions.yaml | 1870 --------- stable/picoshare/4.0.9/CHANGELOG.md | 99 + stable/picoshare/4.0.9/Chart.yaml | 27 + .../6.0.0 => picoshare/4.0.9}/README.md | 0 stable/picoshare/4.0.9/app-changelog.md | 9 + stable/picoshare/4.0.9/app-readme.md | 8 + .../4.0.9}/charts/common-11.1.2.tgz | Bin .../picoshare/{4.0.8 => 4.0.9}/ix_values.yaml | 0 stable/picoshare/4.0.9/questions.yaml | 1911 +++++++++ .../{4.0.8 => 4.0.9}/templates/common.yaml | 0 .../4.0.12 => picoshare/4.0.9}/values.yaml | 0 stable/pihole/8.0.14/CHANGELOG.md | 99 - stable/pihole/8.0.14/Chart.yaml | 30 - stable/pihole/8.0.14/app-changelog.md | 9 - stable/pihole/8.0.15/CHANGELOG.md | 99 + stable/pihole/8.0.15/Chart.yaml | 31 + .../4.0.12 => pihole/8.0.15}/README.md | 0 stable/pihole/8.0.15/app-changelog.md | 9 + .../pihole/{8.0.14 => 8.0.15}/app-readme.md | 0 .../8.0.15}/charts/common-11.1.2.tgz | Bin .../pihole/{8.0.14 => 8.0.15}/ix_values.yaml | 0 .../pihole/{8.0.14 => 8.0.15}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{8.0.14 => 8.0.15}/templates/common.yaml | 0 .../7.0.22 => pihole/8.0.15}/values.yaml | 0 stable/pinry/4.0.7/CHANGELOG.md | 99 - stable/pinry/4.0.7/Chart.yaml | 26 - stable/pinry/4.0.7/app-changelog.md | 9 - stable/pinry/4.0.7/app-readme.md | 8 - stable/pinry/4.0.7/questions.yaml | 1829 --------- stable/pinry/4.0.8/CHANGELOG.md | 99 + stable/pinry/4.0.8/Chart.yaml | 27 + .../{spotweb/7.0.22 => pinry/4.0.8}/README.md | 0 stable/pinry/4.0.8/app-changelog.md | 9 + stable/pinry/4.0.8/app-readme.md | 8 + .../4.0.8}/charts/common-11.1.2.tgz | Bin stable/pinry/{4.0.7 => 4.0.8}/ix_values.yaml | 0 stable/pinry/4.0.8/questions.yaml | 1870 +++++++++ .../{4.0.7 => 4.0.8}/templates/_secrets.tpl | 0 .../{4.0.7 => 4.0.8}/templates/common.yaml | 0 .../4.0.17 => pinry/4.0.8}/values.yaml | 0 stable/plaxt/3.0.7/CHANGELOG.md | 99 - stable/plaxt/3.0.7/Chart.yaml | 34 - stable/plaxt/3.0.7/app-changelog.md | 9 - stable/plaxt/3.0.7/app-readme.md | 8 - stable/plaxt/3.0.7/questions.yaml | 1848 --------- stable/plaxt/3.0.8/CHANGELOG.md | 99 + stable/plaxt/3.0.8/Chart.yaml | 34 + .../4.0.17 => plaxt/3.0.8}/README.md | 0 stable/plaxt/3.0.8/app-changelog.md | 9 + stable/plaxt/3.0.8/app-readme.md | 8 + .../3.0.8}/charts/common-11.1.2.tgz | Bin stable/plaxt/{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/plaxt/3.0.8/questions.yaml | 1889 +++++++++ .../{3.0.7 => 3.0.8}/templates/common.yaml | 0 .../8.0.26 => plaxt/3.0.8}/values.yaml | 0 stable/podgrab/12.0.8/CHANGELOG.md | 99 + stable/podgrab/12.0.8/Chart.yaml | 29 + .../8.0.26 => podgrab/12.0.8}/README.md | 0 stable/podgrab/12.0.8/app-changelog.md | 9 + stable/podgrab/12.0.8/app-readme.md | 8 + .../12.0.8}/charts/common-11.1.2.tgz | Bin stable/podgrab/12.0.8/ix_values.yaml | 42 + stable/podgrab/12.0.8/questions.yaml | 1898 +++++++++ .../12.0.8}/templates/common.yaml | 0 .../7.0.22 => podgrab/12.0.8}/values.yaml | 0 stable/posterr/3.0.7/CHANGELOG.md | 99 - stable/posterr/3.0.7/Chart.yaml | 30 - stable/posterr/3.0.7/app-changelog.md | 9 - stable/posterr/3.0.7/app-readme.md | 8 - stable/posterr/3.0.7/questions.yaml | 1899 --------- stable/posterr/3.0.8/CHANGELOG.md | 99 + stable/posterr/3.0.8/Chart.yaml | 30 + .../7.0.22 => posterr/3.0.8}/README.md | 0 stable/posterr/3.0.8/app-changelog.md | 9 + stable/posterr/3.0.8/app-readme.md | 8 + .../3.0.8}/charts/common-11.1.2.tgz | Bin .../posterr/{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/posterr/3.0.8/questions.yaml | 1940 ++++++++++ .../{3.0.7 => 3.0.8}/templates/common.yaml | 0 .../2.1.7 => posterr/3.0.8}/values.yaml | 0 stable/pretend-youre-xyzzy/8.0.7/CHANGELOG.md | 99 - stable/pretend-youre-xyzzy/8.0.7/Chart.yaml | 30 - .../8.0.7/app-changelog.md | 9 - .../pretend-youre-xyzzy/8.0.7/app-readme.md | 8 - .../pretend-youre-xyzzy/8.0.7/questions.yaml | 1751 --------- stable/pretend-youre-xyzzy/8.0.8/CHANGELOG.md | 99 + stable/pretend-youre-xyzzy/8.0.8/Chart.yaml | 31 + .../8.0.8}/README.md | 0 .../8.0.8/app-changelog.md | 9 + .../pretend-youre-xyzzy/8.0.8/app-readme.md | 8 + .../8.0.8}/charts/common-11.1.2.tgz | Bin .../{8.0.7 => 8.0.8}/ix_values.yaml | 0 .../pretend-youre-xyzzy/8.0.8/questions.yaml | 1792 +++++++++ .../8.0.8}/templates/common.yaml | 0 .../8.0.8}/values.yaml | 0 stable/promcord/6.0.10/CHANGELOG.md | 99 - stable/promcord/6.0.10/Chart.yaml | 30 - stable/promcord/6.0.10/app-changelog.md | 4 - stable/promcord/6.0.10/questions.yaml | 1496 -------- stable/promcord/6.0.11/CHANGELOG.md | 99 + stable/promcord/6.0.11/Chart.yaml | 31 + .../4.0.7 => promcord/6.0.11}/README.md | 0 stable/promcord/6.0.11/app-changelog.md | 9 + .../promcord/{6.0.10 => 6.0.11}/app-readme.md | 0 .../6.0.11}/charts/common-11.1.2.tgz | Bin .../{6.0.10 => 6.0.11}/ix_values.yaml | 0 stable/promcord/6.0.11/questions.yaml | 1497 ++++++++ .../{6.0.10 => 6.0.11}/templates/common.yaml | 0 .../templates/prometheusrules.yaml | 0 .../templates/servicemonitor.yaml | 0 .../8.0.7 => promcord/6.0.11}/values.yaml | 0 stable/putty/3.0.8/CHANGELOG.md | 99 - stable/putty/3.0.8/Chart.yaml | 30 - stable/putty/3.0.8/app-changelog.md | 9 - stable/putty/3.0.8/app-readme.md | 8 - stable/putty/3.0.8/questions.yaml | 1949 ---------- stable/putty/3.0.9/CHANGELOG.md | 99 + stable/putty/3.0.9/Chart.yaml | 30 + .../8.0.7 => putty/3.0.9}/README.md | 0 stable/putty/3.0.9/app-changelog.md | 9 + stable/putty/3.0.9/app-readme.md | 8 + .../3.0.9}/charts/common-11.1.2.tgz | Bin stable/putty/{3.0.8 => 3.0.9}/ix_values.yaml | 0 stable/putty/3.0.9/questions.yaml | 1990 ++++++++++ .../3.0.9}/templates/common.yaml | 0 .../4.0.9 => putty/3.0.9}/values.yaml | 0 stable/pydio-cells/7.0.19/CHANGELOG.md | 99 - stable/pydio-cells/7.0.19/Chart.yaml | 32 - stable/pydio-cells/7.0.19/app-changelog.md | 9 - stable/pydio-cells/7.0.20/CHANGELOG.md | 99 + stable/pydio-cells/7.0.20/Chart.yaml | 32 + .../4.0.9 => pydio-cells/7.0.20}/README.md | 0 stable/pydio-cells/7.0.20/app-changelog.md | 9 + .../{7.0.19 => 7.0.20}/app-readme.md | 0 .../7.0.20}/charts/common-11.1.2.tgz | Bin .../7.0.20}/charts/mariadb-5.0.25.tgz | Bin .../{7.0.19 => 7.0.20}/ix_values.yaml | 0 .../{7.0.19 => 7.0.20}/questions.yaml | 0 .../{7.0.19 => 7.0.20}/templates/common.yaml | 0 .../1.0.5 => pydio-cells/7.0.20}/values.yaml | 0 stable/qdirstat/3.0.10/CHANGELOG.md | 99 + stable/qdirstat/3.0.10/Chart.yaml | 30 + .../1.0.5 => qdirstat/3.0.10}/README.md | 0 stable/qdirstat/3.0.10/app-changelog.md | 9 + stable/qdirstat/3.0.10/app-readme.md | 8 + .../3.0.10}/charts/common-11.1.2.tgz | Bin .../qdirstat/{3.0.9 => 3.0.10}/ix_values.yaml | 0 stable/qdirstat/3.0.10/questions.yaml | 2054 ++++++++++ .../3.0.10}/templates/common.yaml | 0 .../3.0.9 => qdirstat/3.0.10}/values.yaml | 0 stable/qdirstat/3.0.9/CHANGELOG.md | 99 - stable/qdirstat/3.0.9/Chart.yaml | 30 - stable/qdirstat/3.0.9/app-changelog.md | 9 - stable/qdirstat/3.0.9/app-readme.md | 8 - stable/qdirstat/3.0.9/questions.yaml | 2013 ---------- stable/qinglong/4.0.14/CHANGELOG.md | 99 - stable/qinglong/4.0.14/Chart.yaml | 30 - stable/qinglong/4.0.14/app-changelog.md | 9 - stable/qinglong/4.0.14/app-readme.md | 8 - stable/qinglong/4.0.14/questions.yaml | 1829 --------- stable/qinglong/4.0.15/CHANGELOG.md | 99 + stable/qinglong/4.0.15/Chart.yaml | 30 + .../3.0.9 => qinglong/4.0.15}/README.md | 0 stable/qinglong/4.0.15/app-changelog.md | 9 + stable/qinglong/4.0.15/app-readme.md | 8 + .../4.0.15}/charts/common-11.1.2.tgz | Bin .../{4.0.14 => 4.0.15}/ix_values.yaml | 0 stable/qinglong/4.0.15/questions.yaml | 1870 +++++++++ .../4.0.15}/templates/common.yaml | 0 .../7.0.17 => qinglong/4.0.15}/values.yaml | 0 stable/rcon-webadmin/3.0.10/CHANGELOG.md | 99 - stable/rcon-webadmin/3.0.10/Chart.yaml | 32 - stable/rcon-webadmin/3.0.10/app-changelog.md | 9 - stable/rcon-webadmin/3.0.10/app-readme.md | 8 - stable/rcon-webadmin/3.0.10/questions.yaml | 2112 ---------- stable/rcon-webadmin/3.0.11/CHANGELOG.md | 99 + stable/rcon-webadmin/3.0.11/Chart.yaml | 32 + .../7.0.17 => rcon-webadmin/3.0.11}/README.md | 0 stable/rcon-webadmin/3.0.11/app-changelog.md | 9 + stable/rcon-webadmin/3.0.11/app-readme.md | 8 + .../3.0.11}/charts/common-11.1.2.tgz | Bin .../{3.0.10 => 3.0.11}/ix_values.yaml | 0 stable/rcon-webadmin/3.0.11/questions.yaml | 2174 +++++++++++ .../{3.0.10 => 3.0.11}/templates/common.yaml | 0 .../3.0.11}/values.yaml | 0 stable/retrobot/3.0.8/CHANGELOG.md | 99 - stable/retrobot/3.0.8/Chart.yaml | 32 - stable/retrobot/3.0.8/app-changelog.md | 9 - stable/retrobot/3.0.8/app-readme.md | 8 - stable/retrobot/3.0.8/questions.yaml | 1555 -------- stable/retrobot/3.0.9/CHANGELOG.md | 99 + stable/retrobot/3.0.9/Chart.yaml | 32 + .../8.0.8 => retrobot/3.0.9}/README.md | 0 stable/retrobot/3.0.9/app-changelog.md | 9 + stable/retrobot/3.0.9/app-readme.md | 8 + .../3.0.9}/charts/common-11.1.2.tgz | Bin .../retrobot/{3.0.8 => 3.0.9}/ix_values.yaml | 0 stable/retrobot/3.0.9/questions.yaml | 1555 ++++++++ .../3.0.9}/templates/common.yaml | 0 .../3.1.9 => retrobot/3.0.9}/values.yaml | 0 stable/rsshub/6.0.29/CHANGELOG.md | 99 - stable/rsshub/6.0.29/Chart.yaml | 34 - stable/rsshub/6.0.29/app-changelog.md | 9 - stable/rsshub/6.0.30/CHANGELOG.md | 99 + stable/rsshub/6.0.30/Chart.yaml | 35 + .../3.1.9 => rsshub/6.0.30}/README.md | 0 stable/rsshub/6.0.30/app-changelog.md | 9 + .../rsshub/{6.0.29 => 6.0.30}/app-readme.md | 0 .../6.0.30}/charts/common-11.1.2.tgz | Bin .../6.0.30}/charts/redis-5.0.29.tgz | Bin .../rsshub/{6.0.29 => 6.0.30}/ix_values.yaml | 0 .../rsshub/{6.0.29 => 6.0.30}/questions.yaml | 0 .../6.0.30}/templates/common.yaml | 0 .../{wbo/3.0.0 => rsshub/6.0.30}/values.yaml | 0 stable/sickgear/6.0.0/CHANGELOG.md | 99 - stable/sickgear/6.0.0/Chart.yaml | 30 - stable/sickgear/6.0.0/app-changelog.md | 9 - stable/sickgear/6.0.0/app-readme.md | 8 - stable/sickgear/6.0.0/questions.yaml | 1829 --------- stable/sickgear/6.0.1/CHANGELOG.md | 99 + stable/sickgear/6.0.1/Chart.yaml | 31 + .../7.0.21 => sickgear/6.0.1}/README.md | 0 stable/sickgear/6.0.1/app-changelog.md | 9 + stable/sickgear/6.0.1/app-readme.md | 8 + .../6.0.1}/charts/common-11.1.2.tgz | Bin .../sickgear/{6.0.0 => 6.0.1}/ix_values.yaml | 0 stable/sickgear/6.0.1/questions.yaml | 1870 +++++++++ stable/sickgear/6.0.1/templates/common.yaml | 2 + .../7.0.21 => sickgear/6.0.1}/values.yaml | 0 stable/snapdrop/4.0.12/CHANGELOG.md | 99 - stable/snapdrop/4.0.12/Chart.yaml | 26 - stable/snapdrop/4.0.12/app-changelog.md | 9 - stable/snapdrop/4.0.13/CHANGELOG.md | 99 + stable/snapdrop/4.0.13/Chart.yaml | 27 + .../8.0.16 => snapdrop/4.0.13}/README.md | 0 stable/snapdrop/4.0.13/app-changelog.md | 9 + .../snapdrop/{4.0.12 => 4.0.13}/app-readme.md | 0 .../4.0.13}/charts/common-11.1.2.tgz | Bin .../{4.0.12 => 4.0.13}/ix_values.yaml | 0 .../{4.0.12 => 4.0.13}/questions.yaml | 0 .../4.0.13}/templates/common.yaml | 0 .../8.0.16 => snapdrop/4.0.13}/values.yaml | 0 stable/spotweb/7.0.22/CHANGELOG.md | 99 - stable/spotweb/7.0.22/Chart.yaml | 35 - stable/spotweb/7.0.22/app-changelog.md | 9 - stable/spotweb/7.0.23/CHANGELOG.md | 99 + stable/spotweb/7.0.23/Chart.yaml | 35 + .../{wger/4.0.33 => spotweb/7.0.23}/README.md | 0 stable/spotweb/7.0.23/app-changelog.md | 9 + .../spotweb/{7.0.22 => 7.0.23}/app-readme.md | 0 .../7.0.23}/charts/common-11.1.2.tgz | Bin .../7.0.23/charts/postgresql-11.0.22.tgz | Bin 0 -> 187570 bytes .../spotweb/{7.0.22 => 7.0.23}/ix_values.yaml | 0 .../spotweb/{7.0.22 => 7.0.23}/questions.yaml | 0 .../{7.0.22 => 7.0.23}/templates/common.yaml | 0 .../4.0.33 => spotweb/7.0.23}/values.yaml | 0 stable/storj-node/4.0.17/CHANGELOG.md | 99 - stable/storj-node/4.0.17/Chart.yaml | 29 - stable/storj-node/4.0.17/app-changelog.md | 9 - stable/storj-node/4.0.18/CHANGELOG.md | 99 + stable/storj-node/4.0.18/Chart.yaml | 29 + .../1.1.10 => storj-node/4.0.18}/README.md | 0 .../storj-node/{4.0.17 => 4.0.18}/SKIPINSTALL | 0 stable/storj-node/4.0.18/app-changelog.md | 9 + .../{4.0.17 => 4.0.18}/app-readme.md | 0 .../4.0.18}/charts/common-11.1.2.tgz | Bin .../{4.0.17 => 4.0.18}/ix_values.yaml | 0 .../{4.0.17 => 4.0.18}/questions.yaml | 0 .../storj-node/4.0.18/templates/common.yaml | 1 + .../1.1.10 => storj-node/4.0.18}/values.yaml | 0 stable/strapi/8.0.26/CHANGELOG.md | 99 - stable/strapi/8.0.26/Chart.yaml | 33 - stable/strapi/8.0.26/app-changelog.md | 9 - stable/strapi/8.0.27/CHANGELOG.md | 99 + stable/strapi/8.0.27/Chart.yaml | 33 + .../2.1.6 => strapi/8.0.27}/README.md | 0 stable/strapi/8.0.27/app-changelog.md | 9 + .../strapi/{8.0.26 => 8.0.27}/app-readme.md | 0 .../8.0.27}/charts/common-11.1.2.tgz | Bin .../8.0.27/charts/postgresql-11.0.22.tgz | Bin 0 -> 187570 bytes .../strapi/{8.0.26 => 8.0.27}/ix_values.yaml | 0 .../strapi/{8.0.26 => 8.0.27}/questions.yaml | 0 stable/strapi/8.0.27/templates/common.yaml | 1 + .../2.1.6 => strapi/8.0.27}/values.yaml | 0 stable/synapse/7.0.22/CHANGELOG.md | 99 - stable/synapse/7.0.22/Chart.yaml | 33 - stable/synapse/7.0.22/app-changelog.md | 9 - stable/synapse/7.0.23/CHANGELOG.md | 99 + stable/synapse/7.0.23/Chart.yaml | 34 + .../3.0.7 => synapse/7.0.23}/README.md | 0 stable/synapse/7.0.23/app-changelog.md | 9 + .../synapse/{7.0.22 => 7.0.23}/app-readme.md | 0 .../7.0.23}/charts/common-11.1.2.tgz | Bin .../7.0.23/charts/postgresql-11.0.22.tgz | Bin 0 -> 187570 bytes .../synapse/{7.0.22 => 7.0.23}/ix_values.yaml | 0 .../synapse/{7.0.22 => 7.0.23}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{7.0.22 => 7.0.23}/templates/_helpers.tpl | 0 .../{7.0.22 => 7.0.23}/templates/_secret.tpl | 0 .../{7.0.22 => 7.0.23}/templates/common.yaml | 0 .../3.0.7 => synapse/7.0.23}/values.yaml | 0 stable/syncthing/13.0.10/CHANGELOG.md | 99 + stable/syncthing/13.0.10/Chart.yaml | 30 + .../3.0.7 => syncthing/13.0.10}/README.md | 0 stable/syncthing/13.0.10/app-changelog.md | 9 + stable/syncthing/13.0.10/app-readme.md | 8 + .../13.0.10}/charts/common-11.1.2.tgz | Bin stable/syncthing/13.0.10/ix_values.yaml | 42 + stable/syncthing/13.0.10/questions.yaml | 2026 ++++++++++ .../syncthing/13.0.10/templates/common.yaml | 1 + .../3.0.7 => syncthing/13.0.10}/values.yaml | 0 stable/synctube/2.1.7/CHANGELOG.md | 99 - stable/synctube/2.1.7/Chart.yaml | 39 - stable/synctube/2.1.7/app-changelog.md | 9 - stable/synctube/2.1.7/app-readme.md | 8 - stable/synctube/2.1.7/questions.yaml | 1829 --------- stable/synctube/2.1.8/CHANGELOG.md | 99 + stable/synctube/2.1.8/Chart.yaml | 39 + stable/synctube/2.1.8/README.md | 27 + stable/synctube/2.1.8/app-changelog.md | 9 + stable/synctube/2.1.8/app-readme.md | 8 + .../synctube/2.1.8/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../synctube/{2.1.7 => 2.1.8}/ix_values.yaml | 0 stable/synctube/2.1.8/questions.yaml | 1870 +++++++++ .../{2.1.7 => 2.1.8}/templates/common.yaml | 0 stable/synctube/2.1.8/values.yaml | 0 stable/tdarr/4.0.7/CHANGELOG.md | 99 - stable/tdarr/4.0.7/Chart.yaml | 31 - stable/tdarr/4.0.7/app-changelog.md | 9 - stable/tdarr/4.0.7/app-readme.md | 8 - stable/tdarr/4.0.7/questions.yaml | 2183 ----------- stable/tdarr/4.0.8/CHANGELOG.md | 99 + stable/tdarr/4.0.8/Chart.yaml | 31 + stable/tdarr/4.0.8/README.md | 27 + stable/tdarr/4.0.8/app-changelog.md | 9 + stable/tdarr/4.0.8/app-readme.md | 8 + stable/tdarr/4.0.8/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes stable/tdarr/{4.0.7 => 4.0.8}/ix_values.yaml | 0 stable/tdarr/4.0.8/questions.yaml | 2224 +++++++++++ stable/tdarr/4.0.8/templates/common.yaml | 1 + stable/tdarr/4.0.8/values.yaml | 0 stable/teedy/10.0.20/CHANGELOG.md | 99 + stable/teedy/10.0.20/Chart.yaml | 32 + stable/teedy/10.0.20/README.md | 27 + stable/teedy/10.0.20/app-changelog.md | 9 + stable/teedy/10.0.20/app-readme.md | 8 + stable/teedy/10.0.20/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../10.0.20/charts/postgresql-11.0.22.tgz | Bin 0 -> 187570 bytes stable/teedy/10.0.20/ix_values.yaml | 45 + stable/teedy/10.0.20/questions.yaml | 1932 ++++++++++ stable/teedy/10.0.20/templates/common.yaml | 1 + stable/teedy/10.0.20/values.yaml | 0 stable/thelounge/8.0.7/CHANGELOG.md | 99 - stable/thelounge/8.0.7/Chart.yaml | 30 - stable/thelounge/8.0.7/app-changelog.md | 9 - stable/thelounge/8.0.7/app-readme.md | 8 - stable/thelounge/8.0.7/questions.yaml | 1841 --------- stable/thelounge/8.0.8/CHANGELOG.md | 99 + stable/thelounge/8.0.8/Chart.yaml | 31 + stable/thelounge/8.0.8/README.md | 27 + stable/thelounge/8.0.8/app-changelog.md | 9 + stable/thelounge/8.0.8/app-readme.md | 8 + .../thelounge/8.0.8/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../thelounge/{8.0.7 => 8.0.8}/ix_values.yaml | 0 stable/thelounge/8.0.8/questions.yaml | 1882 +++++++++ stable/thelounge/8.0.8/templates/common.yaml | 1 + stable/thelounge/8.0.8/values.yaml | 0 stable/tinymediamanager/4.0.10/CHANGELOG.md | 99 + stable/tinymediamanager/4.0.10/Chart.yaml | 29 + stable/tinymediamanager/4.0.10/README.md | 27 + .../tinymediamanager/4.0.10/app-changelog.md | 9 + stable/tinymediamanager/4.0.10/app-readme.md | 8 + .../4.0.10/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../{4.0.9 => 4.0.10}/ix_values.yaml | 0 stable/tinymediamanager/4.0.10/questions.yaml | 2024 ++++++++++ .../4.0.10/templates/common.yaml | 1 + stable/tinymediamanager/4.0.10/values.yaml | 0 stable/tinymediamanager/4.0.9/CHANGELOG.md | 99 - stable/tinymediamanager/4.0.9/Chart.yaml | 29 - .../tinymediamanager/4.0.9/app-changelog.md | 9 - stable/tinymediamanager/4.0.9/app-readme.md | 8 - stable/tinymediamanager/4.0.9/questions.yaml | 1983 ---------- stable/traccar/10.0.20/CHANGELOG.md | 99 + stable/traccar/10.0.20/Chart.yaml | 32 + stable/traccar/10.0.20/README.md | 27 + stable/traccar/10.0.20/app-changelog.md | 9 + stable/traccar/10.0.20/app-readme.md | 8 + .../traccar/10.0.20/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../10.0.20/charts/postgresql-11.0.22.tgz | Bin 0 -> 187570 bytes stable/traccar/10.0.20/ix_values.yaml | 39 + stable/traccar/10.0.20/questions.yaml | 1889 +++++++++ stable/traccar/10.0.20/templates/common.yaml | 1 + stable/traccar/10.0.20/values.yaml | 0 stable/traggo/1.0.5/CHANGELOG.md | 58 - stable/traggo/1.0.5/Chart.yaml | 29 - stable/traggo/1.0.5/app-changelog.md | 9 - stable/traggo/1.0.5/app-readme.md | 8 - stable/traggo/1.0.5/questions.yaml | 1874 --------- stable/traggo/1.0.6/CHANGELOG.md | 67 + stable/traggo/1.0.6/Chart.yaml | 30 + stable/traggo/1.0.6/README.md | 27 + stable/traggo/1.0.6/app-changelog.md | 9 + stable/traggo/1.0.6/app-readme.md | 8 + stable/traggo/1.0.6/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes stable/traggo/{1.0.5 => 1.0.6}/ix_values.yaml | 0 stable/traggo/1.0.6/questions.yaml | 1915 +++++++++ .../{1.0.5 => 1.0.6}/templates/_secret.tpl | 0 .../{1.0.5 => 1.0.6}/templates/common.yaml | 0 stable/traggo/1.0.6/values.yaml | 0 stable/truecommand/13.0.8/CHANGELOG.md | 99 + stable/truecommand/13.0.8/Chart.yaml | 28 + stable/truecommand/13.0.8/README.md | 27 + stable/truecommand/13.0.8/app-changelog.md | 9 + stable/truecommand/13.0.8/app-readme.md | 8 + .../13.0.8/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes stable/truecommand/13.0.8/ix_values.yaml | 27 + stable/truecommand/13.0.8/questions.yaml | 1870 +++++++++ .../truecommand/13.0.8/templates/common.yaml | 1 + stable/truecommand/13.0.8/values.yaml | 0 stable/tsmuxer/3.0.10/CHANGELOG.md | 99 + stable/tsmuxer/3.0.10/Chart.yaml | 30 + stable/tsmuxer/3.0.10/README.md | 27 + stable/tsmuxer/3.0.10/app-changelog.md | 9 + stable/tsmuxer/3.0.10/app-readme.md | 8 + .../tsmuxer/3.0.10/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../tsmuxer/{3.0.9 => 3.0.10}/ix_values.yaml | 0 stable/tsmuxer/3.0.10/questions.yaml | 2054 ++++++++++ stable/tsmuxer/3.0.10/templates/common.yaml | 1 + stable/tsmuxer/3.0.10/values.yaml | 0 stable/tsmuxer/3.0.9/CHANGELOG.md | 99 - stable/tsmuxer/3.0.9/Chart.yaml | 30 - stable/tsmuxer/3.0.9/app-changelog.md | 9 - stable/tsmuxer/3.0.9/app-readme.md | 8 - stable/tsmuxer/3.0.9/questions.yaml | 2013 ---------- stable/typecho/7.0.17/CHANGELOG.md | 99 - stable/typecho/7.0.17/Chart.yaml | 32 - stable/typecho/7.0.17/app-changelog.md | 9 - stable/typecho/7.0.18/CHANGELOG.md | 99 + stable/typecho/7.0.18/Chart.yaml | 32 + stable/typecho/7.0.18/README.md | 27 + stable/typecho/7.0.18/app-changelog.md | 9 + .../typecho/{7.0.17 => 7.0.18}/app-readme.md | 0 .../typecho/7.0.18/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../typecho/7.0.18/charts/mariadb-5.0.25.tgz | Bin 0 -> 192991 bytes .../typecho/{7.0.17 => 7.0.18}/ix_values.yaml | 0 .../typecho/{7.0.17 => 7.0.18}/questions.yaml | 0 stable/typecho/7.0.18/templates/common.yaml | 1 + stable/typecho/7.0.18/values.yaml | 0 stable/unpackerr/8.0.8/CHANGELOG.md | 99 - stable/unpackerr/8.0.8/Chart.yaml | 33 - stable/unpackerr/8.0.8/app-changelog.md | 9 - stable/unpackerr/8.0.9/CHANGELOG.md | 99 + stable/unpackerr/8.0.9/Chart.yaml | 33 + stable/unpackerr/8.0.9/README.md | 27 + stable/unpackerr/8.0.9/app-changelog.md | 9 + .../unpackerr/{8.0.8 => 8.0.9}/app-readme.md | 0 .../unpackerr/8.0.9/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../unpackerr/{8.0.8 => 8.0.9}/ix_values.yaml | 0 .../unpackerr/{8.0.8 => 8.0.9}/questions.yaml | 0 stable/unpackerr/8.0.9/templates/common.yaml | 1 + stable/unpackerr/8.0.9/values.yaml | 0 stable/watchyourlan/3.1.10/CHANGELOG.md | 99 + stable/watchyourlan/3.1.10/Chart.yaml | 28 + stable/watchyourlan/3.1.10/README.md | 27 + stable/watchyourlan/3.1.10/app-changelog.md | 9 + .../{3.1.9 => 3.1.10}/app-readme.md | 0 .../3.1.10/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../{3.1.9 => 3.1.10}/ix_values.yaml | 0 stable/watchyourlan/3.1.10/questions.yaml | 1916 +++++++++ .../watchyourlan/3.1.10/templates/common.yaml | 1 + stable/watchyourlan/3.1.10/values.yaml | 0 stable/watchyourlan/3.1.9/CHANGELOG.md | 99 - stable/watchyourlan/3.1.9/Chart.yaml | 27 - stable/watchyourlan/3.1.9/app-changelog.md | 9 - stable/watchyourlan/3.1.9/questions.yaml | 1875 --------- stable/wbo/3.0.0/CHANGELOG.md | 8 - stable/wbo/3.0.0/Chart.yaml | 27 - stable/wbo/3.0.0/app-changelog.md | 4 - stable/wbo/3.0.0/questions.yaml | 1917 --------- stable/wbo/3.0.1/CHANGELOG.md | 17 + stable/wbo/3.0.1/Chart.yaml | 28 + stable/wbo/3.0.1/README.md | 27 + stable/wbo/3.0.1/app-changelog.md | 9 + stable/wbo/{3.0.0 => 3.0.1}/app-readme.md | 0 stable/wbo/3.0.1/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes stable/wbo/{3.0.0 => 3.0.1}/ix_values.yaml | 0 stable/wbo/3.0.1/questions.yaml | 1958 ++++++++++ .../{3.0.0 => 3.0.1}/templates/_configmap.tpl | 0 .../{3.0.0 => 3.0.1}/templates/_secret.tpl | 0 .../{3.0.0 => 3.0.1}/templates/common.yaml | 0 stable/wbo/3.0.1/values.yaml | 0 stable/weblate/7.0.21/CHANGELOG.md | 99 - stable/weblate/7.0.21/Chart.yaml | 37 - stable/weblate/7.0.21/app-changelog.md | 9 - stable/weblate/7.0.22/CHANGELOG.md | 99 + stable/weblate/7.0.22/Chart.yaml | 38 + stable/weblate/7.0.22/README.md | 27 + stable/weblate/7.0.22/app-changelog.md | 9 + .../weblate/{7.0.21 => 7.0.22}/app-readme.md | 0 .../weblate/7.0.22/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../7.0.22/charts/postgresql-11.0.22.tgz | Bin 0 -> 187570 bytes .../7.0.22}/charts/redis-5.0.29.tgz | Bin .../weblate/{7.0.21 => 7.0.22}/ix_values.yaml | 0 .../weblate/{7.0.21 => 7.0.22}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{7.0.21 => 7.0.22}/templates/common.yaml | 0 stable/weblate/7.0.22/values.yaml | 0 stable/wekan/8.0.16/CHANGELOG.md | 99 - stable/wekan/8.0.16/Chart.yaml | 32 - stable/wekan/8.0.16/app-changelog.md | 9 - stable/wekan/8.0.16/questions.yaml | 2828 -------------- stable/wekan/8.0.17/CHANGELOG.md | 99 + stable/wekan/8.0.17/Chart.yaml | 33 + stable/wekan/8.0.17/README.md | 27 + stable/wekan/8.0.17/app-changelog.md | 9 + stable/wekan/{8.0.16 => 8.0.17}/app-readme.md | 0 stable/wekan/8.0.17/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../charts/mongodb-4.0.28.tgz | Bin .../wekan/{8.0.16 => 8.0.17}/ix_values.yaml | 0 stable/wekan/8.0.17/questions.yaml | 2869 ++++++++++++++ stable/wekan/8.0.17/templates/common.yaml | 1 + stable/wekan/8.0.17/values.yaml | 0 stable/wger/4.0.33/CHANGELOG.md | 99 - stable/wger/4.0.33/Chart.yaml | 35 - stable/wger/4.0.33/app-changelog.md | 9 - stable/wger/4.0.34/CHANGELOG.md | 99 + stable/wger/4.0.34/Chart.yaml | 36 + stable/wger/4.0.34/README.md | 27 + stable/wger/4.0.34/app-changelog.md | 9 + stable/wger/{4.0.33 => 4.0.34}/app-readme.md | 0 stable/wger/4.0.34/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../wger/4.0.34/charts/postgresql-11.0.22.tgz | Bin 0 -> 187570 bytes stable/wger/4.0.34/charts/redis-5.0.29.tgz | Bin 0 -> 188223 bytes stable/wger/{4.0.33 => 4.0.34}/ix_values.yaml | 0 stable/wger/{4.0.33 => 4.0.34}/questions.yaml | 0 .../templates/_configmap.tpl | 0 .../{4.0.33 => 4.0.34}/templates/_nginx.tpl | 0 .../{4.0.33 => 4.0.34}/templates/_secrets.tpl | 0 .../{4.0.33 => 4.0.34}/templates/common.yaml | 0 stable/wger/4.0.34/values.yaml | 0 stable/wikijs/10.0.25/CHANGELOG.md | 99 + stable/wikijs/10.0.25/Chart.yaml | 33 + stable/wikijs/10.0.25/README.md | 27 + stable/wikijs/10.0.25/app-changelog.md | 9 + stable/wikijs/10.0.25/app-readme.md | 8 + .../wikijs/10.0.25/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../10.0.25/charts/postgresql-11.0.22.tgz | Bin 0 -> 187570 bytes stable/wikijs/10.0.25/ix_values.yaml | 50 + stable/wikijs/10.0.25/questions.yaml | 1801 +++++++++ stable/wikijs/10.0.25/templates/common.yaml | 1 + stable/wikijs/10.0.25/values.yaml | 0 stable/wordpress/1.1.10/CHANGELOG.md | 99 - stable/wordpress/1.1.10/Chart.yaml | 34 - stable/wordpress/1.1.10/app-changelog.md | 9 - stable/wordpress/1.1.11/CHANGELOG.md | 99 + stable/wordpress/1.1.11/Chart.yaml | 34 + stable/wordpress/1.1.11/README.md | 27 + stable/wordpress/1.1.11/app-changelog.md | 9 + .../{1.1.10 => 1.1.11}/app-readme.md | 0 .../wordpress/1.1.11/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../1.1.11/charts/mariadb-5.0.25.tgz | Bin 0 -> 192991 bytes .../{1.1.10 => 1.1.11}/ix_values.yaml | 0 .../{1.1.10 => 1.1.11}/questions.yaml | 0 .../{1.1.10 => 1.1.11}/templates/_env.tpl | 0 .../{1.1.10 => 1.1.11}/templates/common.yaml | 0 stable/wordpress/1.1.11/values.yaml | 0 stable/youtransfer/2.1.6/CHANGELOG.md | 99 - stable/youtransfer/2.1.6/Chart.yaml | 31 - stable/youtransfer/2.1.6/app-changelog.md | 9 - stable/youtransfer/2.1.6/app-readme.md | 8 - stable/youtransfer/2.1.6/questions.yaml | 1899 --------- stable/youtransfer/2.1.7/CHANGELOG.md | 99 + stable/youtransfer/2.1.7/Chart.yaml | 31 + stable/youtransfer/2.1.7/README.md | 27 + stable/youtransfer/2.1.7/app-changelog.md | 9 + stable/youtransfer/2.1.7/app-readme.md | 8 + .../2.1.7/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../{2.1.6 => 2.1.7}/ix_values.yaml | 0 stable/youtransfer/2.1.7/questions.yaml | 1940 ++++++++++ .../{2.1.6 => 2.1.7}/templates/common.yaml | 0 stable/youtransfer/2.1.7/values.yaml | 0 stable/ztcuui-aio/3.0.7/CHANGELOG.md | 99 - stable/ztcuui-aio/3.0.7/Chart.yaml | 26 - stable/ztcuui-aio/3.0.7/app-changelog.md | 9 - stable/ztcuui-aio/3.0.7/app-readme.md | 8 - stable/ztcuui-aio/3.0.7/questions.yaml | 2028 ---------- stable/ztcuui-aio/3.0.8/CHANGELOG.md | 99 + stable/ztcuui-aio/3.0.8/Chart.yaml | 27 + stable/ztcuui-aio/3.0.8/README.md | 27 + stable/ztcuui-aio/3.0.8/app-changelog.md | 9 + stable/ztcuui-aio/3.0.8/app-readme.md | 8 + .../ztcuui-aio/3.0.8/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes .../{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/ztcuui-aio/3.0.8/questions.yaml | 2069 ++++++++++ stable/ztcuui-aio/3.0.8/templates/common.yaml | 1 + stable/ztcuui-aio/3.0.8/values.yaml | 0 stable/zusam/3.0.7/CHANGELOG.md | 99 - stable/zusam/3.0.7/Chart.yaml | 28 - stable/zusam/3.0.7/app-changelog.md | 9 - stable/zusam/3.0.7/app-readme.md | 8 - stable/zusam/3.0.7/questions.yaml | 2049 ---------- stable/zusam/3.0.8/CHANGELOG.md | 99 + stable/zusam/3.0.8/Chart.yaml | 28 + stable/zusam/3.0.8/README.md | 27 + stable/zusam/3.0.8/app-changelog.md | 9 + stable/zusam/3.0.8/app-readme.md | 8 + stable/zusam/3.0.8/charts/common-11.1.2.tgz | Bin 0 -> 181984 bytes stable/zusam/{3.0.7 => 3.0.8}/ix_values.yaml | 0 stable/zusam/3.0.8/questions.yaml | 2090 ++++++++++ stable/zusam/3.0.8/templates/common.yaml | 1 + stable/zusam/3.0.8/values.yaml | 0 3783 files changed, 403529 insertions(+), 351487 deletions(-) delete mode 100644 dependency/mariadb/5.0.25/CHANGELOG.md delete mode 100644 dependency/mariadb/5.0.25/Chart.yaml delete mode 100644 dependency/mariadb/5.0.25/app-changelog.md create mode 100644 dependency/mariadb/5.0.26/CHANGELOG.md create mode 100644 dependency/mariadb/5.0.26/Chart.yaml rename dependency/mariadb/{5.0.25 => 5.0.26}/README.md (100%) create mode 100644 dependency/mariadb/5.0.26/app-changelog.md rename dependency/mariadb/{5.0.25 => 5.0.26}/app-readme.md (100%) rename dependency/mariadb/{5.0.25 => 5.0.26}/charts/common-11.1.2.tgz (100%) rename dependency/mariadb/{5.0.25 => 5.0.26}/ix_values.yaml (100%) rename dependency/mariadb/{5.0.25 => 5.0.26}/questions.yaml (100%) rename dependency/mariadb/{5.0.25 => 5.0.26}/templates/common.yaml (100%) rename dependency/mariadb/{5.0.25 => 5.0.26}/values.yaml (100%) delete mode 100644 dependency/memcached/5.0.24/CHANGELOG.md delete mode 100644 dependency/memcached/5.0.24/Chart.yaml delete mode 100644 dependency/memcached/5.0.24/app-changelog.md create mode 100644 dependency/memcached/5.0.25/CHANGELOG.md create mode 100644 dependency/memcached/5.0.25/Chart.yaml rename dependency/memcached/{5.0.24 => 5.0.25}/README.md (100%) create mode 100644 dependency/memcached/5.0.25/app-changelog.md rename dependency/memcached/{5.0.24 => 5.0.25}/app-readme.md (100%) rename dependency/memcached/{5.0.24 => 5.0.25}/charts/common-11.1.2.tgz (100%) rename dependency/memcached/{5.0.24 => 5.0.25}/ix_values.yaml (100%) rename dependency/memcached/{5.0.24 => 5.0.25}/questions.yaml (100%) rename dependency/memcached/{5.0.24 => 5.0.25}/templates/common.yaml (100%) rename dependency/memcached/{5.0.24 => 5.0.25}/values.yaml (100%) create mode 100644 dependency/postgresql/11.0.23/CHANGELOG.md create mode 100644 dependency/postgresql/11.0.23/Chart.yaml rename dependency/{promtail/6.0.12 => postgresql/11.0.23}/README.md (100%) create mode 100644 dependency/postgresql/11.0.23/app-changelog.md create mode 100644 dependency/postgresql/11.0.23/app-readme.md rename dependency/{promtail/6.0.12 => postgresql/11.0.23}/charts/common-11.1.2.tgz (100%) create mode 100644 dependency/postgresql/11.0.23/ix_values.yaml create mode 100644 dependency/postgresql/11.0.23/questions.yaml rename dependency/{solr/2.0.26 => postgresql/11.0.23}/templates/common.yaml (100%) rename dependency/{promtail/6.0.12 => postgresql/11.0.23}/values.yaml (100%) delete mode 100644 dependency/promtail/6.0.12/CHANGELOG.md delete mode 100644 dependency/promtail/6.0.12/Chart.yaml delete mode 100644 dependency/promtail/6.0.12/app-changelog.md create mode 100644 dependency/promtail/6.0.13/CHANGELOG.md create mode 100644 dependency/promtail/6.0.13/Chart.yaml rename dependency/{solr/2.0.26 => promtail/6.0.13}/README.md (100%) create mode 100644 dependency/promtail/6.0.13/app-changelog.md rename dependency/promtail/{6.0.12 => 6.0.13}/app-readme.md (100%) rename dependency/{solr/2.0.26 => promtail/6.0.13}/charts/common-11.1.2.tgz (100%) rename dependency/promtail/{6.0.12 => 6.0.13}/ix_values.yaml (100%) rename dependency/promtail/{6.0.12 => 6.0.13}/questions.yaml (100%) rename dependency/promtail/{6.0.12 => 6.0.13}/templates/_servicemonitor.tpl (100%) rename dependency/promtail/{6.0.12 => 6.0.13}/templates/common.yaml (100%) rename dependency/{solr/2.0.26 => promtail/6.0.13}/values.yaml (100%) delete mode 100644 dependency/solr/2.0.26/CHANGELOG.md delete mode 100644 dependency/solr/2.0.26/Chart.yaml delete mode 100644 dependency/solr/2.0.26/app-changelog.md create mode 100644 dependency/solr/2.0.27/CHANGELOG.md create mode 100644 dependency/solr/2.0.27/Chart.yaml create mode 100644 dependency/solr/2.0.27/README.md create mode 100644 dependency/solr/2.0.27/app-changelog.md rename dependency/solr/{2.0.26 => 2.0.27}/app-readme.md (100%) rename {enterprise/prometheus/7.0.46 => dependency/solr/2.0.27}/charts/common-11.1.2.tgz (100%) rename dependency/solr/{2.0.26 => 2.0.27}/ix_values.yaml (100%) rename dependency/solr/{2.0.26 => 2.0.27}/questions.yaml (100%) rename {stable/sickgear/6.0.0 => dependency/solr/2.0.27}/templates/common.yaml (100%) rename {enterprise/prometheus/7.0.46 => dependency/solr/2.0.27}/values.yaml (100%) delete mode 100644 enterprise/prometheus/7.0.46/CHANGELOG.md delete mode 100644 enterprise/prometheus/7.0.46/Chart.yaml delete mode 100644 enterprise/prometheus/7.0.46/app-changelog.md create mode 100644 enterprise/prometheus/7.0.47/CHANGELOG.md create mode 100644 enterprise/prometheus/7.0.47/Chart.yaml rename enterprise/prometheus/{7.0.46 => 7.0.47}/README.md (100%) create mode 100644 enterprise/prometheus/7.0.47/app-changelog.md rename enterprise/prometheus/{7.0.46 => 7.0.47}/app-readme.md (100%) rename {incubator/amtd/2.0.7 => enterprise/prometheus/7.0.47}/charts/common-11.1.2.tgz (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/charts/kube-state-metrics-3.2.8.tgz (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/charts/node-exporter-3.2.8.tgz (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/ix_values.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/questions.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/_helpers.tpl (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/alertmanager/_alertmanager.tpl (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/alertmanager/secrets.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/alertmanager/serviceaccount.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/alertmanager/servicemonitor.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/common.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/core-dns/service.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/core-dns/servicemonitor.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/kube-apiserver/servicemonitor.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/kube-controller-manager/endpoints.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/kube-controller-manager/service.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/kube-controller-manager/servicemonitor.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/kube-scheduler/endpoints.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/kube-scheduler/service.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/kube-scheduler/servicemonitor.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/exporters/kubelet/servicemonitor.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/prometheus/_additionalPrometheusRules.tpl (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/prometheus/_additionalScrapeJobs.tpl (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/prometheus/_prometheus.tpl (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/prometheus/_servicemonitor.tpl (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/prometheus/clusterrole.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/prometheus/clusterrolebinding.yaml (100%) rename enterprise/prometheus/{7.0.46 => 7.0.47}/templates/prometheus/serviceaccount.yaml (100%) rename {incubator/amtd/2.0.7 => enterprise/prometheus/7.0.47}/values.yaml (100%) delete mode 100644 incubator/amtd/2.0.7/CHANGELOG.md delete mode 100644 incubator/amtd/2.0.7/Chart.yaml delete mode 100644 incubator/amtd/2.0.7/app-changelog.md delete mode 100644 incubator/amtd/2.0.7/app-readme.md delete mode 100644 incubator/amtd/2.0.7/questions.yaml create mode 100644 incubator/amtd/2.0.8/CHANGELOG.md create mode 100644 incubator/amtd/2.0.8/Chart.yaml rename incubator/amtd/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/amtd/2.0.8/app-changelog.md create mode 100644 incubator/amtd/2.0.8/app-readme.md rename incubator/{amvd/2.0.7 => amtd/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/amtd/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/amtd/2.0.8/questions.yaml rename incubator/amtd/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{amvd/2.0.7 => amtd/2.0.8}/values.yaml (100%) delete mode 100644 incubator/amvd/2.0.7/CHANGELOG.md delete mode 100644 incubator/amvd/2.0.7/Chart.yaml delete mode 100644 incubator/amvd/2.0.7/app-changelog.md delete mode 100644 incubator/amvd/2.0.7/app-readme.md delete mode 100644 incubator/amvd/2.0.7/questions.yaml create mode 100644 incubator/amvd/2.0.8/CHANGELOG.md create mode 100644 incubator/amvd/2.0.8/Chart.yaml rename incubator/amvd/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/amvd/2.0.8/app-changelog.md create mode 100644 incubator/amvd/2.0.8/app-readme.md rename incubator/{apache-webdav/2.0.7 => amvd/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/amvd/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/amvd/2.0.8/questions.yaml rename incubator/amvd/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{apache-webdav/2.0.7 => amvd/2.0.8}/values.yaml (100%) delete mode 100644 incubator/apache-webdav/2.0.7/CHANGELOG.md delete mode 100644 incubator/apache-webdav/2.0.7/Chart.yaml delete mode 100644 incubator/apache-webdav/2.0.7/app-changelog.md delete mode 100644 incubator/apache-webdav/2.0.7/app-readme.md delete mode 100644 incubator/apache-webdav/2.0.7/questions.yaml create mode 100644 incubator/apache-webdav/2.0.8/CHANGELOG.md create mode 100644 incubator/apache-webdav/2.0.8/Chart.yaml rename incubator/apache-webdav/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/apache-webdav/2.0.8/app-changelog.md create mode 100644 incubator/apache-webdav/2.0.8/app-readme.md rename incubator/{awesome-ttrss/3.0.19 => apache-webdav/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/apache-webdav/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/apache-webdav/2.0.8/questions.yaml rename incubator/apache-webdav/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{awesome-ttrss/3.0.19 => apache-webdav/2.0.8}/values.yaml (100%) delete mode 100644 incubator/awesome-ttrss/3.0.19/CHANGELOG.md delete mode 100644 incubator/awesome-ttrss/3.0.19/Chart.yaml delete mode 100644 incubator/awesome-ttrss/3.0.19/app-changelog.md create mode 100644 incubator/awesome-ttrss/3.0.20/CHANGELOG.md create mode 100644 incubator/awesome-ttrss/3.0.20/Chart.yaml rename incubator/awesome-ttrss/{3.0.19 => 3.0.20}/README.md (100%) create mode 100644 incubator/awesome-ttrss/3.0.20/app-changelog.md rename incubator/awesome-ttrss/{3.0.19 => 3.0.20}/app-readme.md (100%) rename incubator/{backuppc/2.0.11 => awesome-ttrss/3.0.20}/charts/common-11.1.2.tgz (100%) rename incubator/awesome-ttrss/{3.0.19 => 3.0.20}/charts/postgresql-11.0.22.tgz (100%) rename incubator/awesome-ttrss/{3.0.19 => 3.0.20}/ix_values.yaml (100%) rename incubator/awesome-ttrss/{3.0.19 => 3.0.20}/questions.yaml (100%) rename incubator/awesome-ttrss/{3.0.19 => 3.0.20}/templates/common.yaml (100%) rename incubator/{backuppc/2.0.11 => awesome-ttrss/3.0.20}/values.yaml (100%) delete mode 100644 incubator/backuppc/2.0.11/CHANGELOG.md delete mode 100644 incubator/backuppc/2.0.11/Chart.yaml delete mode 100644 incubator/backuppc/2.0.11/app-changelog.md delete mode 100644 incubator/backuppc/2.0.11/app-readme.md delete mode 100644 incubator/backuppc/2.0.11/questions.yaml create mode 100644 incubator/backuppc/2.0.12/CHANGELOG.md create mode 100644 incubator/backuppc/2.0.12/Chart.yaml rename incubator/backuppc/{2.0.11 => 2.0.12}/README.md (100%) create mode 100644 incubator/backuppc/2.0.12/app-changelog.md create mode 100644 incubator/backuppc/2.0.12/app-readme.md rename incubator/{baikal/2.0.8 => backuppc/2.0.12}/charts/common-11.1.2.tgz (100%) rename incubator/backuppc/{2.0.11 => 2.0.12}/ix_values.yaml (100%) create mode 100644 incubator/backuppc/2.0.12/questions.yaml rename incubator/backuppc/{2.0.11 => 2.0.12}/templates/common.yaml (100%) rename incubator/{baikal/2.0.8 => backuppc/2.0.12}/values.yaml (100%) delete mode 100644 incubator/baikal/2.0.8/CHANGELOG.md delete mode 100644 incubator/baikal/2.0.8/Chart.yaml delete mode 100644 incubator/baikal/2.0.8/app-changelog.md delete mode 100644 incubator/baikal/2.0.8/app-readme.md delete mode 100644 incubator/baikal/2.0.8/questions.yaml create mode 100644 incubator/baikal/2.0.9/CHANGELOG.md create mode 100644 incubator/baikal/2.0.9/Chart.yaml rename incubator/baikal/{2.0.8 => 2.0.9}/README.md (100%) create mode 100644 incubator/baikal/2.0.9/app-changelog.md create mode 100644 incubator/baikal/2.0.9/app-readme.md rename incubator/{bitcoin-node => baikal}/2.0.9/charts/common-11.1.2.tgz (100%) rename incubator/baikal/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/baikal/2.0.9/questions.yaml rename incubator/baikal/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{bitcoin-node => baikal}/2.0.9/values.yaml (100%) create mode 100644 incubator/bitcoin-node/2.0.10/CHANGELOG.md create mode 100644 incubator/bitcoin-node/2.0.10/Chart.yaml rename incubator/bitcoin-node/{2.0.9 => 2.0.10}/README.md (100%) create mode 100644 incubator/bitcoin-node/2.0.10/app-changelog.md create mode 100644 incubator/bitcoin-node/2.0.10/app-readme.md rename incubator/{bitcoinunlimited/2.0.7 => bitcoin-node/2.0.10}/charts/common-11.1.2.tgz (100%) rename incubator/bitcoin-node/{2.0.9 => 2.0.10}/ix_values.yaml (100%) create mode 100644 incubator/bitcoin-node/2.0.10/questions.yaml rename incubator/bitcoin-node/{2.0.9 => 2.0.10}/templates/common.yaml (100%) rename incubator/{bitcoinunlimited/2.0.7 => bitcoin-node/2.0.10}/values.yaml (100%) delete mode 100644 incubator/bitcoin-node/2.0.9/CHANGELOG.md delete mode 100644 incubator/bitcoin-node/2.0.9/Chart.yaml delete mode 100644 incubator/bitcoin-node/2.0.9/app-changelog.md delete mode 100644 incubator/bitcoin-node/2.0.9/app-readme.md delete mode 100644 incubator/bitcoin-node/2.0.9/questions.yaml delete mode 100644 incubator/bitcoinunlimited/2.0.7/CHANGELOG.md delete mode 100644 incubator/bitcoinunlimited/2.0.7/Chart.yaml delete mode 100644 incubator/bitcoinunlimited/2.0.7/app-changelog.md delete mode 100644 incubator/bitcoinunlimited/2.0.7/app-readme.md delete mode 100644 incubator/bitcoinunlimited/2.0.7/questions.yaml create mode 100644 incubator/bitcoinunlimited/2.0.8/CHANGELOG.md create mode 100644 incubator/bitcoinunlimited/2.0.8/Chart.yaml rename incubator/bitcoinunlimited/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/bitcoinunlimited/2.0.8/app-changelog.md create mode 100644 incubator/bitcoinunlimited/2.0.8/app-readme.md rename incubator/{bwapp/2.0.7 => bitcoinunlimited/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/bitcoinunlimited/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/bitcoinunlimited/2.0.8/questions.yaml rename incubator/bitcoinunlimited/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{bwapp/2.0.7 => bitcoinunlimited/2.0.8}/values.yaml (100%) delete mode 100644 incubator/bwapp/2.0.7/CHANGELOG.md delete mode 100644 incubator/bwapp/2.0.7/Chart.yaml delete mode 100644 incubator/bwapp/2.0.7/app-changelog.md delete mode 100644 incubator/bwapp/2.0.7/app-readme.md delete mode 100644 incubator/bwapp/2.0.7/questions.yaml create mode 100644 incubator/bwapp/2.0.8/CHANGELOG.md create mode 100644 incubator/bwapp/2.0.8/Chart.yaml rename incubator/bwapp/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/bwapp/2.0.8/app-changelog.md create mode 100644 incubator/bwapp/2.0.8/app-readme.md rename incubator/{cherry/2.0.7 => bwapp/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/bwapp/{2.0.7 => 2.0.8}/ix_values.yaml (100%) rename incubator/{fileshelter => bwapp}/2.0.8/questions.yaml (100%) rename incubator/bwapp/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{cherry/2.0.7 => bwapp/2.0.8}/values.yaml (100%) delete mode 100644 incubator/cherry/2.0.7/CHANGELOG.md delete mode 100644 incubator/cherry/2.0.7/Chart.yaml delete mode 100644 incubator/cherry/2.0.7/app-changelog.md delete mode 100644 incubator/cherry/2.0.7/app-readme.md delete mode 100644 incubator/cherry/2.0.7/questions.yaml create mode 100644 incubator/cherry/2.0.8/CHANGELOG.md create mode 100644 incubator/cherry/2.0.8/Chart.yaml rename incubator/cherry/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/cherry/2.0.8/app-changelog.md create mode 100644 incubator/cherry/2.0.8/app-readme.md rename incubator/{chowdown/2.0.7 => cherry/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/cherry/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/cherry/2.0.8/questions.yaml rename incubator/cherry/{2.0.7 => 2.0.8}/templates/_config.tpl (100%) rename incubator/cherry/{2.0.7 => 2.0.8}/templates/_secrets.tpl (100%) rename incubator/cherry/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{chowdown/2.0.7 => cherry/2.0.8}/values.yaml (100%) delete mode 100644 incubator/chowdown/2.0.7/CHANGELOG.md delete mode 100644 incubator/chowdown/2.0.7/Chart.yaml delete mode 100644 incubator/chowdown/2.0.7/app-changelog.md delete mode 100644 incubator/chowdown/2.0.7/app-readme.md delete mode 100644 incubator/chowdown/2.0.7/questions.yaml create mode 100644 incubator/chowdown/2.0.8/CHANGELOG.md create mode 100644 incubator/chowdown/2.0.8/Chart.yaml rename incubator/chowdown/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/chowdown/2.0.8/app-changelog.md create mode 100644 incubator/chowdown/2.0.8/app-readme.md rename incubator/{ciao/2.0.10 => chowdown/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/chowdown/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/chowdown/2.0.8/questions.yaml rename incubator/chowdown/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{ciao/2.0.10 => chowdown/2.0.8}/values.yaml (100%) delete mode 100644 incubator/ciao/2.0.10/CHANGELOG.md delete mode 100644 incubator/ciao/2.0.10/Chart.yaml delete mode 100644 incubator/ciao/2.0.10/app-changelog.md delete mode 100644 incubator/ciao/2.0.10/questions.yaml create mode 100644 incubator/ciao/2.0.11/CHANGELOG.md create mode 100644 incubator/ciao/2.0.11/Chart.yaml rename incubator/ciao/{2.0.10 => 2.0.11}/README.md (100%) create mode 100644 incubator/ciao/2.0.11/app-changelog.md rename incubator/ciao/{2.0.10 => 2.0.11}/app-readme.md (100%) rename incubator/{cleanarr/2.0.8 => ciao/2.0.11}/charts/common-11.1.2.tgz (100%) rename incubator/ciao/{2.0.10 => 2.0.11}/ix_values.yaml (100%) create mode 100644 incubator/ciao/2.0.11/questions.yaml rename incubator/ciao/{2.0.10 => 2.0.11}/templates/common.yaml (100%) rename incubator/{cleanarr/2.0.8 => ciao/2.0.11}/values.yaml (100%) delete mode 100644 incubator/cleanarr/2.0.8/CHANGELOG.md delete mode 100644 incubator/cleanarr/2.0.8/Chart.yaml delete mode 100644 incubator/cleanarr/2.0.8/app-changelog.md delete mode 100644 incubator/cleanarr/2.0.8/questions.yaml create mode 100644 incubator/cleanarr/2.0.9/CHANGELOG.md create mode 100644 incubator/cleanarr/2.0.9/Chart.yaml rename incubator/cleanarr/{2.0.8 => 2.0.9}/README.md (100%) create mode 100644 incubator/cleanarr/2.0.9/app-changelog.md rename incubator/cleanarr/{2.0.8 => 2.0.9}/app-readme.md (100%) rename incubator/{clipplex/0.0.4 => cleanarr/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/cleanarr/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/cleanarr/2.0.9/questions.yaml rename incubator/cleanarr/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{clipplex/0.0.4 => cleanarr/2.0.9}/values.yaml (100%) delete mode 100644 incubator/clipplex/0.0.4/CHANGELOG.md delete mode 100644 incubator/clipplex/0.0.4/Chart.yaml delete mode 100644 incubator/clipplex/0.0.4/app-changelog.md delete mode 100644 incubator/clipplex/0.0.4/app-readme.md delete mode 100644 incubator/clipplex/0.0.4/questions.yaml create mode 100644 incubator/clipplex/0.0.5/CHANGELOG.md create mode 100644 incubator/clipplex/0.0.5/Chart.yaml rename incubator/clipplex/{0.0.4 => 0.0.5}/README.md (100%) create mode 100644 incubator/clipplex/0.0.5/app-changelog.md create mode 100644 incubator/clipplex/0.0.5/app-readme.md rename incubator/{cloudbeaver/2.0.12 => clipplex/0.0.5}/charts/common-11.1.2.tgz (100%) rename incubator/clipplex/{0.0.4 => 0.0.5}/ix_values.yaml (100%) create mode 100644 incubator/clipplex/0.0.5/questions.yaml rename incubator/clipplex/{0.0.4 => 0.0.5}/templates/common.yaml (100%) rename incubator/{cloudbeaver/2.0.12 => clipplex/0.0.5}/values.yaml (100%) delete mode 100644 incubator/cloudbeaver/2.0.12/CHANGELOG.md delete mode 100644 incubator/cloudbeaver/2.0.12/Chart.yaml delete mode 100644 incubator/cloudbeaver/2.0.12/app-changelog.md create mode 100644 incubator/cloudbeaver/2.0.13/CHANGELOG.md create mode 100644 incubator/cloudbeaver/2.0.13/Chart.yaml rename incubator/cloudbeaver/{2.0.12 => 2.0.13}/README.md (100%) create mode 100644 incubator/cloudbeaver/2.0.13/app-changelog.md rename incubator/cloudbeaver/{2.0.12 => 2.0.13}/app-readme.md (100%) rename incubator/{cloudcommander/2.0.9 => cloudbeaver/2.0.13}/charts/common-11.1.2.tgz (100%) rename incubator/cloudbeaver/{2.0.12 => 2.0.13}/ix_values.yaml (100%) rename incubator/cloudbeaver/{2.0.12 => 2.0.13}/questions.yaml (100%) rename incubator/cloudbeaver/{2.0.12 => 2.0.13}/templates/common.yaml (100%) rename incubator/{cloudcommander/2.0.9 => cloudbeaver/2.0.13}/values.yaml (100%) create mode 100644 incubator/cloudcommander/2.0.10/CHANGELOG.md create mode 100644 incubator/cloudcommander/2.0.10/Chart.yaml rename incubator/cloudcommander/{2.0.9 => 2.0.10}/README.md (100%) create mode 100644 incubator/cloudcommander/2.0.10/app-changelog.md rename incubator/cloudcommander/{2.0.9 => 2.0.10}/app-readme.md (100%) rename incubator/{cloudreve/2.0.7 => cloudcommander/2.0.10}/charts/common-11.1.2.tgz (100%) rename incubator/cloudcommander/{2.0.9 => 2.0.10}/ix_values.yaml (100%) rename incubator/cloudcommander/{2.0.9 => 2.0.10}/questions.yaml (100%) rename incubator/cloudcommander/{2.0.9 => 2.0.10}/templates/common.yaml (100%) rename incubator/{cloudreve/2.0.7 => cloudcommander/2.0.10}/values.yaml (100%) delete mode 100644 incubator/cloudcommander/2.0.9/CHANGELOG.md delete mode 100644 incubator/cloudcommander/2.0.9/Chart.yaml delete mode 100644 incubator/cloudcommander/2.0.9/app-changelog.md delete mode 100644 incubator/cloudreve/2.0.7/CHANGELOG.md delete mode 100644 incubator/cloudreve/2.0.7/Chart.yaml delete mode 100644 incubator/cloudreve/2.0.7/app-changelog.md delete mode 100644 incubator/cloudreve/2.0.7/app-readme.md delete mode 100644 incubator/cloudreve/2.0.7/questions.yaml create mode 100644 incubator/cloudreve/2.0.8/CHANGELOG.md create mode 100644 incubator/cloudreve/2.0.8/Chart.yaml rename incubator/cloudreve/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/cloudreve/2.0.8/app-changelog.md create mode 100644 incubator/cloudreve/2.0.8/app-readme.md rename incubator/{convos => cloudreve}/2.0.8/charts/common-11.1.2.tgz (100%) rename incubator/cloudreve/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/cloudreve/2.0.8/questions.yaml rename incubator/cloudreve/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{convos => cloudreve}/2.0.8/values.yaml (100%) delete mode 100644 incubator/convos/2.0.8/CHANGELOG.md delete mode 100644 incubator/convos/2.0.8/Chart.yaml delete mode 100644 incubator/convos/2.0.8/app-changelog.md delete mode 100644 incubator/convos/2.0.8/app-readme.md delete mode 100644 incubator/convos/2.0.8/questions.yaml create mode 100644 incubator/convos/2.0.9/CHANGELOG.md create mode 100644 incubator/convos/2.0.9/Chart.yaml rename incubator/convos/{2.0.8 => 2.0.9}/README.md (100%) create mode 100644 incubator/convos/2.0.9/app-changelog.md create mode 100644 incubator/convos/2.0.9/app-readme.md rename incubator/{cowyo/2.0.7 => convos/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/convos/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/convos/2.0.9/questions.yaml rename incubator/convos/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{cowyo/2.0.7 => convos/2.0.9}/values.yaml (100%) delete mode 100644 incubator/cowyo/2.0.7/CHANGELOG.md delete mode 100644 incubator/cowyo/2.0.7/Chart.yaml delete mode 100644 incubator/cowyo/2.0.7/app-changelog.md delete mode 100644 incubator/cowyo/2.0.7/app-readme.md delete mode 100644 incubator/cowyo/2.0.7/questions.yaml create mode 100644 incubator/cowyo/2.0.8/CHANGELOG.md create mode 100644 incubator/cowyo/2.0.8/Chart.yaml rename incubator/cowyo/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/cowyo/2.0.8/app-changelog.md create mode 100644 incubator/cowyo/2.0.8/app-readme.md rename incubator/{cryptpad/2.0.18 => cowyo/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/cowyo/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/cowyo/2.0.8/questions.yaml rename incubator/cowyo/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{cryptpad/2.0.18 => cowyo/2.0.8}/values.yaml (100%) delete mode 100644 incubator/cryptpad/2.0.18/CHANGELOG.md delete mode 100644 incubator/cryptpad/2.0.18/Chart.yaml delete mode 100644 incubator/cryptpad/2.0.18/app-changelog.md create mode 100644 incubator/cryptpad/2.0.19/CHANGELOG.md create mode 100644 incubator/cryptpad/2.0.19/Chart.yaml rename incubator/cryptpad/{2.0.18 => 2.0.19}/README.md (100%) create mode 100644 incubator/cryptpad/2.0.19/app-changelog.md rename incubator/cryptpad/{2.0.18 => 2.0.19}/app-readme.md (100%) rename incubator/{cups-server/3.0.15 => cryptpad/2.0.19}/charts/common-11.1.2.tgz (100%) rename incubator/cryptpad/{2.0.18 => 2.0.19}/ix_values.yaml (100%) rename incubator/cryptpad/{2.0.18 => 2.0.19}/questions.yaml (100%) rename incubator/cryptpad/{2.0.18 => 2.0.19}/templates/common.yaml (100%) rename incubator/{cups-server/3.0.15 => cryptpad/2.0.19}/values.yaml (100%) delete mode 100644 incubator/cups-server/3.0.15/CHANGELOG.md delete mode 100644 incubator/cups-server/3.0.15/Chart.yaml delete mode 100644 incubator/cups-server/3.0.15/app-changelog.md delete mode 100644 incubator/cups-server/3.0.15/questions.yaml create mode 100644 incubator/cups-server/3.0.16/CHANGELOG.md create mode 100644 incubator/cups-server/3.0.16/Chart.yaml rename incubator/cups-server/{3.0.15 => 3.0.16}/README.md (100%) create mode 100644 incubator/cups-server/3.0.16/app-changelog.md rename incubator/cups-server/{3.0.15 => 3.0.16}/app-readme.md (100%) rename incubator/{damselfly/2.0.11 => cups-server/3.0.16}/charts/common-11.1.2.tgz (100%) rename incubator/cups-server/{3.0.15 => 3.0.16}/ix_values.yaml (100%) create mode 100644 incubator/cups-server/3.0.16/questions.yaml rename incubator/cups-server/{3.0.15 => 3.0.16}/templates/common.yaml (100%) rename incubator/{damselfly/2.0.11 => cups-server/3.0.16}/values.yaml (100%) delete mode 100644 incubator/damselfly/2.0.11/CHANGELOG.md delete mode 100644 incubator/damselfly/2.0.11/Chart.yaml delete mode 100644 incubator/damselfly/2.0.11/app-changelog.md delete mode 100644 incubator/damselfly/2.0.11/app-readme.md delete mode 100644 incubator/damselfly/2.0.11/questions.yaml create mode 100644 incubator/damselfly/2.0.12/CHANGELOG.md create mode 100644 incubator/damselfly/2.0.12/Chart.yaml rename incubator/damselfly/{2.0.11 => 2.0.12}/README.md (100%) create mode 100644 incubator/damselfly/2.0.12/app-changelog.md create mode 100644 incubator/damselfly/2.0.12/app-readme.md rename incubator/{dashmachine/2.0.7 => damselfly/2.0.12}/charts/common-11.1.2.tgz (100%) rename incubator/damselfly/{2.0.11 => 2.0.12}/ix_values.yaml (100%) create mode 100644 incubator/damselfly/2.0.12/questions.yaml rename incubator/damselfly/{2.0.11 => 2.0.12}/templates/common.yaml (100%) rename incubator/{dashmachine/2.0.7 => damselfly/2.0.12}/values.yaml (100%) delete mode 100644 incubator/dashmachine/2.0.7/CHANGELOG.md delete mode 100644 incubator/dashmachine/2.0.7/Chart.yaml delete mode 100644 incubator/dashmachine/2.0.7/app-changelog.md delete mode 100644 incubator/dashmachine/2.0.7/app-readme.md delete mode 100644 incubator/dashmachine/2.0.7/questions.yaml create mode 100644 incubator/dashmachine/2.0.8/CHANGELOG.md create mode 100644 incubator/dashmachine/2.0.8/Chart.yaml rename incubator/dashmachine/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/dashmachine/2.0.8/app-changelog.md create mode 100644 incubator/dashmachine/2.0.8/app-readme.md rename incubator/{dropbox-by-otherguy/2.0.7 => dashmachine/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/dashmachine/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/dashmachine/2.0.8/questions.yaml rename incubator/dashmachine/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{dropbox-by-otherguy/2.0.7 => dashmachine/2.0.8}/values.yaml (100%) delete mode 100644 incubator/dropbox-by-otherguy/2.0.7/CHANGELOG.md delete mode 100644 incubator/dropbox-by-otherguy/2.0.7/Chart.yaml delete mode 100644 incubator/dropbox-by-otherguy/2.0.7/app-changelog.md delete mode 100644 incubator/dropbox-by-otherguy/2.0.7/app-readme.md delete mode 100644 incubator/dropbox-by-otherguy/2.0.7/questions.yaml create mode 100644 incubator/dropbox-by-otherguy/2.0.8/CHANGELOG.md create mode 100644 incubator/dropbox-by-otherguy/2.0.8/Chart.yaml rename incubator/dropbox-by-otherguy/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/dropbox-by-otherguy/2.0.8/app-changelog.md create mode 100644 incubator/dropbox-by-otherguy/2.0.8/app-readme.md rename incubator/{ersatztv/0.0.2 => dropbox-by-otherguy/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/dropbox-by-otherguy/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/dropbox-by-otherguy/2.0.8/questions.yaml rename incubator/dropbox-by-otherguy/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{ersatztv/0.0.2 => dropbox-by-otherguy/2.0.8}/values.yaml (100%) delete mode 100644 incubator/ersatztv/0.0.2/CHANGELOG.md delete mode 100644 incubator/ersatztv/0.0.2/Chart.yaml delete mode 100644 incubator/ersatztv/0.0.2/app-changelog.md create mode 100644 incubator/ersatztv/0.0.3/CHANGELOG.md create mode 100644 incubator/ersatztv/0.0.3/Chart.yaml rename incubator/ersatztv/{0.0.2 => 0.0.3}/README.md (100%) create mode 100644 incubator/ersatztv/0.0.3/app-changelog.md rename incubator/ersatztv/{0.0.2 => 0.0.3}/app-readme.md (100%) rename incubator/{etesync/3.0.21 => ersatztv/0.0.3}/charts/common-11.1.2.tgz (100%) rename incubator/ersatztv/{0.0.2 => 0.0.3}/ix_values.yaml (100%) rename incubator/ersatztv/{0.0.2 => 0.0.3}/questions.yaml (100%) rename incubator/ersatztv/{0.0.2 => 0.0.3}/templates/common.yaml (100%) rename incubator/{etesync/3.0.21 => ersatztv/0.0.3}/values.yaml (100%) delete mode 100644 incubator/etesync/3.0.21/CHANGELOG.md delete mode 100644 incubator/etesync/3.0.21/Chart.yaml delete mode 100644 incubator/etesync/3.0.21/app-changelog.md create mode 100644 incubator/etesync/3.0.22/CHANGELOG.md create mode 100644 incubator/etesync/3.0.22/Chart.yaml rename incubator/etesync/{3.0.21 => 3.0.22}/README.md (100%) create mode 100644 incubator/etesync/3.0.22/app-changelog.md rename incubator/etesync/{3.0.21 => 3.0.22}/app-readme.md (100%) rename incubator/{ethercalc/2.0.7 => etesync/3.0.22}/charts/common-11.1.2.tgz (100%) rename incubator/etesync/{3.0.21 => 3.0.22}/charts/postgresql-11.0.22.tgz (100%) rename incubator/etesync/{3.0.21 => 3.0.22}/charts/redis-5.0.29.tgz (100%) rename incubator/etesync/{3.0.21 => 3.0.22}/ix_values.yaml (100%) rename incubator/etesync/{3.0.21 => 3.0.22}/questions.yaml (100%) rename incubator/etesync/{3.0.21 => 3.0.22}/templates/_secret.tpl (100%) rename incubator/etesync/{3.0.21 => 3.0.22}/templates/common.yaml (100%) rename incubator/{ethercalc/2.0.7 => etesync/3.0.22}/values.yaml (100%) delete mode 100644 incubator/ethercalc/2.0.7/CHANGELOG.md delete mode 100644 incubator/ethercalc/2.0.7/Chart.yaml delete mode 100644 incubator/ethercalc/2.0.7/app-changelog.md delete mode 100644 incubator/ethercalc/2.0.7/app-readme.md delete mode 100644 incubator/ethercalc/2.0.7/questions.yaml create mode 100644 incubator/ethercalc/2.0.8/CHANGELOG.md create mode 100644 incubator/ethercalc/2.0.8/Chart.yaml rename incubator/ethercalc/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/ethercalc/2.0.8/app-changelog.md create mode 100644 incubator/ethercalc/2.0.8/app-readme.md rename incubator/{euterpe/3.0.8 => ethercalc/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/ethercalc/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/ethercalc/2.0.8/questions.yaml rename incubator/ethercalc/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{euterpe/3.0.8 => ethercalc/2.0.8}/values.yaml (100%) delete mode 100644 incubator/euterpe/3.0.8/CHANGELOG.md delete mode 100644 incubator/euterpe/3.0.8/Chart.yaml delete mode 100644 incubator/euterpe/3.0.8/app-changelog.md delete mode 100644 incubator/euterpe/3.0.8/app-readme.md delete mode 100644 incubator/euterpe/3.0.8/questions.yaml create mode 100644 incubator/euterpe/3.0.9/CHANGELOG.md create mode 100644 incubator/euterpe/3.0.9/Chart.yaml rename incubator/euterpe/{3.0.8 => 3.0.9}/README.md (100%) create mode 100644 incubator/euterpe/3.0.9/app-changelog.md create mode 100644 incubator/euterpe/3.0.9/app-readme.md rename incubator/{explainshell/2.0.7 => euterpe/3.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/euterpe/{3.0.8 => 3.0.9}/ix_values.yaml (100%) create mode 100644 incubator/euterpe/3.0.9/questions.yaml rename incubator/euterpe/{3.0.8 => 3.0.9}/templates/_secret.tpl (100%) rename incubator/euterpe/{3.0.8 => 3.0.9}/templates/common.yaml (100%) rename incubator/{explainshell/2.0.7 => euterpe/3.0.9}/values.yaml (100%) delete mode 100644 incubator/explainshell/2.0.7/CHANGELOG.md delete mode 100644 incubator/explainshell/2.0.7/Chart.yaml delete mode 100644 incubator/explainshell/2.0.7/app-changelog.md delete mode 100644 incubator/explainshell/2.0.7/app-readme.md delete mode 100644 incubator/explainshell/2.0.7/questions.yaml create mode 100644 incubator/explainshell/2.0.8/CHANGELOG.md create mode 100644 incubator/explainshell/2.0.8/Chart.yaml rename incubator/explainshell/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/explainshell/2.0.8/app-changelog.md create mode 100644 incubator/explainshell/2.0.8/app-readme.md rename incubator/{factorioservermanager/2.0.7 => explainshell/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/explainshell/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/explainshell/2.0.8/questions.yaml rename incubator/explainshell/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{factorioservermanager/2.0.7 => explainshell/2.0.8}/values.yaml (100%) delete mode 100644 incubator/factorioservermanager/2.0.7/CHANGELOG.md delete mode 100644 incubator/factorioservermanager/2.0.7/Chart.yaml delete mode 100644 incubator/factorioservermanager/2.0.7/app-changelog.md delete mode 100644 incubator/factorioservermanager/2.0.7/app-readme.md delete mode 100644 incubator/factorioservermanager/2.0.7/questions.yaml create mode 100644 incubator/factorioservermanager/2.0.8/CHANGELOG.md create mode 100644 incubator/factorioservermanager/2.0.8/Chart.yaml rename incubator/factorioservermanager/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/factorioservermanager/2.0.8/app-changelog.md create mode 100644 incubator/factorioservermanager/2.0.8/app-readme.md rename incubator/{facturascripts/2.0.7 => factorioservermanager/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/factorioservermanager/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/factorioservermanager/2.0.8/questions.yaml rename incubator/factorioservermanager/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{facturascripts/2.0.7 => factorioservermanager/2.0.8}/values.yaml (100%) delete mode 100644 incubator/facturascripts/2.0.7/CHANGELOG.md delete mode 100644 incubator/facturascripts/2.0.7/Chart.yaml delete mode 100644 incubator/facturascripts/2.0.7/app-changelog.md delete mode 100644 incubator/facturascripts/2.0.7/app-readme.md delete mode 100644 incubator/facturascripts/2.0.7/questions.yaml create mode 100644 incubator/facturascripts/2.0.8/CHANGELOG.md create mode 100644 incubator/facturascripts/2.0.8/Chart.yaml rename incubator/facturascripts/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/facturascripts/2.0.8/app-changelog.md create mode 100644 incubator/facturascripts/2.0.8/app-readme.md rename incubator/{farmos/2.0.11 => facturascripts/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/facturascripts/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/facturascripts/2.0.8/questions.yaml rename incubator/facturascripts/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{farmos/2.0.11 => facturascripts/2.0.8}/values.yaml (100%) delete mode 100644 incubator/farmos/2.0.11/CHANGELOG.md delete mode 100644 incubator/farmos/2.0.11/Chart.yaml delete mode 100644 incubator/farmos/2.0.11/app-changelog.md delete mode 100644 incubator/farmos/2.0.11/app-readme.md delete mode 100644 incubator/farmos/2.0.11/questions.yaml create mode 100644 incubator/farmos/2.0.12/CHANGELOG.md create mode 100644 incubator/farmos/2.0.12/Chart.yaml rename incubator/farmos/{2.0.11 => 2.0.12}/README.md (100%) create mode 100644 incubator/farmos/2.0.12/app-changelog.md create mode 100644 incubator/farmos/2.0.12/app-readme.md rename incubator/{fenrus/2.0.7 => farmos/2.0.12}/charts/common-11.1.2.tgz (100%) rename incubator/farmos/{2.0.11 => 2.0.12}/ix_values.yaml (100%) create mode 100644 incubator/farmos/2.0.12/questions.yaml rename incubator/farmos/{2.0.11 => 2.0.12}/templates/common.yaml (100%) rename incubator/{fenrus/2.0.7 => farmos/2.0.12}/values.yaml (100%) delete mode 100644 incubator/fenrus/2.0.7/CHANGELOG.md delete mode 100644 incubator/fenrus/2.0.7/Chart.yaml delete mode 100644 incubator/fenrus/2.0.7/app-changelog.md delete mode 100644 incubator/fenrus/2.0.7/app-readme.md delete mode 100644 incubator/fenrus/2.0.7/questions.yaml create mode 100644 incubator/fenrus/2.0.8/CHANGELOG.md create mode 100644 incubator/fenrus/2.0.8/Chart.yaml rename incubator/fenrus/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/fenrus/2.0.8/app-changelog.md create mode 100644 incubator/fenrus/2.0.8/app-readme.md rename incubator/{fileshelter => fenrus}/2.0.8/charts/common-11.1.2.tgz (100%) rename incubator/fenrus/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/fenrus/2.0.8/questions.yaml rename incubator/fenrus/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{fileshelter => fenrus}/2.0.8/values.yaml (100%) delete mode 100644 incubator/fileshelter/2.0.8/CHANGELOG.md delete mode 100644 incubator/fileshelter/2.0.8/Chart.yaml delete mode 100644 incubator/fileshelter/2.0.8/app-changelog.md create mode 100644 incubator/fileshelter/2.0.9/CHANGELOG.md create mode 100644 incubator/fileshelter/2.0.9/Chart.yaml rename incubator/fileshelter/{2.0.8 => 2.0.9}/README.md (100%) create mode 100644 incubator/fileshelter/2.0.9/app-changelog.md rename incubator/fileshelter/{2.0.8 => 2.0.9}/app-readme.md (100%) rename incubator/{filestash/2.0.13 => fileshelter/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/fileshelter/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/fileshelter/2.0.9/questions.yaml rename incubator/fileshelter/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{filestash/2.0.13 => fileshelter/2.0.9}/values.yaml (100%) delete mode 100644 incubator/filestash/2.0.13/CHANGELOG.md delete mode 100644 incubator/filestash/2.0.13/Chart.yaml delete mode 100644 incubator/filestash/2.0.13/app-changelog.md delete mode 100644 incubator/filestash/2.0.13/app-readme.md delete mode 100644 incubator/filestash/2.0.13/questions.yaml create mode 100644 incubator/filestash/2.0.14/CHANGELOG.md create mode 100644 incubator/filestash/2.0.14/Chart.yaml rename incubator/filestash/{2.0.13 => 2.0.14}/README.md (100%) create mode 100644 incubator/filestash/2.0.14/app-changelog.md create mode 100644 incubator/filestash/2.0.14/app-readme.md rename incubator/{fireshare/2.0.9 => filestash/2.0.14}/charts/common-11.1.2.tgz (100%) rename incubator/filestash/{2.0.13 => 2.0.14}/ix_values.yaml (100%) create mode 100644 incubator/filestash/2.0.14/questions.yaml rename incubator/filestash/{2.0.13 => 2.0.14}/templates/common.yaml (100%) rename incubator/{fireshare/2.0.9 => filestash/2.0.14}/values.yaml (100%) create mode 100644 incubator/fireshare/2.0.10/CHANGELOG.md create mode 100644 incubator/fireshare/2.0.10/Chart.yaml rename incubator/fireshare/{2.0.9 => 2.0.10}/README.md (100%) create mode 100644 incubator/fireshare/2.0.10/app-changelog.md create mode 100644 incubator/fireshare/2.0.10/app-readme.md rename incubator/{flame/2.0.7 => fireshare/2.0.10}/charts/common-11.1.2.tgz (100%) rename incubator/fireshare/{2.0.9 => 2.0.10}/ix_values.yaml (100%) create mode 100644 incubator/fireshare/2.0.10/questions.yaml rename incubator/fireshare/{2.0.9 => 2.0.10}/templates/_secrets.tpl (100%) rename incubator/fireshare/{2.0.9 => 2.0.10}/templates/common.yaml (100%) rename incubator/{flame/2.0.7 => fireshare/2.0.10}/values.yaml (100%) delete mode 100644 incubator/fireshare/2.0.9/CHANGELOG.md delete mode 100644 incubator/fireshare/2.0.9/Chart.yaml delete mode 100644 incubator/fireshare/2.0.9/app-changelog.md delete mode 100644 incubator/fireshare/2.0.9/app-readme.md delete mode 100644 incubator/fireshare/2.0.9/questions.yaml delete mode 100644 incubator/flame/2.0.7/CHANGELOG.md delete mode 100644 incubator/flame/2.0.7/Chart.yaml delete mode 100644 incubator/flame/2.0.7/app-changelog.md delete mode 100644 incubator/flame/2.0.7/app-readme.md delete mode 100644 incubator/flame/2.0.7/questions.yaml create mode 100644 incubator/flame/2.0.8/CHANGELOG.md create mode 100644 incubator/flame/2.0.8/Chart.yaml rename incubator/flame/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/flame/2.0.8/app-changelog.md create mode 100644 incubator/flame/2.0.8/app-readme.md rename incubator/{flatnotes/2.0.7 => flame/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/flame/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/flame/2.0.8/questions.yaml rename incubator/flame/{2.0.7 => 2.0.8}/templates/_integration.tpl (100%) rename incubator/flame/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{flatnotes/2.0.7 => flame/2.0.8}/values.yaml (100%) delete mode 100644 incubator/flatnotes/2.0.7/CHANGELOG.md delete mode 100644 incubator/flatnotes/2.0.7/Chart.yaml delete mode 100644 incubator/flatnotes/2.0.7/app-changelog.md delete mode 100644 incubator/flatnotes/2.0.7/app-readme.md delete mode 100644 incubator/flatnotes/2.0.7/questions.yaml create mode 100644 incubator/flatnotes/2.0.8/CHANGELOG.md create mode 100644 incubator/flatnotes/2.0.8/Chart.yaml rename incubator/flatnotes/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/flatnotes/2.0.8/app-changelog.md create mode 100644 incubator/flatnotes/2.0.8/app-readme.md rename incubator/{flextv/2.0.7 => flatnotes/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/flatnotes/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/flatnotes/2.0.8/questions.yaml rename incubator/flatnotes/{2.0.7 => 2.0.8}/templates/_secrets.tpl (100%) rename incubator/flatnotes/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{flextv/2.0.7 => flatnotes/2.0.8}/values.yaml (100%) delete mode 100644 incubator/flextv/2.0.7/CHANGELOG.md delete mode 100644 incubator/flextv/2.0.7/Chart.yaml delete mode 100644 incubator/flextv/2.0.7/app-changelog.md delete mode 100644 incubator/flextv/2.0.7/app-readme.md delete mode 100644 incubator/flextv/2.0.7/questions.yaml create mode 100644 incubator/flextv/2.0.8/CHANGELOG.md create mode 100644 incubator/flextv/2.0.8/Chart.yaml rename incubator/flextv/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/flextv/2.0.8/app-changelog.md create mode 100644 incubator/flextv/2.0.8/app-readme.md rename incubator/{fotosho/2.0.7 => flextv/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/flextv/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/flextv/2.0.8/questions.yaml rename incubator/flextv/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{fotosho/2.0.7 => flextv/2.0.8}/values.yaml (100%) delete mode 100644 incubator/fotosho/2.0.7/CHANGELOG.md delete mode 100644 incubator/fotosho/2.0.7/Chart.yaml delete mode 100644 incubator/fotosho/2.0.7/app-changelog.md delete mode 100644 incubator/fotosho/2.0.7/app-readme.md delete mode 100644 incubator/fotosho/2.0.7/questions.yaml create mode 100644 incubator/fotosho/2.0.8/CHANGELOG.md create mode 100644 incubator/fotosho/2.0.8/Chart.yaml rename incubator/fotosho/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/fotosho/2.0.8/app-changelog.md create mode 100644 incubator/fotosho/2.0.8/app-readme.md rename incubator/{frigate/6.0.0 => fotosho/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/fotosho/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/fotosho/2.0.8/questions.yaml rename incubator/fotosho/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{frigate/6.0.0 => fotosho/2.0.8}/values.yaml (100%) delete mode 100644 incubator/frigate/6.0.0/CHANGELOG.md delete mode 100644 incubator/frigate/6.0.0/Chart.yaml delete mode 100644 incubator/frigate/6.0.0/app-changelog.md delete mode 100644 incubator/frigate/6.0.0/questions.yaml create mode 100644 incubator/frigate/6.0.1/CHANGELOG.md create mode 100644 incubator/frigate/6.0.1/Chart.yaml rename incubator/frigate/{6.0.0 => 6.0.1}/README.md (100%) create mode 100644 incubator/frigate/6.0.1/app-changelog.md rename incubator/frigate/{6.0.0 => 6.0.1}/app-readme.md (100%) rename incubator/{funkwhale/2.1.7 => frigate/6.0.1}/charts/common-11.1.2.tgz (100%) rename incubator/frigate/{6.0.0 => 6.0.1}/ix_values.yaml (100%) create mode 100644 incubator/frigate/6.0.1/questions.yaml rename incubator/frigate/{6.0.0 => 6.0.1}/templates/_configmap.tpl (100%) rename incubator/frigate/{6.0.0 => 6.0.1}/templates/common.yaml (100%) rename incubator/{funkwhale/2.1.7 => frigate/6.0.1}/values.yaml (100%) delete mode 100644 incubator/funkwhale/2.1.7/CHANGELOG.md delete mode 100644 incubator/funkwhale/2.1.7/Chart.yaml delete mode 100644 incubator/funkwhale/2.1.7/app-changelog.md delete mode 100644 incubator/funkwhale/2.1.7/app-readme.md delete mode 100644 incubator/funkwhale/2.1.7/questions.yaml create mode 100644 incubator/funkwhale/2.1.8/CHANGELOG.md create mode 100644 incubator/funkwhale/2.1.8/Chart.yaml rename incubator/funkwhale/{2.1.7 => 2.1.8}/README.md (100%) create mode 100644 incubator/funkwhale/2.1.8/app-changelog.md create mode 100644 incubator/funkwhale/2.1.8/app-readme.md rename incubator/{glauth/2.0.7 => funkwhale/2.1.8}/charts/common-11.1.2.tgz (100%) rename incubator/funkwhale/{2.1.7 => 2.1.8}/ix_values.yaml (100%) create mode 100644 incubator/funkwhale/2.1.8/questions.yaml rename incubator/funkwhale/{2.1.7 => 2.1.8}/templates/_secret.tpl (100%) rename incubator/funkwhale/{2.1.7 => 2.1.8}/templates/common.yaml (100%) rename incubator/{glauth/2.0.7 => funkwhale/2.1.8}/values.yaml (100%) delete mode 100644 incubator/glauth/2.0.7/CHANGELOG.md delete mode 100644 incubator/glauth/2.0.7/Chart.yaml delete mode 100644 incubator/glauth/2.0.7/app-changelog.md delete mode 100644 incubator/glauth/2.0.7/app-readme.md delete mode 100644 incubator/glauth/2.0.7/questions.yaml create mode 100644 incubator/glauth/2.0.8/CHANGELOG.md create mode 100644 incubator/glauth/2.0.8/Chart.yaml rename incubator/glauth/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/glauth/2.0.8/app-changelog.md create mode 100644 incubator/glauth/2.0.8/app-readme.md rename incubator/{gridcoinwalletgui => glauth}/2.0.8/charts/common-11.1.2.tgz (100%) rename incubator/glauth/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/glauth/2.0.8/questions.yaml rename incubator/glauth/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{gridcoinwalletgui => glauth}/2.0.8/values.yaml (100%) delete mode 100644 incubator/gridcoinwalletgui/2.0.8/CHANGELOG.md delete mode 100644 incubator/gridcoinwalletgui/2.0.8/Chart.yaml delete mode 100644 incubator/gridcoinwalletgui/2.0.8/app-changelog.md delete mode 100644 incubator/gridcoinwalletgui/2.0.8/app-readme.md delete mode 100644 incubator/gridcoinwalletgui/2.0.8/questions.yaml create mode 100644 incubator/gridcoinwalletgui/2.0.9/CHANGELOG.md create mode 100644 incubator/gridcoinwalletgui/2.0.9/Chart.yaml rename incubator/gridcoinwalletgui/{2.0.8 => 2.0.9}/README.md (100%) create mode 100644 incubator/gridcoinwalletgui/2.0.9/app-changelog.md create mode 100644 incubator/gridcoinwalletgui/2.0.9/app-readme.md rename incubator/{hastebin/2.0.7 => gridcoinwalletgui/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/gridcoinwalletgui/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/gridcoinwalletgui/2.0.9/questions.yaml rename incubator/gridcoinwalletgui/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{hastebin/2.0.7 => gridcoinwalletgui/2.0.9}/values.yaml (100%) delete mode 100644 incubator/hastebin/2.0.7/CHANGELOG.md delete mode 100644 incubator/hastebin/2.0.7/Chart.yaml delete mode 100644 incubator/hastebin/2.0.7/app-changelog.md delete mode 100644 incubator/hastebin/2.0.7/app-readme.md delete mode 100644 incubator/hastebin/2.0.7/questions.yaml create mode 100644 incubator/hastebin/2.0.8/CHANGELOG.md create mode 100644 incubator/hastebin/2.0.8/Chart.yaml rename incubator/hastebin/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/hastebin/2.0.8/app-changelog.md create mode 100644 incubator/hastebin/2.0.8/app-readme.md rename incubator/{hoobs/2.0.7 => hastebin/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/hastebin/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/hastebin/2.0.8/questions.yaml rename incubator/hastebin/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{hoobs/2.0.7 => hastebin/2.0.8}/values.yaml (100%) delete mode 100644 incubator/hoobs/2.0.7/CHANGELOG.md delete mode 100644 incubator/hoobs/2.0.7/Chart.yaml delete mode 100644 incubator/hoobs/2.0.7/app-changelog.md delete mode 100644 incubator/hoobs/2.0.7/app-readme.md delete mode 100644 incubator/hoobs/2.0.7/questions.yaml create mode 100644 incubator/hoobs/2.0.8/CHANGELOG.md create mode 100644 incubator/hoobs/2.0.8/Chart.yaml rename incubator/hoobs/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/hoobs/2.0.8/app-changelog.md create mode 100644 incubator/hoobs/2.0.8/app-readme.md rename incubator/{icloudpd/2.0.12 => hoobs/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/hoobs/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/hoobs/2.0.8/questions.yaml rename incubator/hoobs/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{icloudpd/2.0.12 => hoobs/2.0.8}/values.yaml (100%) delete mode 100644 incubator/icloudpd/2.0.12/CHANGELOG.md delete mode 100644 incubator/icloudpd/2.0.12/Chart.yaml delete mode 100644 incubator/icloudpd/2.0.12/app-changelog.md delete mode 100644 incubator/icloudpd/2.0.12/app-readme.md delete mode 100644 incubator/icloudpd/2.0.12/questions.yaml create mode 100644 incubator/icloudpd/2.0.13/CHANGELOG.md create mode 100644 incubator/icloudpd/2.0.13/Chart.yaml rename incubator/icloudpd/{2.0.12 => 2.0.13}/README.md (100%) create mode 100644 incubator/icloudpd/2.0.13/app-changelog.md create mode 100644 incubator/icloudpd/2.0.13/app-readme.md rename incubator/{imgpush/2.0.7 => icloudpd/2.0.13}/charts/common-11.1.2.tgz (100%) rename incubator/icloudpd/{2.0.12 => 2.0.13}/ix_values.yaml (100%) create mode 100644 incubator/icloudpd/2.0.13/questions.yaml rename incubator/icloudpd/{2.0.12 => 2.0.13}/templates/common.yaml (100%) rename incubator/{imgpush/2.0.7 => icloudpd/2.0.13}/values.yaml (100%) delete mode 100644 incubator/imgpush/2.0.7/CHANGELOG.md delete mode 100644 incubator/imgpush/2.0.7/Chart.yaml delete mode 100644 incubator/imgpush/2.0.7/app-changelog.md delete mode 100644 incubator/imgpush/2.0.7/app-readme.md delete mode 100644 incubator/imgpush/2.0.7/questions.yaml create mode 100644 incubator/imgpush/2.0.8/CHANGELOG.md create mode 100644 incubator/imgpush/2.0.8/Chart.yaml rename incubator/imgpush/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/imgpush/2.0.8/app-changelog.md create mode 100644 incubator/imgpush/2.0.8/app-readme.md rename incubator/{invitarr/2.0.7 => imgpush/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/imgpush/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/imgpush/2.0.8/questions.yaml rename incubator/imgpush/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{invitarr/2.0.7 => imgpush/2.0.8}/values.yaml (100%) delete mode 100644 incubator/invitarr/2.0.7/CHANGELOG.md delete mode 100644 incubator/invitarr/2.0.7/Chart.yaml delete mode 100644 incubator/invitarr/2.0.7/app-changelog.md delete mode 100644 incubator/invitarr/2.0.7/app-readme.md delete mode 100644 incubator/invitarr/2.0.7/questions.yaml create mode 100644 incubator/invitarr/2.0.8/CHANGELOG.md create mode 100644 incubator/invitarr/2.0.8/Chart.yaml rename incubator/invitarr/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/invitarr/2.0.8/app-changelog.md create mode 100644 incubator/invitarr/2.0.8/app-readme.md rename incubator/{jelu/2.0.12 => invitarr/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/invitarr/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/invitarr/2.0.8/questions.yaml rename incubator/invitarr/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{jelu/2.0.12 => invitarr/2.0.8}/values.yaml (100%) delete mode 100644 incubator/jelu/2.0.12/CHANGELOG.md delete mode 100644 incubator/jelu/2.0.12/Chart.yaml delete mode 100644 incubator/jelu/2.0.12/app-changelog.md create mode 100644 incubator/jelu/2.0.13/CHANGELOG.md create mode 100644 incubator/jelu/2.0.13/Chart.yaml rename incubator/jelu/{2.0.12 => 2.0.13}/README.md (100%) create mode 100644 incubator/jelu/2.0.13/app-changelog.md rename incubator/jelu/{2.0.12 => 2.0.13}/app-readme.md (100%) rename incubator/{jenkins/3.0.5 => jelu/2.0.13}/charts/common-11.1.2.tgz (100%) rename incubator/jelu/{2.0.12 => 2.0.13}/ix_values.yaml (100%) rename incubator/jelu/{2.0.12 => 2.0.13}/questions.yaml (100%) rename incubator/jelu/{2.0.12 => 2.0.13}/templates/common.yaml (100%) rename incubator/{jenkins/3.0.5 => jelu/2.0.13}/values.yaml (100%) delete mode 100644 incubator/jenkins/3.0.5/CHANGELOG.md delete mode 100644 incubator/jenkins/3.0.5/Chart.yaml delete mode 100644 incubator/jenkins/3.0.5/app-changelog.md create mode 100644 incubator/jenkins/3.0.6/CHANGELOG.md create mode 100644 incubator/jenkins/3.0.6/Chart.yaml rename incubator/jenkins/{3.0.5 => 3.0.6}/README.md (100%) create mode 100644 incubator/jenkins/3.0.6/app-changelog.md rename incubator/jenkins/{3.0.5 => 3.0.6}/app-readme.md (100%) rename incubator/{jmzhomeproxy/2.0.7 => jenkins/3.0.6}/charts/common-11.1.2.tgz (100%) rename incubator/jenkins/{3.0.5 => 3.0.6}/ix_values.yaml (100%) rename incubator/jenkins/{3.0.5 => 3.0.6}/questions.yaml (100%) rename incubator/jenkins/{3.0.5 => 3.0.6}/templates/_secret.tpl (100%) rename incubator/jenkins/{3.0.5 => 3.0.6}/templates/common.yaml (100%) rename incubator/{jmzhomeproxy/2.0.7 => jenkins/3.0.6}/values.yaml (100%) delete mode 100644 incubator/jmzhomeproxy/2.0.7/CHANGELOG.md delete mode 100644 incubator/jmzhomeproxy/2.0.7/Chart.yaml delete mode 100644 incubator/jmzhomeproxy/2.0.7/app-changelog.md delete mode 100644 incubator/jmzhomeproxy/2.0.7/app-readme.md delete mode 100644 incubator/jmzhomeproxy/2.0.7/questions.yaml create mode 100644 incubator/jmzhomeproxy/2.0.8/CHANGELOG.md create mode 100644 incubator/jmzhomeproxy/2.0.8/Chart.yaml rename incubator/jmzhomeproxy/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/jmzhomeproxy/2.0.8/app-changelog.md create mode 100644 incubator/jmzhomeproxy/2.0.8/app-readme.md rename incubator/{jump/2.0.7 => jmzhomeproxy/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/jmzhomeproxy/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/jmzhomeproxy/2.0.8/questions.yaml rename incubator/jmzhomeproxy/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{jump/2.0.7 => jmzhomeproxy/2.0.8}/values.yaml (100%) delete mode 100644 incubator/jump/2.0.7/CHANGELOG.md delete mode 100644 incubator/jump/2.0.7/Chart.yaml delete mode 100644 incubator/jump/2.0.7/app-changelog.md delete mode 100644 incubator/jump/2.0.7/app-readme.md delete mode 100644 incubator/jump/2.0.7/questions.yaml create mode 100644 incubator/jump/2.0.8/CHANGELOG.md create mode 100644 incubator/jump/2.0.8/Chart.yaml rename incubator/jump/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/jump/2.0.8/app-changelog.md create mode 100644 incubator/jump/2.0.8/app-readme.md rename incubator/{kavitaemail/2.0.9 => jump/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/jump/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/jump/2.0.8/questions.yaml rename incubator/jump/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{kavitaemail/2.0.9 => jump/2.0.8}/values.yaml (100%) create mode 100644 incubator/kavitaemail/2.0.10/CHANGELOG.md create mode 100644 incubator/kavitaemail/2.0.10/Chart.yaml rename incubator/kavitaemail/{2.0.9 => 2.0.10}/README.md (100%) create mode 100644 incubator/kavitaemail/2.0.10/app-changelog.md rename incubator/kavitaemail/{2.0.9 => 2.0.10}/app-readme.md (100%) rename incubator/{keeweb/2.0.8 => kavitaemail/2.0.10}/charts/common-11.1.2.tgz (100%) rename incubator/kavitaemail/{2.0.9 => 2.0.10}/ix_values.yaml (100%) rename incubator/kavitaemail/{2.0.9 => 2.0.10}/questions.yaml (100%) rename incubator/kavitaemail/{2.0.9 => 2.0.10}/templates/common.yaml (100%) rename incubator/{keeweb/2.0.8 => kavitaemail/2.0.10}/values.yaml (100%) delete mode 100644 incubator/kavitaemail/2.0.9/CHANGELOG.md delete mode 100644 incubator/kavitaemail/2.0.9/Chart.yaml delete mode 100644 incubator/kavitaemail/2.0.9/app-changelog.md delete mode 100644 incubator/keeweb/2.0.8/CHANGELOG.md delete mode 100644 incubator/keeweb/2.0.8/Chart.yaml delete mode 100644 incubator/keeweb/2.0.8/app-changelog.md delete mode 100644 incubator/keeweb/2.0.8/app-readme.md delete mode 100644 incubator/keeweb/2.0.8/questions.yaml create mode 100644 incubator/keeweb/2.0.9/CHANGELOG.md create mode 100644 incubator/keeweb/2.0.9/Chart.yaml rename incubator/keeweb/{2.0.8 => 2.0.9}/README.md (100%) create mode 100644 incubator/keeweb/2.0.9/app-changelog.md create mode 100644 incubator/keeweb/2.0.9/app-readme.md rename incubator/{kitana/2.0.7 => keeweb/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/keeweb/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/keeweb/2.0.9/questions.yaml rename incubator/keeweb/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{kitana/2.0.7 => keeweb/2.0.9}/values.yaml (100%) delete mode 100644 incubator/kitana/2.0.7/CHANGELOG.md delete mode 100644 incubator/kitana/2.0.7/Chart.yaml delete mode 100644 incubator/kitana/2.0.7/app-changelog.md delete mode 100644 incubator/kitana/2.0.7/app-readme.md delete mode 100644 incubator/kitana/2.0.7/questions.yaml create mode 100644 incubator/kitana/2.0.8/CHANGELOG.md create mode 100644 incubator/kitana/2.0.8/Chart.yaml rename incubator/kitana/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/kitana/2.0.8/app-changelog.md create mode 100644 incubator/kitana/2.0.8/app-readme.md rename incubator/{lemur-cfssl/2.0.7 => kitana/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/kitana/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/kitana/2.0.8/questions.yaml rename incubator/kitana/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{lemur-cfssl/2.0.7 => kitana/2.0.8}/values.yaml (100%) delete mode 100644 incubator/lemur-cfssl/2.0.7/CHANGELOG.md delete mode 100644 incubator/lemur-cfssl/2.0.7/Chart.yaml delete mode 100644 incubator/lemur-cfssl/2.0.7/app-changelog.md delete mode 100644 incubator/lemur-cfssl/2.0.7/app-readme.md delete mode 100644 incubator/lemur-cfssl/2.0.7/questions.yaml create mode 100644 incubator/lemur-cfssl/2.0.8/CHANGELOG.md create mode 100644 incubator/lemur-cfssl/2.0.8/Chart.yaml rename incubator/lemur-cfssl/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/lemur-cfssl/2.0.8/app-changelog.md create mode 100644 incubator/lemur-cfssl/2.0.8/app-readme.md rename incubator/{linkwallet => lemur-cfssl}/2.0.8/charts/common-11.1.2.tgz (100%) rename incubator/lemur-cfssl/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/lemur-cfssl/2.0.8/questions.yaml rename incubator/lemur-cfssl/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{linkwallet => lemur-cfssl}/2.0.8/values.yaml (100%) delete mode 100644 incubator/linkwallet/2.0.8/CHANGELOG.md delete mode 100644 incubator/linkwallet/2.0.8/Chart.yaml delete mode 100644 incubator/linkwallet/2.0.8/app-changelog.md delete mode 100644 incubator/linkwallet/2.0.8/app-readme.md delete mode 100644 incubator/linkwallet/2.0.8/questions.yaml create mode 100644 incubator/linkwallet/2.0.9/CHANGELOG.md create mode 100644 incubator/linkwallet/2.0.9/Chart.yaml rename incubator/linkwallet/{2.0.8 => 2.0.9}/README.md (100%) create mode 100644 incubator/linkwallet/2.0.9/app-changelog.md create mode 100644 incubator/linkwallet/2.0.9/app-readme.md rename incubator/{livebook => linkwallet}/2.0.9/charts/common-11.1.2.tgz (100%) rename incubator/linkwallet/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/linkwallet/2.0.9/questions.yaml rename incubator/linkwallet/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{livebook => linkwallet}/2.0.9/values.yaml (100%) create mode 100644 incubator/livebook/2.0.10/CHANGELOG.md create mode 100644 incubator/livebook/2.0.10/Chart.yaml rename incubator/livebook/{2.0.9 => 2.0.10}/README.md (100%) create mode 100644 incubator/livebook/2.0.10/app-changelog.md rename incubator/livebook/{2.0.9 => 2.0.10}/app-readme.md (100%) rename incubator/{livestreamdvr/2.0.8 => livebook/2.0.10}/charts/common-11.1.2.tgz (100%) rename incubator/livebook/{2.0.9 => 2.0.10}/ix_values.yaml (100%) create mode 100644 incubator/livebook/2.0.10/questions.yaml rename incubator/livebook/{2.0.9 => 2.0.10}/templates/common.yaml (100%) rename incubator/{livestreamdvr/2.0.8 => livebook/2.0.10}/values.yaml (100%) delete mode 100644 incubator/livebook/2.0.9/CHANGELOG.md delete mode 100644 incubator/livebook/2.0.9/Chart.yaml delete mode 100644 incubator/livebook/2.0.9/app-changelog.md delete mode 100644 incubator/livebook/2.0.9/questions.yaml delete mode 100644 incubator/livestreamdvr/2.0.8/CHANGELOG.md delete mode 100644 incubator/livestreamdvr/2.0.8/Chart.yaml delete mode 100644 incubator/livestreamdvr/2.0.8/app-changelog.md delete mode 100644 incubator/livestreamdvr/2.0.8/app-readme.md delete mode 100644 incubator/livestreamdvr/2.0.8/questions.yaml create mode 100644 incubator/livestreamdvr/2.0.9/CHANGELOG.md create mode 100644 incubator/livestreamdvr/2.0.9/Chart.yaml rename incubator/livestreamdvr/{2.0.8 => 2.0.9}/README.md (100%) create mode 100644 incubator/livestreamdvr/2.0.9/app-changelog.md create mode 100644 incubator/livestreamdvr/2.0.9/app-readme.md rename incubator/{mailpile/2.0.7 => livestreamdvr/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/livestreamdvr/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/livestreamdvr/2.0.9/questions.yaml rename incubator/livestreamdvr/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{mailpile/2.0.7 => livestreamdvr/2.0.9}/values.yaml (100%) delete mode 100644 incubator/mailpile/2.0.7/CHANGELOG.md delete mode 100644 incubator/mailpile/2.0.7/Chart.yaml delete mode 100644 incubator/mailpile/2.0.7/app-changelog.md delete mode 100644 incubator/mailpile/2.0.7/app-readme.md delete mode 100644 incubator/mailpile/2.0.7/questions.yaml create mode 100644 incubator/mailpile/2.0.8/CHANGELOG.md create mode 100644 incubator/mailpile/2.0.8/Chart.yaml rename incubator/mailpile/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/mailpile/2.0.8/app-changelog.md create mode 100644 incubator/mailpile/2.0.8/app-readme.md rename incubator/{maloja/2.0.7 => mailpile/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/mailpile/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/mailpile/2.0.8/questions.yaml rename incubator/mailpile/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{maloja/2.0.7 => mailpile/2.0.8}/values.yaml (100%) delete mode 100644 incubator/maloja/2.0.7/CHANGELOG.md delete mode 100644 incubator/maloja/2.0.7/Chart.yaml delete mode 100644 incubator/maloja/2.0.7/app-changelog.md delete mode 100644 incubator/maloja/2.0.7/app-readme.md delete mode 100644 incubator/maloja/2.0.7/questions.yaml create mode 100644 incubator/maloja/2.0.8/CHANGELOG.md create mode 100644 incubator/maloja/2.0.8/Chart.yaml rename incubator/maloja/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/maloja/2.0.8/app-changelog.md create mode 100644 incubator/maloja/2.0.8/app-readme.md rename incubator/{mango/2.0.7 => maloja/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/maloja/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/maloja/2.0.8/questions.yaml rename incubator/maloja/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{mango/2.0.7 => maloja/2.0.8}/values.yaml (100%) delete mode 100644 incubator/mango/2.0.7/CHANGELOG.md delete mode 100644 incubator/mango/2.0.7/Chart.yaml delete mode 100644 incubator/mango/2.0.7/app-changelog.md delete mode 100644 incubator/mango/2.0.7/app-readme.md delete mode 100644 incubator/mango/2.0.7/questions.yaml create mode 100644 incubator/mango/2.0.8/CHANGELOG.md create mode 100644 incubator/mango/2.0.8/Chart.yaml rename incubator/mango/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/mango/2.0.8/app-changelog.md create mode 100644 incubator/mango/2.0.8/app-readme.md rename incubator/{mediaelch/2.0.7 => mango/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/mango/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/mango/2.0.8/questions.yaml rename incubator/mango/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{mediaelch/2.0.7 => mango/2.0.8}/values.yaml (100%) delete mode 100644 incubator/mediaelch/2.0.7/CHANGELOG.md delete mode 100644 incubator/mediaelch/2.0.7/Chart.yaml delete mode 100644 incubator/mediaelch/2.0.7/app-changelog.md delete mode 100644 incubator/mediaelch/2.0.7/app-readme.md delete mode 100644 incubator/mediaelch/2.0.7/questions.yaml create mode 100644 incubator/mediaelch/2.0.8/CHANGELOG.md create mode 100644 incubator/mediaelch/2.0.8/Chart.yaml rename incubator/mediaelch/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/mediaelch/2.0.8/app-changelog.md create mode 100644 incubator/mediaelch/2.0.8/app-readme.md rename incubator/{mediagoblin/2.0.7 => mediaelch/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/mediaelch/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/mediaelch/2.0.8/questions.yaml rename incubator/mediaelch/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{mediagoblin/2.0.7 => mediaelch/2.0.8}/values.yaml (100%) delete mode 100644 incubator/mediagoblin/2.0.7/CHANGELOG.md delete mode 100644 incubator/mediagoblin/2.0.7/Chart.yaml delete mode 100644 incubator/mediagoblin/2.0.7/app-changelog.md delete mode 100644 incubator/mediagoblin/2.0.7/app-readme.md delete mode 100644 incubator/mediagoblin/2.0.7/questions.yaml create mode 100644 incubator/mediagoblin/2.0.8/CHANGELOG.md create mode 100644 incubator/mediagoblin/2.0.8/Chart.yaml rename incubator/mediagoblin/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/mediagoblin/2.0.8/app-changelog.md create mode 100644 incubator/mediagoblin/2.0.8/app-readme.md rename incubator/{mineos/2.0.7 => mediagoblin/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/mediagoblin/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/mediagoblin/2.0.8/questions.yaml rename incubator/mediagoblin/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{mineos/2.0.7 => mediagoblin/2.0.8}/values.yaml (100%) delete mode 100644 incubator/mineos/2.0.7/CHANGELOG.md delete mode 100644 incubator/mineos/2.0.7/Chart.yaml delete mode 100644 incubator/mineos/2.0.7/app-changelog.md delete mode 100644 incubator/mineos/2.0.7/app-readme.md delete mode 100644 incubator/mineos/2.0.7/questions.yaml create mode 100644 incubator/mineos/2.0.8/CHANGELOG.md create mode 100644 incubator/mineos/2.0.8/Chart.yaml rename incubator/mineos/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/mineos/2.0.8/app-changelog.md create mode 100644 incubator/mineos/2.0.8/app-readme.md rename incubator/{misskey/3.0.23 => mineos/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/mineos/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/mineos/2.0.8/questions.yaml rename incubator/mineos/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{misskey/3.0.23 => mineos/2.0.8}/values.yaml (100%) delete mode 100644 incubator/misskey/3.0.23/CHANGELOG.md delete mode 100644 incubator/misskey/3.0.23/Chart.yaml delete mode 100644 incubator/misskey/3.0.23/app-changelog.md create mode 100644 incubator/misskey/3.0.24/CHANGELOG.md create mode 100644 incubator/misskey/3.0.24/Chart.yaml rename incubator/misskey/{3.0.23 => 3.0.24}/README.md (100%) create mode 100644 incubator/misskey/3.0.24/app-changelog.md rename incubator/misskey/{3.0.23 => 3.0.24}/app-readme.md (100%) rename incubator/{mocodo-mcd/2.0.9 => misskey/3.0.24}/charts/common-11.1.2.tgz (100%) rename incubator/misskey/{3.0.23 => 3.0.24}/charts/postgresql-11.0.22.tgz (100%) rename incubator/misskey/{3.0.23 => 3.0.24}/charts/redis-5.0.29.tgz (100%) rename incubator/misskey/{3.0.23 => 3.0.24}/ix_values.yaml (100%) rename incubator/misskey/{3.0.23 => 3.0.24}/questions.yaml (100%) rename incubator/misskey/{3.0.23 => 3.0.24}/templates/_configmap.tpl (100%) rename incubator/misskey/{3.0.23 => 3.0.24}/templates/common.yaml (100%) rename incubator/{mocodo-mcd/2.0.9 => misskey/3.0.24}/values.yaml (100%) create mode 100644 incubator/mocodo-mcd/2.0.10/CHANGELOG.md create mode 100644 incubator/mocodo-mcd/2.0.10/Chart.yaml rename incubator/mocodo-mcd/{2.0.9 => 2.0.10}/README.md (100%) create mode 100644 incubator/mocodo-mcd/2.0.10/app-changelog.md create mode 100644 incubator/mocodo-mcd/2.0.10/app-readme.md rename incubator/{mojopaste/2.0.7 => mocodo-mcd/2.0.10}/charts/common-11.1.2.tgz (100%) rename incubator/mocodo-mcd/{2.0.9 => 2.0.10}/ix_values.yaml (100%) create mode 100644 incubator/mocodo-mcd/2.0.10/questions.yaml rename incubator/mocodo-mcd/{2.0.9 => 2.0.10}/templates/common.yaml (100%) rename incubator/{mojopaste/2.0.7 => mocodo-mcd/2.0.10}/values.yaml (100%) delete mode 100644 incubator/mocodo-mcd/2.0.9/CHANGELOG.md delete mode 100644 incubator/mocodo-mcd/2.0.9/Chart.yaml delete mode 100644 incubator/mocodo-mcd/2.0.9/app-changelog.md delete mode 100644 incubator/mocodo-mcd/2.0.9/app-readme.md delete mode 100644 incubator/mocodo-mcd/2.0.9/questions.yaml delete mode 100644 incubator/mojopaste/2.0.7/CHANGELOG.md delete mode 100644 incubator/mojopaste/2.0.7/Chart.yaml delete mode 100644 incubator/mojopaste/2.0.7/app-changelog.md delete mode 100644 incubator/mojopaste/2.0.7/app-readme.md delete mode 100644 incubator/mojopaste/2.0.7/questions.yaml create mode 100644 incubator/mojopaste/2.0.8/CHANGELOG.md create mode 100644 incubator/mojopaste/2.0.8/Chart.yaml rename incubator/mojopaste/{2.0.7 => 2.0.8}/README.md (100%) create mode 100644 incubator/mojopaste/2.0.8/app-changelog.md create mode 100644 incubator/mojopaste/2.0.8/app-readme.md rename incubator/{netbox/3.0.27 => mojopaste/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/mojopaste/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/mojopaste/2.0.8/questions.yaml rename incubator/mojopaste/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{netbox/3.0.27 => mojopaste/2.0.8}/values.yaml (100%) delete mode 100644 incubator/netbox/3.0.27/CHANGELOG.md delete mode 100644 incubator/netbox/3.0.27/Chart.yaml delete mode 100644 incubator/netbox/3.0.27/app-changelog.md create mode 100644 incubator/netbox/3.0.28/CHANGELOG.md create mode 100644 incubator/netbox/3.0.28/Chart.yaml rename incubator/netbox/{3.0.27 => 3.0.28}/README.md (100%) create mode 100644 incubator/netbox/3.0.28/app-changelog.md rename incubator/netbox/{3.0.27 => 3.0.28}/app-readme.md (100%) rename incubator/{nitter/1.0.6 => netbox/3.0.28}/charts/common-11.1.2.tgz (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/charts/postgresql-11.0.22.tgz (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/charts/redis-5.0.29.tgz (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/ix_values.yaml (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/questions.yaml (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/templates/_housekeeper.tpl (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/templates/_secret.tpl (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/templates/_worker.tpl (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/templates/common.yaml (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/templates/prometheusrules.yaml (100%) rename incubator/netbox/{3.0.27 => 3.0.28}/templates/servicemonitor.yaml (100%) rename incubator/{nitter/1.0.6 => netbox/3.0.28}/values.yaml (100%) delete mode 100644 incubator/nitter/1.0.6/CHANGELOG.md delete mode 100644 incubator/nitter/1.0.6/Chart.yaml delete mode 100644 incubator/nitter/1.0.6/README.md delete mode 100644 incubator/nitter/1.0.6/app-changelog.md create mode 100644 incubator/nitter/1.0.7/CHANGELOG.md create mode 100644 incubator/nitter/1.0.7/Chart.yaml rename incubator/{noisedash/2.0.9 => nitter/1.0.7}/README.md (100%) create mode 100644 incubator/nitter/1.0.7/app-changelog.md rename incubator/nitter/{1.0.6 => 1.0.7}/app-readme.md (100%) rename incubator/{noisedash/2.0.9 => nitter/1.0.7}/charts/common-11.1.2.tgz (100%) rename incubator/nitter/{1.0.6 => 1.0.7}/charts/redis-5.0.29.tgz (100%) rename incubator/nitter/{1.0.6 => 1.0.7}/ix_values.yaml (100%) rename incubator/nitter/{1.0.6 => 1.0.7}/questions.yaml (100%) rename incubator/nitter/{1.0.6 => 1.0.7}/templates/_secret.tpl (100%) rename incubator/nitter/{1.0.6 => 1.0.7}/templates/common.yaml (100%) rename incubator/{noisedash/2.0.9 => nitter/1.0.7}/values.yaml (100%) create mode 100644 incubator/noisedash/2.0.10/CHANGELOG.md create mode 100644 incubator/noisedash/2.0.10/Chart.yaml rename incubator/{nosqlclient/2.0.7 => noisedash/2.0.10}/README.md (100%) create mode 100644 incubator/noisedash/2.0.10/app-changelog.md create mode 100644 incubator/noisedash/2.0.10/app-readme.md rename incubator/{nosqlclient/2.0.7 => noisedash/2.0.10}/charts/common-11.1.2.tgz (100%) rename incubator/noisedash/{2.0.9 => 2.0.10}/ix_values.yaml (100%) create mode 100644 incubator/noisedash/2.0.10/questions.yaml rename incubator/noisedash/{2.0.9 => 2.0.10}/templates/_configmap.tpl (100%) rename incubator/noisedash/{2.0.9 => 2.0.10}/templates/common.yaml (100%) rename incubator/{nosqlclient/2.0.7 => noisedash/2.0.10}/values.yaml (100%) delete mode 100644 incubator/noisedash/2.0.9/CHANGELOG.md delete mode 100644 incubator/noisedash/2.0.9/Chart.yaml delete mode 100644 incubator/noisedash/2.0.9/app-changelog.md delete mode 100644 incubator/noisedash/2.0.9/app-readme.md delete mode 100644 incubator/noisedash/2.0.9/questions.yaml delete mode 100644 incubator/nosqlclient/2.0.7/CHANGELOG.md delete mode 100644 incubator/nosqlclient/2.0.7/Chart.yaml delete mode 100644 incubator/nosqlclient/2.0.7/app-changelog.md delete mode 100644 incubator/nosqlclient/2.0.7/app-readme.md delete mode 100644 incubator/nosqlclient/2.0.7/questions.yaml create mode 100644 incubator/nosqlclient/2.0.8/CHANGELOG.md create mode 100644 incubator/nosqlclient/2.0.8/Chart.yaml rename incubator/{notarius/2.0.7 => nosqlclient/2.0.8}/README.md (100%) create mode 100644 incubator/nosqlclient/2.0.8/app-changelog.md create mode 100644 incubator/nosqlclient/2.0.8/app-readme.md rename incubator/{notarius/2.0.7 => nosqlclient/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/nosqlclient/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/nosqlclient/2.0.8/questions.yaml rename incubator/nosqlclient/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{notarius/2.0.7 => nosqlclient/2.0.8}/values.yaml (100%) delete mode 100644 incubator/notarius/2.0.7/CHANGELOG.md delete mode 100644 incubator/notarius/2.0.7/Chart.yaml delete mode 100644 incubator/notarius/2.0.7/app-changelog.md delete mode 100644 incubator/notarius/2.0.7/app-readme.md delete mode 100644 incubator/notarius/2.0.7/questions.yaml create mode 100644 incubator/notarius/2.0.8/CHANGELOG.md create mode 100644 incubator/notarius/2.0.8/Chart.yaml rename incubator/{notea/2.0.7 => notarius/2.0.8}/README.md (100%) create mode 100644 incubator/notarius/2.0.8/app-changelog.md create mode 100644 incubator/notarius/2.0.8/app-readme.md rename incubator/{notea/2.0.7 => notarius/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/notarius/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/notarius/2.0.8/questions.yaml rename incubator/notarius/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{notea/2.0.7 => notarius/2.0.8}/values.yaml (100%) delete mode 100644 incubator/notea/2.0.7/CHANGELOG.md delete mode 100644 incubator/notea/2.0.7/Chart.yaml delete mode 100644 incubator/notea/2.0.7/app-changelog.md delete mode 100644 incubator/notea/2.0.7/app-readme.md delete mode 100644 incubator/notea/2.0.7/questions.yaml create mode 100644 incubator/notea/2.0.8/CHANGELOG.md create mode 100644 incubator/notea/2.0.8/Chart.yaml rename incubator/{observium => notea}/2.0.8/README.md (100%) create mode 100644 incubator/notea/2.0.8/app-changelog.md create mode 100644 incubator/notea/2.0.8/app-readme.md rename incubator/{observium => notea}/2.0.8/charts/common-11.1.2.tgz (100%) rename incubator/notea/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/notea/2.0.8/questions.yaml rename incubator/notea/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{observium => notea}/2.0.8/values.yaml (100%) delete mode 100644 incubator/observium/2.0.8/CHANGELOG.md delete mode 100644 incubator/observium/2.0.8/Chart.yaml delete mode 100644 incubator/observium/2.0.8/app-changelog.md delete mode 100644 incubator/observium/2.0.8/app-readme.md delete mode 100644 incubator/observium/2.0.8/questions.yaml create mode 100644 incubator/observium/2.0.9/CHANGELOG.md create mode 100644 incubator/observium/2.0.9/Chart.yaml rename incubator/{openaudible/2.0.7 => observium/2.0.9}/README.md (100%) create mode 100644 incubator/observium/2.0.9/app-changelog.md create mode 100644 incubator/observium/2.0.9/app-readme.md rename incubator/{openaudible/2.0.7 => observium/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/observium/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/observium/2.0.9/questions.yaml rename incubator/observium/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{openaudible/2.0.7 => observium/2.0.9}/values.yaml (100%) delete mode 100644 incubator/openaudible/2.0.7/CHANGELOG.md delete mode 100644 incubator/openaudible/2.0.7/Chart.yaml delete mode 100644 incubator/openaudible/2.0.7/app-changelog.md delete mode 100644 incubator/openaudible/2.0.7/app-readme.md delete mode 100644 incubator/openaudible/2.0.7/questions.yaml create mode 100644 incubator/openaudible/2.0.8/CHANGELOG.md create mode 100644 incubator/openaudible/2.0.8/Chart.yaml rename incubator/{openproject/3.0.21 => openaudible/2.0.8}/README.md (100%) create mode 100644 incubator/openaudible/2.0.8/app-changelog.md create mode 100644 incubator/openaudible/2.0.8/app-readme.md rename incubator/{openbooks/0.0.1 => openaudible/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/openaudible/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/openaudible/2.0.8/questions.yaml rename incubator/openaudible/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{openbooks/0.0.1 => openaudible/2.0.8}/values.yaml (100%) delete mode 100644 incubator/openbooks/0.0.1/CHANGELOG.md delete mode 100644 incubator/openbooks/0.0.1/Chart.yaml delete mode 100644 incubator/openbooks/0.0.1/README.md delete mode 100644 incubator/openbooks/0.0.1/app-changelog.md delete mode 100644 incubator/openbooks/0.0.1/questions.yaml create mode 100644 incubator/openbooks/0.0.2/CHANGELOG.md create mode 100644 incubator/openbooks/0.0.2/Chart.yaml rename incubator/{openra/2.0.7 => openbooks/0.0.2}/README.md (100%) create mode 100644 incubator/openbooks/0.0.2/app-changelog.md rename incubator/openbooks/{0.0.1 => 0.0.2}/app-readme.md (100%) rename incubator/{openproject/3.0.21 => openbooks/0.0.2}/charts/common-11.1.2.tgz (100%) rename incubator/openbooks/{0.0.1 => 0.0.2}/ix_values.yaml (100%) create mode 100644 incubator/openbooks/0.0.2/questions.yaml rename incubator/openbooks/{0.0.1 => 0.0.2}/templates/_args.tpl (100%) rename incubator/openbooks/{0.0.1 => 0.0.2}/templates/common.yaml (100%) rename incubator/{openproject/3.0.21 => openbooks/0.0.2}/values.yaml (100%) delete mode 100644 incubator/openproject/3.0.21/CHANGELOG.md delete mode 100644 incubator/openproject/3.0.21/Chart.yaml delete mode 100644 incubator/openproject/3.0.21/app-changelog.md create mode 100644 incubator/openproject/3.0.22/CHANGELOG.md create mode 100644 incubator/openproject/3.0.22/Chart.yaml rename incubator/{owntracks/0.0.5 => openproject/3.0.22}/README.md (100%) create mode 100644 incubator/openproject/3.0.22/app-changelog.md rename incubator/openproject/{3.0.21 => 3.0.22}/app-readme.md (100%) rename incubator/{openra/2.0.7 => openproject/3.0.22}/charts/common-11.1.2.tgz (100%) rename incubator/openproject/{3.0.21 => 3.0.22}/charts/postgresql-11.0.22.tgz (100%) rename incubator/openproject/{3.0.21 => 3.0.22}/ix_values.yaml (100%) rename incubator/openproject/{3.0.21 => 3.0.22}/questions.yaml (100%) rename incubator/openproject/{3.0.21 => 3.0.22}/templates/_secrets.tpl (100%) rename incubator/openproject/{3.0.21 => 3.0.22}/templates/common.yaml (100%) rename incubator/{openra/2.0.7 => openproject/3.0.22}/values.yaml (100%) delete mode 100644 incubator/openra/2.0.7/CHANGELOG.md delete mode 100644 incubator/openra/2.0.7/Chart.yaml delete mode 100644 incubator/openra/2.0.7/app-changelog.md delete mode 100644 incubator/openra/2.0.7/app-readme.md delete mode 100644 incubator/openra/2.0.7/questions.yaml create mode 100644 incubator/openra/2.0.8/CHANGELOG.md create mode 100644 incubator/openra/2.0.8/Chart.yaml rename incubator/{pastey/2.0.7 => openra/2.0.8}/README.md (100%) create mode 100644 incubator/openra/2.0.8/app-changelog.md create mode 100644 incubator/openra/2.0.8/app-readme.md rename incubator/{owntracks/0.0.5 => openra/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/openra/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/openra/2.0.8/questions.yaml rename incubator/openra/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{owntracks/0.0.5 => openra/2.0.8}/values.yaml (100%) delete mode 100644 incubator/owntracks/0.0.5/CHANGELOG.md delete mode 100644 incubator/owntracks/0.0.5/Chart.yaml delete mode 100644 incubator/owntracks/0.0.5/app-changelog.md delete mode 100644 incubator/owntracks/0.0.5/app-readme.md delete mode 100644 incubator/owntracks/0.0.5/questions.yaml create mode 100644 incubator/owntracks/0.0.6/CHANGELOG.md create mode 100644 incubator/owntracks/0.0.6/Chart.yaml rename incubator/{phoronix-test-suite/2.0.7 => owntracks/0.0.6}/README.md (100%) create mode 100644 incubator/owntracks/0.0.6/app-changelog.md create mode 100644 incubator/owntracks/0.0.6/app-readme.md rename incubator/{pastey/2.0.7 => owntracks/0.0.6}/charts/common-11.1.2.tgz (100%) rename incubator/owntracks/{0.0.5 => 0.0.6}/ix_values.yaml (100%) create mode 100644 incubator/owntracks/0.0.6/questions.yaml rename incubator/owntracks/{0.0.5 => 0.0.6}/templates/_secret.tpl (100%) rename incubator/owntracks/{0.0.5 => 0.0.6}/templates/common.yaml (100%) rename incubator/{pastey/2.0.7 => owntracks/0.0.6}/values.yaml (100%) delete mode 100644 incubator/pastey/2.0.7/CHANGELOG.md delete mode 100644 incubator/pastey/2.0.7/Chart.yaml delete mode 100644 incubator/pastey/2.0.7/app-changelog.md delete mode 100644 incubator/pastey/2.0.7/app-readme.md delete mode 100644 incubator/pastey/2.0.7/questions.yaml create mode 100644 incubator/pastey/2.0.8/CHANGELOG.md create mode 100644 incubator/pastey/2.0.8/Chart.yaml rename incubator/{photostructure/2.0.7 => pastey/2.0.8}/README.md (100%) create mode 100644 incubator/pastey/2.0.8/app-changelog.md create mode 100644 incubator/pastey/2.0.8/app-readme.md rename incubator/{phoronix-test-suite/2.0.7 => pastey/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/pastey/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/pastey/2.0.8/questions.yaml rename incubator/pastey/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{phoronix-test-suite/2.0.7 => pastey/2.0.8}/values.yaml (100%) delete mode 100644 incubator/phoronix-test-suite/2.0.7/CHANGELOG.md delete mode 100644 incubator/phoronix-test-suite/2.0.7/Chart.yaml delete mode 100644 incubator/phoronix-test-suite/2.0.7/app-changelog.md delete mode 100644 incubator/phoronix-test-suite/2.0.7/app-readme.md delete mode 100644 incubator/phoronix-test-suite/2.0.7/questions.yaml create mode 100644 incubator/phoronix-test-suite/2.0.8/CHANGELOG.md create mode 100644 incubator/phoronix-test-suite/2.0.8/Chart.yaml rename incubator/{phpmyadmin/2.0.7 => phoronix-test-suite/2.0.8}/README.md (100%) create mode 100644 incubator/phoronix-test-suite/2.0.8/app-changelog.md create mode 100644 incubator/phoronix-test-suite/2.0.8/app-readme.md rename incubator/{photostructure/2.0.7 => phoronix-test-suite/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/phoronix-test-suite/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/phoronix-test-suite/2.0.8/questions.yaml rename incubator/phoronix-test-suite/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{photostructure/2.0.7 => phoronix-test-suite/2.0.8}/values.yaml (100%) delete mode 100644 incubator/photostructure/2.0.7/CHANGELOG.md delete mode 100644 incubator/photostructure/2.0.7/Chart.yaml delete mode 100644 incubator/photostructure/2.0.7/app-changelog.md delete mode 100644 incubator/photostructure/2.0.7/app-readme.md delete mode 100644 incubator/photostructure/2.0.7/questions.yaml create mode 100644 incubator/photostructure/2.0.8/CHANGELOG.md create mode 100644 incubator/photostructure/2.0.8/Chart.yaml rename incubator/{plausible/4.0.21 => photostructure/2.0.8}/README.md (100%) create mode 100644 incubator/photostructure/2.0.8/app-changelog.md create mode 100644 incubator/photostructure/2.0.8/app-readme.md rename incubator/{phpmyadmin/2.0.7 => photostructure/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/photostructure/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/photostructure/2.0.8/questions.yaml rename incubator/photostructure/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{phpmyadmin/2.0.7 => photostructure/2.0.8}/values.yaml (100%) delete mode 100644 incubator/phpmyadmin/2.0.7/CHANGELOG.md delete mode 100644 incubator/phpmyadmin/2.0.7/Chart.yaml delete mode 100644 incubator/phpmyadmin/2.0.7/app-changelog.md delete mode 100644 incubator/phpmyadmin/2.0.7/app-readme.md delete mode 100644 incubator/phpmyadmin/2.0.7/questions.yaml create mode 100644 incubator/phpmyadmin/2.0.8/CHANGELOG.md create mode 100644 incubator/phpmyadmin/2.0.8/Chart.yaml rename incubator/{plexripper/2.0.10 => phpmyadmin/2.0.8}/README.md (100%) create mode 100644 incubator/phpmyadmin/2.0.8/app-changelog.md create mode 100644 incubator/phpmyadmin/2.0.8/app-readme.md rename incubator/{plausible/4.0.21 => phpmyadmin/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/phpmyadmin/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/phpmyadmin/2.0.8/questions.yaml rename incubator/phpmyadmin/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{plausible/4.0.21 => phpmyadmin/2.0.8}/values.yaml (100%) delete mode 100644 incubator/plausible/4.0.21/CHANGELOG.md delete mode 100644 incubator/plausible/4.0.21/Chart.yaml delete mode 100644 incubator/plausible/4.0.21/app-changelog.md create mode 100644 incubator/plausible/4.0.22/CHANGELOG.md create mode 100644 incubator/plausible/4.0.22/Chart.yaml rename incubator/{plik/0.0.7 => plausible/4.0.22}/README.md (100%) create mode 100644 incubator/plausible/4.0.22/app-changelog.md rename incubator/plausible/{4.0.21 => 4.0.22}/app-readme.md (100%) rename incubator/plausible/{4.0.21 => 4.0.22}/charts/clickhouse-3.0.17.tgz (100%) rename incubator/{plexripper/2.0.10 => plausible/4.0.22}/charts/common-11.1.2.tgz (100%) rename incubator/plausible/{4.0.21 => 4.0.22}/charts/postgresql-11.0.22.tgz (100%) rename incubator/plausible/{4.0.21 => 4.0.22}/ix_values.yaml (100%) rename incubator/plausible/{4.0.21 => 4.0.22}/questions.yaml (100%) rename incubator/plausible/{4.0.21 => 4.0.22}/templates/_env.tpl (100%) rename incubator/plausible/{4.0.21 => 4.0.22}/templates/common.yaml (100%) rename incubator/{plexripper/2.0.10 => plausible/4.0.22}/values.yaml (100%) delete mode 100644 incubator/plexripper/2.0.10/CHANGELOG.md delete mode 100644 incubator/plexripper/2.0.10/Chart.yaml delete mode 100644 incubator/plexripper/2.0.10/app-changelog.md create mode 100644 incubator/plexripper/2.0.11/CHANGELOG.md create mode 100644 incubator/plexripper/2.0.11/Chart.yaml rename incubator/{privatebin/3.0.23 => plexripper/2.0.11}/README.md (100%) create mode 100644 incubator/plexripper/2.0.11/app-changelog.md rename incubator/plexripper/{2.0.10 => 2.0.11}/app-readme.md (100%) rename incubator/{plik/0.0.7 => plexripper/2.0.11}/charts/common-11.1.2.tgz (100%) rename incubator/plexripper/{2.0.10 => 2.0.11}/ix_values.yaml (100%) rename incubator/plexripper/{2.0.10 => 2.0.11}/questions.yaml (100%) rename incubator/plexripper/{2.0.10 => 2.0.11}/templates/common.yaml (100%) rename incubator/{plik/0.0.7 => plexripper/2.0.11}/values.yaml (100%) delete mode 100644 incubator/plik/0.0.7/CHANGELOG.md delete mode 100644 incubator/plik/0.0.7/Chart.yaml delete mode 100644 incubator/plik/0.0.7/app-changelog.md create mode 100644 incubator/plik/0.0.8/CHANGELOG.md create mode 100644 incubator/plik/0.0.8/Chart.yaml rename incubator/{pwm/2.0.7 => plik/0.0.8}/README.md (100%) create mode 100644 incubator/plik/0.0.8/app-changelog.md rename incubator/plik/{0.0.7 => 0.0.8}/app-readme.md (100%) rename incubator/{privatebin/3.0.23 => plik/0.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/plik/{0.0.7 => 0.0.8}/charts/postgresql-11.0.22.tgz (100%) rename incubator/plik/{0.0.7 => 0.0.8}/ix_values.yaml (100%) rename incubator/plik/{0.0.7 => 0.0.8}/questions.yaml (100%) rename incubator/plik/{0.0.7 => 0.0.8}/templates/_config.tpl (100%) rename incubator/plik/{0.0.7 => 0.0.8}/templates/common.yaml (100%) rename incubator/{privatebin/3.0.23 => plik/0.0.8}/values.yaml (100%) delete mode 100644 incubator/privatebin/3.0.23/CHANGELOG.md delete mode 100644 incubator/privatebin/3.0.23/Chart.yaml delete mode 100644 incubator/privatebin/3.0.23/app-changelog.md create mode 100644 incubator/privatebin/3.0.24/CHANGELOG.md create mode 100644 incubator/privatebin/3.0.24/Chart.yaml rename incubator/{quickshare/2.0.7 => privatebin/3.0.24}/README.md (100%) create mode 100644 incubator/privatebin/3.0.24/app-changelog.md rename incubator/privatebin/{3.0.23 => 3.0.24}/app-readme.md (100%) rename incubator/{pwm/2.0.7 => privatebin/3.0.24}/charts/common-11.1.2.tgz (100%) rename incubator/privatebin/{3.0.23 => 3.0.24}/charts/postgresql-11.0.22.tgz (100%) rename incubator/privatebin/{3.0.23 => 3.0.24}/ix_values.yaml (100%) rename incubator/privatebin/{3.0.23 => 3.0.24}/questions.yaml (100%) rename incubator/privatebin/{3.0.23 => 3.0.24}/templates/_configmap.tpl (100%) rename incubator/privatebin/{3.0.23 => 3.0.24}/templates/_secrets.tpl (100%) rename incubator/privatebin/{3.0.23 => 3.0.24}/templates/common.yaml (100%) rename incubator/{pwm/2.0.7 => privatebin/3.0.24}/values.yaml (100%) delete mode 100644 incubator/pwm/2.0.7/CHANGELOG.md delete mode 100644 incubator/pwm/2.0.7/Chart.yaml delete mode 100644 incubator/pwm/2.0.7/app-changelog.md delete mode 100644 incubator/pwm/2.0.7/app-readme.md delete mode 100644 incubator/pwm/2.0.7/questions.yaml create mode 100644 incubator/pwm/2.0.8/CHANGELOG.md create mode 100644 incubator/pwm/2.0.8/Chart.yaml rename incubator/{ra-rom-processor/2.0.14 => pwm/2.0.8}/README.md (100%) create mode 100644 incubator/pwm/2.0.8/app-changelog.md create mode 100644 incubator/pwm/2.0.8/app-readme.md rename incubator/{quickshare/2.0.7 => pwm/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/pwm/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/pwm/2.0.8/questions.yaml rename incubator/pwm/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{quickshare/2.0.7 => pwm/2.0.8}/values.yaml (100%) delete mode 100644 incubator/quickshare/2.0.7/CHANGELOG.md delete mode 100644 incubator/quickshare/2.0.7/Chart.yaml delete mode 100644 incubator/quickshare/2.0.7/app-changelog.md delete mode 100644 incubator/quickshare/2.0.7/app-readme.md delete mode 100644 incubator/quickshare/2.0.7/questions.yaml create mode 100644 incubator/quickshare/2.0.8/CHANGELOG.md create mode 100644 incubator/quickshare/2.0.8/Chart.yaml rename incubator/{redisinsight/2.0.7 => quickshare/2.0.8}/README.md (100%) create mode 100644 incubator/quickshare/2.0.8/app-changelog.md create mode 100644 incubator/quickshare/2.0.8/app-readme.md rename incubator/{ra-rom-processor/2.0.14 => quickshare/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/quickshare/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/quickshare/2.0.8/questions.yaml rename incubator/quickshare/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{ra-rom-processor/2.0.14 => quickshare/2.0.8}/values.yaml (100%) delete mode 100644 incubator/ra-rom-processor/2.0.14/CHANGELOG.md delete mode 100644 incubator/ra-rom-processor/2.0.14/Chart.yaml delete mode 100644 incubator/ra-rom-processor/2.0.14/app-changelog.md create mode 100644 incubator/ra-rom-processor/2.0.15/CHANGELOG.md create mode 100644 incubator/ra-rom-processor/2.0.15/Chart.yaml rename incubator/{restreamer/2.0.10 => ra-rom-processor/2.0.15}/README.md (100%) create mode 100644 incubator/ra-rom-processor/2.0.15/app-changelog.md rename incubator/ra-rom-processor/{2.0.14 => 2.0.15}/app-readme.md (100%) rename incubator/{redisinsight/2.0.7 => ra-rom-processor/2.0.15}/charts/common-11.1.2.tgz (100%) rename incubator/ra-rom-processor/{2.0.14 => 2.0.15}/ix_values.yaml (100%) rename incubator/ra-rom-processor/{2.0.14 => 2.0.15}/questions.yaml (100%) rename incubator/ra-rom-processor/{2.0.14 => 2.0.15}/templates/common.yaml (100%) rename incubator/{redisinsight/2.0.7 => ra-rom-processor/2.0.15}/values.yaml (100%) delete mode 100644 incubator/redisinsight/2.0.7/CHANGELOG.md delete mode 100644 incubator/redisinsight/2.0.7/Chart.yaml delete mode 100644 incubator/redisinsight/2.0.7/app-changelog.md delete mode 100644 incubator/redisinsight/2.0.7/app-readme.md delete mode 100644 incubator/redisinsight/2.0.7/questions.yaml create mode 100644 incubator/redisinsight/2.0.8/CHANGELOG.md create mode 100644 incubator/redisinsight/2.0.8/Chart.yaml rename incubator/{rstudio/3.0.3 => redisinsight/2.0.8}/README.md (100%) create mode 100644 incubator/redisinsight/2.0.8/app-changelog.md create mode 100644 incubator/redisinsight/2.0.8/app-readme.md rename incubator/{restreamer/2.0.10 => redisinsight/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/redisinsight/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/redisinsight/2.0.8/questions.yaml rename incubator/redisinsight/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{restreamer/2.0.10 => redisinsight/2.0.8}/values.yaml (100%) delete mode 100644 incubator/restreamer/2.0.10/CHANGELOG.md delete mode 100644 incubator/restreamer/2.0.10/Chart.yaml delete mode 100644 incubator/restreamer/2.0.10/app-changelog.md delete mode 100644 incubator/restreamer/2.0.10/app-readme.md delete mode 100644 incubator/restreamer/2.0.10/questions.yaml create mode 100644 incubator/restreamer/2.0.11/CHANGELOG.md create mode 100644 incubator/restreamer/2.0.11/Chart.yaml rename incubator/{rustpad/2.0.8 => restreamer/2.0.11}/README.md (100%) create mode 100644 incubator/restreamer/2.0.11/app-changelog.md create mode 100644 incubator/restreamer/2.0.11/app-readme.md rename incubator/{rstudio/3.0.3 => restreamer/2.0.11}/charts/common-11.1.2.tgz (100%) rename incubator/restreamer/{2.0.10 => 2.0.11}/ix_values.yaml (100%) create mode 100644 incubator/restreamer/2.0.11/questions.yaml rename incubator/restreamer/{2.0.10 => 2.0.11}/templates/_config.tpl (100%) rename incubator/restreamer/{2.0.10 => 2.0.11}/templates/_secret.tpl (100%) rename incubator/restreamer/{2.0.10 => 2.0.11}/templates/common.yaml (100%) rename incubator/{rstudio/3.0.3 => restreamer/2.0.11}/values.yaml (100%) delete mode 100644 incubator/rstudio/3.0.3/CHANGELOG.md delete mode 100644 incubator/rstudio/3.0.3/Chart.yaml delete mode 100644 incubator/rstudio/3.0.3/app-changelog.md delete mode 100644 incubator/rstudio/3.0.3/app-readme.md delete mode 100644 incubator/rstudio/3.0.3/questions.yaml create mode 100644 incubator/rstudio/3.0.4/CHANGELOG.md create mode 100644 incubator/rstudio/3.0.4/Chart.yaml rename incubator/{scprime/2.0.8 => rstudio/3.0.4}/README.md (100%) create mode 100644 incubator/rstudio/3.0.4/app-changelog.md create mode 100644 incubator/rstudio/3.0.4/app-readme.md rename incubator/{rustpad/2.0.8 => rstudio/3.0.4}/charts/common-11.1.2.tgz (100%) rename incubator/rstudio/{3.0.3 => 3.0.4}/ix_values.yaml (100%) create mode 100644 incubator/rstudio/3.0.4/questions.yaml rename incubator/rstudio/{3.0.3 => 3.0.4}/templates/common.yaml (100%) rename incubator/{rustpad/2.0.8 => rstudio/3.0.4}/values.yaml (100%) delete mode 100644 incubator/rustpad/2.0.8/CHANGELOG.md delete mode 100644 incubator/rustpad/2.0.8/Chart.yaml delete mode 100644 incubator/rustpad/2.0.8/app-changelog.md delete mode 100644 incubator/rustpad/2.0.8/app-readme.md delete mode 100644 incubator/rustpad/2.0.8/questions.yaml create mode 100644 incubator/rustpad/2.0.9/CHANGELOG.md create mode 100644 incubator/rustpad/2.0.9/Chart.yaml rename incubator/{searxng/2.0.16 => rustpad/2.0.9}/README.md (100%) create mode 100644 incubator/rustpad/2.0.9/app-changelog.md create mode 100644 incubator/rustpad/2.0.9/app-readme.md rename incubator/{scprime/2.0.8 => rustpad/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/rustpad/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/rustpad/2.0.9/questions.yaml rename incubator/rustpad/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{scprime/2.0.8 => rustpad/2.0.9}/values.yaml (100%) delete mode 100644 incubator/scprime/2.0.8/CHANGELOG.md delete mode 100644 incubator/scprime/2.0.8/Chart.yaml delete mode 100644 incubator/scprime/2.0.8/app-changelog.md delete mode 100644 incubator/scprime/2.0.8/app-readme.md delete mode 100644 incubator/scprime/2.0.8/questions.yaml create mode 100644 incubator/scprime/2.0.9/CHANGELOG.md create mode 100644 incubator/scprime/2.0.9/Chart.yaml rename incubator/{serpbear/0.0.7 => scprime/2.0.9}/README.md (100%) create mode 100644 incubator/scprime/2.0.9/app-changelog.md create mode 100644 incubator/scprime/2.0.9/app-readme.md rename incubator/{searxng/2.0.16 => scprime/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/scprime/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/scprime/2.0.9/questions.yaml rename incubator/scprime/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{searxng/2.0.16 => scprime/2.0.9}/values.yaml (100%) delete mode 100644 incubator/searxng/2.0.16/CHANGELOG.md delete mode 100644 incubator/searxng/2.0.16/Chart.yaml delete mode 100644 incubator/searxng/2.0.16/app-changelog.md create mode 100644 incubator/searxng/2.0.17/CHANGELOG.md create mode 100644 incubator/searxng/2.0.17/Chart.yaml rename incubator/{serviio/2.0.7 => searxng/2.0.17}/README.md (100%) create mode 100644 incubator/searxng/2.0.17/app-changelog.md rename incubator/searxng/{2.0.16 => 2.0.17}/app-readme.md (100%) rename incubator/{serpbear/0.0.7 => searxng/2.0.17}/charts/common-11.1.2.tgz (100%) rename incubator/searxng/{2.0.16 => 2.0.17}/ix_values.yaml (100%) rename incubator/searxng/{2.0.16 => 2.0.17}/questions.yaml (100%) rename incubator/searxng/{2.0.16 => 2.0.17}/templates/common.yaml (100%) rename incubator/{serpbear/0.0.7 => searxng/2.0.17}/values.yaml (100%) delete mode 100644 incubator/serpbear/0.0.7/CHANGELOG.md delete mode 100644 incubator/serpbear/0.0.7/Chart.yaml delete mode 100644 incubator/serpbear/0.0.7/app-changelog.md delete mode 100644 incubator/serpbear/0.0.7/questions.yaml create mode 100644 incubator/serpbear/0.0.8/CHANGELOG.md create mode 100644 incubator/serpbear/0.0.8/Chart.yaml rename incubator/{sftpgo/2.0.9 => serpbear/0.0.8}/README.md (100%) create mode 100644 incubator/serpbear/0.0.8/app-changelog.md rename incubator/serpbear/{0.0.7 => 0.0.8}/app-readme.md (100%) rename incubator/{serviio/2.0.7 => serpbear/0.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/serpbear/{0.0.7 => 0.0.8}/ix_values.yaml (100%) create mode 100644 incubator/serpbear/0.0.8/questions.yaml rename incubator/serpbear/{0.0.7 => 0.0.8}/templates/_secret.tpl (100%) rename incubator/serpbear/{0.0.7 => 0.0.8}/templates/common.yaml (100%) rename incubator/{serviio/2.0.7 => serpbear/0.0.8}/values.yaml (100%) delete mode 100644 incubator/serviio/2.0.7/CHANGELOG.md delete mode 100644 incubator/serviio/2.0.7/Chart.yaml delete mode 100644 incubator/serviio/2.0.7/app-changelog.md delete mode 100644 incubator/serviio/2.0.7/app-readme.md delete mode 100644 incubator/serviio/2.0.7/questions.yaml create mode 100644 incubator/serviio/2.0.8/CHANGELOG.md create mode 100644 incubator/serviio/2.0.8/Chart.yaml rename incubator/{shaarli => serviio}/2.0.8/README.md (100%) create mode 100644 incubator/serviio/2.0.8/app-changelog.md create mode 100644 incubator/serviio/2.0.8/app-readme.md rename incubator/{sftpgo/2.0.9 => serviio/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/serviio/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/serviio/2.0.8/questions.yaml rename incubator/serviio/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{sftpgo/2.0.9 => serviio/2.0.8}/values.yaml (100%) create mode 100644 incubator/sftpgo/2.0.10/CHANGELOG.md create mode 100644 incubator/sftpgo/2.0.10/Chart.yaml rename incubator/{sheetable/3.0.19 => sftpgo/2.0.10}/README.md (100%) create mode 100644 incubator/sftpgo/2.0.10/app-changelog.md create mode 100644 incubator/sftpgo/2.0.10/app-readme.md rename incubator/{shaarli/2.0.8 => sftpgo/2.0.10}/charts/common-11.1.2.tgz (100%) rename incubator/sftpgo/{2.0.9 => 2.0.10}/ix_values.yaml (100%) create mode 100644 incubator/sftpgo/2.0.10/questions.yaml rename incubator/sftpgo/{2.0.9 => 2.0.10}/templates/common.yaml (100%) rename incubator/{shaarli/2.0.8 => sftpgo/2.0.10}/values.yaml (100%) delete mode 100644 incubator/sftpgo/2.0.9/CHANGELOG.md delete mode 100644 incubator/sftpgo/2.0.9/Chart.yaml delete mode 100644 incubator/sftpgo/2.0.9/app-changelog.md delete mode 100644 incubator/sftpgo/2.0.9/app-readme.md delete mode 100644 incubator/sftpgo/2.0.9/questions.yaml delete mode 100644 incubator/shaarli/2.0.8/CHANGELOG.md delete mode 100644 incubator/shaarli/2.0.8/Chart.yaml delete mode 100644 incubator/shaarli/2.0.8/app-changelog.md delete mode 100644 incubator/shaarli/2.0.8/app-readme.md delete mode 100644 incubator/shaarli/2.0.8/questions.yaml create mode 100644 incubator/shaarli/2.0.9/CHANGELOG.md create mode 100644 incubator/shaarli/2.0.9/Chart.yaml rename incubator/{shoko-server/3.0.0 => shaarli/2.0.9}/README.md (100%) create mode 100644 incubator/shaarli/2.0.9/app-changelog.md create mode 100644 incubator/shaarli/2.0.9/app-readme.md rename incubator/{sheetable/3.0.19 => shaarli/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/shaarli/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/shaarli/2.0.9/questions.yaml rename incubator/shaarli/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{sheetable/3.0.19 => shaarli/2.0.9}/values.yaml (100%) delete mode 100644 incubator/sheetable/3.0.19/CHANGELOG.md delete mode 100644 incubator/sheetable/3.0.19/Chart.yaml delete mode 100644 incubator/sheetable/3.0.19/app-changelog.md create mode 100644 incubator/sheetable/3.0.20/CHANGELOG.md create mode 100644 incubator/sheetable/3.0.20/Chart.yaml rename incubator/{sinusbot/2.0.7 => sheetable/3.0.20}/README.md (100%) create mode 100644 incubator/sheetable/3.0.20/app-changelog.md rename incubator/sheetable/{3.0.19 => 3.0.20}/app-readme.md (100%) rename incubator/{shoko-server/3.0.0 => sheetable/3.0.20}/charts/common-11.1.2.tgz (100%) rename incubator/sheetable/{3.0.19 => 3.0.20}/charts/postgresql-11.0.22.tgz (100%) rename incubator/sheetable/{3.0.19 => 3.0.20}/ix_values.yaml (100%) rename incubator/sheetable/{3.0.19 => 3.0.20}/questions.yaml (100%) rename incubator/sheetable/{3.0.19 => 3.0.20}/templates/_secrets.tpl (100%) rename incubator/sheetable/{3.0.19 => 3.0.20}/templates/common.yaml (100%) rename incubator/{shoko-server/3.0.0 => sheetable/3.0.20}/values.yaml (100%) delete mode 100644 incubator/shoko-server/3.0.0/CHANGELOG.md delete mode 100644 incubator/shoko-server/3.0.0/Chart.yaml delete mode 100644 incubator/shoko-server/3.0.0/app-changelog.md create mode 100644 incubator/shoko-server/3.0.1/CHANGELOG.md create mode 100644 incubator/shoko-server/3.0.1/Chart.yaml rename incubator/{songkong/2.0.12 => shoko-server/3.0.1}/README.md (100%) create mode 100644 incubator/shoko-server/3.0.1/app-changelog.md rename incubator/shoko-server/{3.0.0 => 3.0.1}/app-readme.md (100%) rename incubator/{sinusbot/2.0.7 => shoko-server/3.0.1}/charts/common-11.1.2.tgz (100%) rename incubator/shoko-server/{3.0.0 => 3.0.1}/ix_values.yaml (100%) rename incubator/shoko-server/{3.0.0 => 3.0.1}/questions.yaml (100%) rename incubator/shoko-server/{3.0.0 => 3.0.1}/templates/common.yaml (100%) rename incubator/{sinusbot/2.0.7 => shoko-server/3.0.1}/values.yaml (100%) delete mode 100644 incubator/sinusbot/2.0.7/CHANGELOG.md delete mode 100644 incubator/sinusbot/2.0.7/Chart.yaml delete mode 100644 incubator/sinusbot/2.0.7/app-changelog.md delete mode 100644 incubator/sinusbot/2.0.7/app-readme.md delete mode 100644 incubator/sinusbot/2.0.7/questions.yaml create mode 100644 incubator/sinusbot/2.0.8/CHANGELOG.md create mode 100644 incubator/sinusbot/2.0.8/Chart.yaml rename incubator/{sourcegraph/2.0.12 => sinusbot/2.0.8}/README.md (100%) create mode 100644 incubator/sinusbot/2.0.8/app-changelog.md create mode 100644 incubator/sinusbot/2.0.8/app-readme.md rename incubator/{songkong/2.0.12 => sinusbot/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/sinusbot/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/sinusbot/2.0.8/questions.yaml rename incubator/sinusbot/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{songkong/2.0.12 => sinusbot/2.0.8}/values.yaml (100%) delete mode 100644 incubator/songkong/2.0.12/CHANGELOG.md delete mode 100644 incubator/songkong/2.0.12/Chart.yaml delete mode 100644 incubator/songkong/2.0.12/app-changelog.md delete mode 100644 incubator/songkong/2.0.12/app-readme.md delete mode 100644 incubator/songkong/2.0.12/questions.yaml create mode 100644 incubator/songkong/2.0.13/CHANGELOG.md create mode 100644 incubator/songkong/2.0.13/Chart.yaml rename incubator/{spaceengineers/2.0.8 => songkong/2.0.13}/README.md (100%) create mode 100644 incubator/songkong/2.0.13/app-changelog.md create mode 100644 incubator/songkong/2.0.13/app-readme.md rename incubator/{sourcegraph/2.0.12 => songkong/2.0.13}/charts/common-11.1.2.tgz (100%) rename incubator/songkong/{2.0.12 => 2.0.13}/ix_values.yaml (100%) create mode 100644 incubator/songkong/2.0.13/questions.yaml rename incubator/songkong/{2.0.12 => 2.0.13}/templates/common.yaml (100%) rename incubator/{sourcegraph/2.0.12 => songkong/2.0.13}/values.yaml (100%) delete mode 100644 incubator/sourcegraph/2.0.12/CHANGELOG.md delete mode 100644 incubator/sourcegraph/2.0.12/Chart.yaml delete mode 100644 incubator/sourcegraph/2.0.12/app-changelog.md create mode 100644 incubator/sourcegraph/2.0.13/CHANGELOG.md create mode 100644 incubator/sourcegraph/2.0.13/Chart.yaml rename incubator/{splunk/3.0.6 => sourcegraph/2.0.13}/README.md (100%) create mode 100644 incubator/sourcegraph/2.0.13/app-changelog.md rename incubator/sourcegraph/{2.0.12 => 2.0.13}/app-readme.md (100%) rename incubator/{spaceengineers/2.0.8 => sourcegraph/2.0.13}/charts/common-11.1.2.tgz (100%) rename incubator/sourcegraph/{2.0.12 => 2.0.13}/ix_values.yaml (100%) rename incubator/sourcegraph/{2.0.12 => 2.0.13}/questions.yaml (100%) rename incubator/sourcegraph/{2.0.12 => 2.0.13}/templates/common.yaml (100%) rename incubator/{spaceengineers/2.0.8 => sourcegraph/2.0.13}/values.yaml (100%) delete mode 100644 incubator/spaceengineers/2.0.8/CHANGELOG.md delete mode 100644 incubator/spaceengineers/2.0.8/Chart.yaml delete mode 100644 incubator/spaceengineers/2.0.8/app-changelog.md create mode 100644 incubator/spaceengineers/2.0.9/CHANGELOG.md create mode 100644 incubator/spaceengineers/2.0.9/Chart.yaml rename incubator/{stackedit/2.0.7 => spaceengineers/2.0.9}/README.md (100%) create mode 100644 incubator/spaceengineers/2.0.9/app-changelog.md rename incubator/spaceengineers/{2.0.8 => 2.0.9}/app-readme.md (100%) rename incubator/{splunk/3.0.6 => spaceengineers/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/spaceengineers/{2.0.8 => 2.0.9}/ix_values.yaml (100%) rename incubator/spaceengineers/{2.0.8 => 2.0.9}/questions.yaml (100%) rename incubator/spaceengineers/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{splunk/3.0.6 => spaceengineers/2.0.9}/values.yaml (100%) delete mode 100644 incubator/splunk/3.0.6/CHANGELOG.md delete mode 100644 incubator/splunk/3.0.6/Chart.yaml delete mode 100644 incubator/splunk/3.0.6/app-changelog.md delete mode 100644 incubator/splunk/3.0.6/app-readme.md delete mode 100644 incubator/splunk/3.0.6/questions.yaml create mode 100644 incubator/splunk/3.0.7/CHANGELOG.md create mode 100644 incubator/splunk/3.0.7/Chart.yaml rename incubator/{standardnotes-web/2.0.7 => splunk/3.0.7}/README.md (100%) create mode 100644 incubator/splunk/3.0.7/app-changelog.md create mode 100644 incubator/splunk/3.0.7/app-readme.md rename incubator/{stackedit/2.0.7 => splunk/3.0.7}/charts/common-11.1.2.tgz (100%) rename incubator/splunk/{3.0.6 => 3.0.7}/ix_values.yaml (100%) create mode 100644 incubator/splunk/3.0.7/questions.yaml rename incubator/splunk/{3.0.6 => 3.0.7}/templates/_config.tpl (100%) rename incubator/splunk/{3.0.6 => 3.0.7}/templates/common.yaml (100%) rename incubator/{stackedit/2.0.7 => splunk/3.0.7}/values.yaml (100%) delete mode 100644 incubator/stackedit/2.0.7/CHANGELOG.md delete mode 100644 incubator/stackedit/2.0.7/Chart.yaml delete mode 100644 incubator/stackedit/2.0.7/app-changelog.md delete mode 100644 incubator/stackedit/2.0.7/app-readme.md delete mode 100644 incubator/stackedit/2.0.7/questions.yaml create mode 100644 incubator/stackedit/2.0.8/CHANGELOG.md create mode 100644 incubator/stackedit/2.0.8/Chart.yaml rename incubator/{tanoshi/2.0.7 => stackedit/2.0.8}/README.md (100%) create mode 100644 incubator/stackedit/2.0.8/app-changelog.md create mode 100644 incubator/stackedit/2.0.8/app-readme.md rename incubator/{standardnotes-web/2.0.7 => stackedit/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/stackedit/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/stackedit/2.0.8/questions.yaml rename incubator/stackedit/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{standardnotes-web/2.0.7 => stackedit/2.0.8}/values.yaml (100%) delete mode 100644 incubator/standardnotes-web/2.0.7/CHANGELOG.md delete mode 100644 incubator/standardnotes-web/2.0.7/Chart.yaml delete mode 100644 incubator/standardnotes-web/2.0.7/app-changelog.md delete mode 100644 incubator/standardnotes-web/2.0.7/app-readme.md delete mode 100644 incubator/standardnotes-web/2.0.7/questions.yaml create mode 100644 incubator/standardnotes-web/2.0.8/CHANGELOG.md create mode 100644 incubator/standardnotes-web/2.0.8/Chart.yaml rename incubator/{tasmoadmin/2.0.7 => standardnotes-web/2.0.8}/README.md (100%) create mode 100644 incubator/standardnotes-web/2.0.8/app-changelog.md create mode 100644 incubator/standardnotes-web/2.0.8/app-readme.md rename incubator/{tanoshi/2.0.7 => standardnotes-web/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/standardnotes-web/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/standardnotes-web/2.0.8/questions.yaml rename incubator/standardnotes-web/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{tanoshi/2.0.7 => standardnotes-web/2.0.8}/values.yaml (100%) delete mode 100644 incubator/tanoshi/2.0.7/CHANGELOG.md delete mode 100644 incubator/tanoshi/2.0.7/Chart.yaml delete mode 100644 incubator/tanoshi/2.0.7/app-changelog.md delete mode 100644 incubator/tanoshi/2.0.7/app-readme.md delete mode 100644 incubator/tanoshi/2.0.7/questions.yaml create mode 100644 incubator/tanoshi/2.0.8/CHANGELOG.md create mode 100644 incubator/tanoshi/2.0.8/Chart.yaml rename incubator/{teedy-docs/2.0.7 => tanoshi/2.0.8}/README.md (100%) create mode 100644 incubator/tanoshi/2.0.8/app-changelog.md create mode 100644 incubator/tanoshi/2.0.8/app-readme.md rename incubator/{tasmoadmin/2.0.7 => tanoshi/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/tanoshi/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/tanoshi/2.0.8/questions.yaml rename incubator/tanoshi/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{tasmoadmin/2.0.7 => tanoshi/2.0.8}/values.yaml (100%) delete mode 100644 incubator/tasmoadmin/2.0.7/CHANGELOG.md delete mode 100644 incubator/tasmoadmin/2.0.7/Chart.yaml delete mode 100644 incubator/tasmoadmin/2.0.7/app-changelog.md delete mode 100644 incubator/tasmoadmin/2.0.7/app-readme.md delete mode 100644 incubator/tasmoadmin/2.0.7/questions.yaml create mode 100644 incubator/tasmoadmin/2.0.8/CHANGELOG.md create mode 100644 incubator/tasmoadmin/2.0.8/Chart.yaml rename incubator/{thumba/0.0.5 => tasmoadmin/2.0.8}/README.md (100%) create mode 100644 incubator/tasmoadmin/2.0.8/app-changelog.md create mode 100644 incubator/tasmoadmin/2.0.8/app-readme.md rename incubator/{teedy-docs/2.0.7 => tasmoadmin/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/tasmoadmin/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/tasmoadmin/2.0.8/questions.yaml rename incubator/tasmoadmin/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{teedy-docs/2.0.7 => tasmoadmin/2.0.8}/values.yaml (100%) delete mode 100644 incubator/teedy-docs/2.0.7/CHANGELOG.md delete mode 100644 incubator/teedy-docs/2.0.7/Chart.yaml delete mode 100644 incubator/teedy-docs/2.0.7/app-changelog.md delete mode 100644 incubator/teedy-docs/2.0.7/app-readme.md delete mode 100644 incubator/teedy-docs/2.0.7/questions.yaml create mode 100644 incubator/teedy-docs/2.0.8/CHANGELOG.md create mode 100644 incubator/teedy-docs/2.0.8/Chart.yaml rename incubator/{tonido/2.0.7 => teedy-docs/2.0.8}/README.md (100%) create mode 100644 incubator/teedy-docs/2.0.8/app-changelog.md create mode 100644 incubator/teedy-docs/2.0.8/app-readme.md rename incubator/{thumba/0.0.5 => teedy-docs/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/teedy-docs/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/teedy-docs/2.0.8/questions.yaml rename incubator/teedy-docs/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{thumba/0.0.5 => teedy-docs/2.0.8}/values.yaml (100%) delete mode 100644 incubator/thumba/0.0.5/CHANGELOG.md delete mode 100644 incubator/thumba/0.0.5/Chart.yaml delete mode 100644 incubator/thumba/0.0.5/app-changelog.md delete mode 100644 incubator/thumba/0.0.5/app-readme.md delete mode 100644 incubator/thumba/0.0.5/questions.yaml create mode 100644 incubator/thumba/0.0.6/CHANGELOG.md create mode 100644 incubator/thumba/0.0.6/Chart.yaml rename incubator/{traktarr/2.0.8 => thumba/0.0.6}/README.md (100%) create mode 100644 incubator/thumba/0.0.6/app-changelog.md create mode 100644 incubator/thumba/0.0.6/app-readme.md rename incubator/{tonido/2.0.7 => thumba/0.0.6}/charts/common-11.1.2.tgz (100%) rename incubator/thumba/{0.0.5 => 0.0.6}/ix_values.yaml (100%) create mode 100644 incubator/thumba/0.0.6/questions.yaml rename incubator/thumba/{0.0.5 => 0.0.6}/templates/common.yaml (100%) rename incubator/{tonido/2.0.7 => thumba/0.0.6}/values.yaml (100%) delete mode 100644 incubator/tonido/2.0.7/CHANGELOG.md delete mode 100644 incubator/tonido/2.0.7/Chart.yaml delete mode 100644 incubator/tonido/2.0.7/app-changelog.md delete mode 100644 incubator/tonido/2.0.7/app-readme.md delete mode 100644 incubator/tonido/2.0.7/questions.yaml create mode 100644 incubator/tonido/2.0.8/CHANGELOG.md create mode 100644 incubator/tonido/2.0.8/Chart.yaml rename incubator/{troddit => tonido}/2.0.8/README.md (100%) create mode 100644 incubator/tonido/2.0.8/app-changelog.md create mode 100644 incubator/tonido/2.0.8/app-readme.md rename incubator/{traktarr => tonido}/2.0.8/charts/common-11.1.2.tgz (100%) rename incubator/tonido/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/tonido/2.0.8/questions.yaml rename incubator/tonido/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{traktarr => tonido}/2.0.8/values.yaml (100%) delete mode 100644 incubator/traktarr/2.0.8/CHANGELOG.md delete mode 100644 incubator/traktarr/2.0.8/Chart.yaml delete mode 100644 incubator/traktarr/2.0.8/app-changelog.md delete mode 100644 incubator/traktarr/2.0.8/app-readme.md delete mode 100644 incubator/traktarr/2.0.8/questions.yaml create mode 100644 incubator/traktarr/2.0.9/CHANGELOG.md create mode 100644 incubator/traktarr/2.0.9/Chart.yaml rename incubator/{tubearchivist-redisjson/2.0.10 => traktarr/2.0.9}/README.md (100%) create mode 100644 incubator/traktarr/2.0.9/app-changelog.md create mode 100644 incubator/traktarr/2.0.9/app-readme.md rename incubator/{troddit/2.0.8 => traktarr/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/traktarr/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/traktarr/2.0.9/questions.yaml rename incubator/traktarr/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{troddit/2.0.8 => traktarr/2.0.9}/values.yaml (100%) delete mode 100644 incubator/troddit/2.0.8/CHANGELOG.md delete mode 100644 incubator/troddit/2.0.8/Chart.yaml delete mode 100644 incubator/troddit/2.0.8/app-changelog.md delete mode 100644 incubator/troddit/2.0.8/app-readme.md delete mode 100644 incubator/troddit/2.0.8/questions.yaml create mode 100644 incubator/troddit/2.0.9/CHANGELOG.md create mode 100644 incubator/troddit/2.0.9/Chart.yaml rename incubator/{universal-media-server/2.0.12 => troddit/2.0.9}/README.md (100%) create mode 100644 incubator/troddit/2.0.9/app-changelog.md create mode 100644 incubator/troddit/2.0.9/app-readme.md rename incubator/{tubearchivist-redisjson/2.0.10 => troddit/2.0.9}/charts/common-11.1.2.tgz (100%) rename incubator/troddit/{2.0.8 => 2.0.9}/ix_values.yaml (100%) create mode 100644 incubator/troddit/2.0.9/questions.yaml rename incubator/troddit/{2.0.8 => 2.0.9}/templates/common.yaml (100%) rename incubator/{tubearchivist-redisjson/2.0.10 => troddit/2.0.9}/values.yaml (100%) delete mode 100644 incubator/tubearchivist-redisjson/2.0.10/CHANGELOG.md delete mode 100644 incubator/tubearchivist-redisjson/2.0.10/Chart.yaml delete mode 100644 incubator/tubearchivist-redisjson/2.0.10/app-changelog.md delete mode 100644 incubator/tubearchivist-redisjson/2.0.10/app-readme.md delete mode 100644 incubator/tubearchivist-redisjson/2.0.10/questions.yaml create mode 100644 incubator/tubearchivist-redisjson/2.0.11/CHANGELOG.md create mode 100644 incubator/tubearchivist-redisjson/2.0.11/Chart.yaml rename incubator/{vaulthunters/2.0.7 => tubearchivist-redisjson/2.0.11}/README.md (100%) create mode 100644 incubator/tubearchivist-redisjson/2.0.11/app-changelog.md create mode 100644 incubator/tubearchivist-redisjson/2.0.11/app-readme.md rename incubator/{universal-media-server/2.0.12 => tubearchivist-redisjson/2.0.11}/charts/common-11.1.2.tgz (100%) rename incubator/tubearchivist-redisjson/{2.0.10 => 2.0.11}/ix_values.yaml (100%) create mode 100644 incubator/tubearchivist-redisjson/2.0.11/questions.yaml rename incubator/tubearchivist-redisjson/{2.0.10 => 2.0.11}/templates/common.yaml (100%) rename incubator/{universal-media-server/2.0.12 => tubearchivist-redisjson/2.0.11}/values.yaml (100%) delete mode 100644 incubator/universal-media-server/2.0.12/CHANGELOG.md delete mode 100644 incubator/universal-media-server/2.0.12/Chart.yaml delete mode 100644 incubator/universal-media-server/2.0.12/app-changelog.md create mode 100644 incubator/universal-media-server/2.0.13/CHANGELOG.md create mode 100644 incubator/universal-media-server/2.0.13/Chart.yaml rename incubator/{vertex/2.0.16 => universal-media-server/2.0.13}/README.md (100%) create mode 100644 incubator/universal-media-server/2.0.13/app-changelog.md rename incubator/universal-media-server/{2.0.12 => 2.0.13}/app-readme.md (100%) rename incubator/{vaulthunters/2.0.7 => universal-media-server/2.0.13}/charts/common-11.1.2.tgz (100%) rename incubator/universal-media-server/{2.0.12 => 2.0.13}/ix_values.yaml (100%) rename incubator/universal-media-server/{2.0.12 => 2.0.13}/questions.yaml (100%) rename incubator/universal-media-server/{2.0.12 => 2.0.13}/templates/common.yaml (100%) rename incubator/{vaulthunters/2.0.7 => universal-media-server/2.0.13}/values.yaml (100%) delete mode 100644 incubator/vaulthunters/2.0.7/CHANGELOG.md delete mode 100644 incubator/vaulthunters/2.0.7/Chart.yaml delete mode 100644 incubator/vaulthunters/2.0.7/app-changelog.md delete mode 100644 incubator/vaulthunters/2.0.7/app-readme.md delete mode 100644 incubator/vaulthunters/2.0.7/questions.yaml create mode 100644 incubator/vaulthunters/2.0.8/CHANGELOG.md create mode 100644 incubator/vaulthunters/2.0.8/Chart.yaml rename incubator/{vlmcsd-kms-server/2.0.7 => vaulthunters/2.0.8}/README.md (100%) create mode 100644 incubator/vaulthunters/2.0.8/app-changelog.md create mode 100644 incubator/vaulthunters/2.0.8/app-readme.md rename incubator/{vertex/2.0.16 => vaulthunters/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/vaulthunters/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/vaulthunters/2.0.8/questions.yaml rename incubator/vaulthunters/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{vertex/2.0.16 => vaulthunters/2.0.8}/values.yaml (100%) delete mode 100644 incubator/vertex/2.0.16/CHANGELOG.md delete mode 100644 incubator/vertex/2.0.16/Chart.yaml delete mode 100644 incubator/vertex/2.0.16/app-changelog.md delete mode 100644 incubator/vertex/2.0.16/questions.yaml create mode 100644 incubator/vertex/2.0.17/CHANGELOG.md create mode 100644 incubator/vertex/2.0.17/Chart.yaml rename incubator/{webp-server/2.0.11 => vertex/2.0.17}/README.md (100%) create mode 100644 incubator/vertex/2.0.17/app-changelog.md rename incubator/vertex/{2.0.16 => 2.0.17}/app-readme.md (100%) rename incubator/{vlmcsd-kms-server/2.0.7 => vertex/2.0.17}/charts/common-11.1.2.tgz (100%) rename incubator/vertex/{2.0.16 => 2.0.17}/ix_values.yaml (100%) create mode 100644 incubator/vertex/2.0.17/questions.yaml rename incubator/vertex/{2.0.16 => 2.0.17}/templates/common.yaml (100%) rename incubator/{vlmcsd-kms-server/2.0.7 => vertex/2.0.17}/values.yaml (100%) delete mode 100644 incubator/vlmcsd-kms-server/2.0.7/CHANGELOG.md delete mode 100644 incubator/vlmcsd-kms-server/2.0.7/Chart.yaml delete mode 100644 incubator/vlmcsd-kms-server/2.0.7/app-changelog.md delete mode 100644 incubator/vlmcsd-kms-server/2.0.7/app-readme.md delete mode 100644 incubator/vlmcsd-kms-server/2.0.7/questions.yaml create mode 100644 incubator/vlmcsd-kms-server/2.0.8/CHANGELOG.md create mode 100644 incubator/vlmcsd-kms-server/2.0.8/Chart.yaml rename incubator/{wizarr/0.0.5 => vlmcsd-kms-server/2.0.8}/README.md (100%) create mode 100644 incubator/vlmcsd-kms-server/2.0.8/app-changelog.md create mode 100644 incubator/vlmcsd-kms-server/2.0.8/app-readme.md rename incubator/{webp-server/2.0.11 => vlmcsd-kms-server/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/vlmcsd-kms-server/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/vlmcsd-kms-server/2.0.8/questions.yaml rename incubator/vlmcsd-kms-server/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename incubator/{webp-server/2.0.11 => vlmcsd-kms-server/2.0.8}/values.yaml (100%) delete mode 100644 incubator/webp-server/2.0.11/CHANGELOG.md delete mode 100644 incubator/webp-server/2.0.11/Chart.yaml delete mode 100644 incubator/webp-server/2.0.11/app-changelog.md delete mode 100644 incubator/webp-server/2.0.11/app-readme.md delete mode 100644 incubator/webp-server/2.0.11/questions.yaml create mode 100644 incubator/webp-server/2.0.12/CHANGELOG.md create mode 100644 incubator/webp-server/2.0.12/Chart.yaml rename incubator/{xmrig/2.0.7 => webp-server/2.0.12}/README.md (100%) create mode 100644 incubator/webp-server/2.0.12/app-changelog.md create mode 100644 incubator/webp-server/2.0.12/app-readme.md rename incubator/{wizarr/0.0.5 => webp-server/2.0.12}/charts/common-11.1.2.tgz (100%) rename incubator/webp-server/{2.0.11 => 2.0.12}/ix_values.yaml (100%) create mode 100644 incubator/webp-server/2.0.12/questions.yaml rename incubator/webp-server/{2.0.11 => 2.0.12}/templates/common.yaml (100%) rename incubator/{wizarr/0.0.5 => webp-server/2.0.12}/values.yaml (100%) delete mode 100644 incubator/wizarr/0.0.5/CHANGELOG.md delete mode 100644 incubator/wizarr/0.0.5/Chart.yaml delete mode 100644 incubator/wizarr/0.0.5/app-changelog.md delete mode 100644 incubator/wizarr/0.0.5/app-readme.md delete mode 100644 incubator/wizarr/0.0.5/questions.yaml create mode 100644 incubator/wizarr/0.0.6/CHANGELOG.md create mode 100644 incubator/wizarr/0.0.6/Chart.yaml rename {stable/wbo/3.0.0 => incubator/wizarr/0.0.6}/README.md (100%) create mode 100644 incubator/wizarr/0.0.6/app-changelog.md create mode 100644 incubator/wizarr/0.0.6/app-readme.md rename incubator/{xmrig/2.0.7 => wizarr/0.0.6}/charts/common-11.1.2.tgz (100%) rename incubator/wizarr/{0.0.5 => 0.0.6}/ix_values.yaml (100%) create mode 100644 incubator/wizarr/0.0.6/questions.yaml rename incubator/wizarr/{0.0.5 => 0.0.6}/templates/common.yaml (100%) rename incubator/{xmrig/2.0.7 => wizarr/0.0.6}/values.yaml (100%) delete mode 100644 incubator/xmrig/2.0.7/CHANGELOG.md delete mode 100644 incubator/xmrig/2.0.7/Chart.yaml delete mode 100644 incubator/xmrig/2.0.7/app-changelog.md delete mode 100644 incubator/xmrig/2.0.7/app-readme.md delete mode 100644 incubator/xmrig/2.0.7/questions.yaml create mode 100644 incubator/xmrig/2.0.8/CHANGELOG.md create mode 100644 incubator/xmrig/2.0.8/Chart.yaml create mode 100644 incubator/xmrig/2.0.8/README.md create mode 100644 incubator/xmrig/2.0.8/app-changelog.md create mode 100644 incubator/xmrig/2.0.8/app-readme.md rename {stable/adguard-home/4.0.11 => incubator/xmrig/2.0.8}/charts/common-11.1.2.tgz (100%) rename incubator/xmrig/{2.0.7 => 2.0.8}/ix_values.yaml (100%) create mode 100644 incubator/xmrig/2.0.8/questions.yaml rename incubator/xmrig/{2.0.7 => 2.0.8}/templates/common.yaml (100%) rename {stable/adguard-home/4.0.11 => incubator/xmrig/2.0.8}/values.yaml (100%) delete mode 100644 stable/adguard-home/4.0.11/CHANGELOG.md delete mode 100644 stable/adguard-home/4.0.11/Chart.yaml delete mode 100644 stable/adguard-home/4.0.11/app-changelog.md delete mode 100644 stable/adguard-home/4.0.11/questions.yaml create mode 100644 stable/adguard-home/4.0.12/CHANGELOG.md create mode 100644 stable/adguard-home/4.0.12/Chart.yaml rename stable/adguard-home/{4.0.11 => 4.0.12}/README.md (100%) create mode 100644 stable/adguard-home/4.0.12/app-changelog.md rename stable/adguard-home/{4.0.11 => 4.0.12}/app-readme.md (100%) rename stable/{amule/2.1.6 => adguard-home/4.0.12}/charts/common-11.1.2.tgz (100%) rename stable/adguard-home/{4.0.11 => 4.0.12}/ix_values.yaml (100%) create mode 100644 stable/adguard-home/4.0.12/questions.yaml rename stable/adguard-home/{4.0.11 => 4.0.12}/templates/common.yaml (100%) rename stable/{amule/2.1.6 => adguard-home/4.0.12}/values.yaml (100%) delete mode 100644 stable/amule/2.1.6/CHANGELOG.md delete mode 100644 stable/amule/2.1.6/Chart.yaml delete mode 100644 stable/amule/2.1.6/app-changelog.md delete mode 100644 stable/amule/2.1.6/app-readme.md delete mode 100644 stable/amule/2.1.6/questions.yaml create mode 100644 stable/amule/2.1.7/CHANGELOG.md create mode 100644 stable/amule/2.1.7/Chart.yaml rename stable/amule/{2.1.6 => 2.1.7}/README.md (100%) create mode 100644 stable/amule/2.1.7/app-changelog.md create mode 100644 stable/amule/2.1.7/app-readme.md rename stable/{aria2/7.0.7 => amule/2.1.7}/charts/common-11.1.2.tgz (100%) rename stable/amule/{2.1.6 => 2.1.7}/ix_values.yaml (100%) create mode 100644 stable/amule/2.1.7/questions.yaml rename stable/amule/{2.1.6 => 2.1.7}/templates/common.yaml (100%) rename stable/{aria2/7.0.7 => amule/2.1.7}/values.yaml (100%) create mode 100644 stable/anonaddy/12.0.21/CHANGELOG.md create mode 100644 stable/anonaddy/12.0.21/Chart.yaml rename stable/{aria2/7.0.7 => anonaddy/12.0.21}/README.md (100%) create mode 100644 stable/anonaddy/12.0.21/app-changelog.md create mode 100644 stable/anonaddy/12.0.21/app-readme.md rename stable/{ariang/3.0.8 => anonaddy/12.0.21}/charts/common-11.1.2.tgz (100%) rename stable/{filerun/6.0.17 => anonaddy/12.0.21}/charts/mariadb-5.0.25.tgz (100%) rename stable/{baserow/6.0.24 => anonaddy/12.0.21}/charts/redis-5.0.29.tgz (100%) create mode 100644 stable/anonaddy/12.0.21/ix_values.yaml create mode 100644 stable/anonaddy/12.0.21/questions.yaml create mode 100644 stable/anonaddy/12.0.21/templates/_appkey.tpl create mode 100644 stable/anonaddy/12.0.21/templates/common.yaml rename stable/{ariang/3.0.8 => anonaddy/12.0.21}/values.yaml (100%) delete mode 100644 stable/aria2/7.0.7/CHANGELOG.md delete mode 100644 stable/aria2/7.0.7/Chart.yaml delete mode 100644 stable/aria2/7.0.7/app-changelog.md delete mode 100644 stable/aria2/7.0.7/app-readme.md delete mode 100644 stable/aria2/7.0.7/questions.yaml create mode 100644 stable/aria2/7.0.8/CHANGELOG.md create mode 100644 stable/aria2/7.0.8/Chart.yaml rename stable/{ariang/3.0.8 => aria2/7.0.8}/README.md (100%) create mode 100644 stable/aria2/7.0.8/app-changelog.md create mode 100644 stable/aria2/7.0.8/app-readme.md rename stable/{audiobookshelf/4.0.15 => aria2/7.0.8}/charts/common-11.1.2.tgz (100%) rename stable/aria2/{7.0.7 => 7.0.8}/ix_values.yaml (100%) create mode 100644 stable/aria2/7.0.8/questions.yaml rename stable/aria2/{7.0.7 => 7.0.8}/templates/common.yaml (100%) rename stable/{audiobookshelf/4.0.15 => aria2/7.0.8}/values.yaml (100%) delete mode 100644 stable/ariang/3.0.8/CHANGELOG.md delete mode 100644 stable/ariang/3.0.8/Chart.yaml delete mode 100644 stable/ariang/3.0.8/app-changelog.md delete mode 100644 stable/ariang/3.0.8/app-readme.md delete mode 100644 stable/ariang/3.0.8/questions.yaml create mode 100644 stable/ariang/3.0.9/CHANGELOG.md create mode 100644 stable/ariang/3.0.9/Chart.yaml rename stable/{audiobookshelf/4.0.15 => ariang/3.0.9}/README.md (100%) create mode 100644 stable/ariang/3.0.9/app-changelog.md create mode 100644 stable/ariang/3.0.9/app-readme.md rename stable/{automatic-music-downloader/4.0.7 => ariang/3.0.9}/charts/common-11.1.2.tgz (100%) rename stable/ariang/{3.0.8 => 3.0.9}/ix_values.yaml (100%) create mode 100644 stable/ariang/3.0.9/questions.yaml rename stable/ariang/{3.0.8 => 3.0.9}/templates/common.yaml (100%) rename stable/{automatic-music-downloader/4.0.7 => ariang/3.0.9}/values.yaml (100%) delete mode 100644 stable/audiobookshelf/4.0.15/CHANGELOG.md delete mode 100644 stable/audiobookshelf/4.0.15/Chart.yaml delete mode 100644 stable/audiobookshelf/4.0.15/app-changelog.md delete mode 100644 stable/audiobookshelf/4.0.15/app-readme.md delete mode 100644 stable/audiobookshelf/4.0.15/questions.yaml create mode 100644 stable/audiobookshelf/4.0.16/CHANGELOG.md create mode 100644 stable/audiobookshelf/4.0.16/Chart.yaml rename stable/{automatic-music-downloader/4.0.7 => audiobookshelf/4.0.16}/README.md (100%) create mode 100644 stable/audiobookshelf/4.0.16/app-changelog.md create mode 100644 stable/audiobookshelf/4.0.16/app-readme.md rename stable/{avidemux/3.0.7 => audiobookshelf/4.0.16}/charts/common-11.1.2.tgz (100%) rename stable/audiobookshelf/{4.0.15 => 4.0.16}/ix_values.yaml (100%) create mode 100644 stable/audiobookshelf/4.0.16/questions.yaml rename stable/audiobookshelf/{4.0.15 => 4.0.16}/templates/_secrets.tpl (100%) rename stable/audiobookshelf/{4.0.15 => 4.0.16}/templates/common.yaml (100%) rename stable/{avidemux/3.0.7 => audiobookshelf/4.0.16}/values.yaml (100%) delete mode 100644 stable/automatic-music-downloader/4.0.7/CHANGELOG.md delete mode 100644 stable/automatic-music-downloader/4.0.7/Chart.yaml delete mode 100644 stable/automatic-music-downloader/4.0.7/app-changelog.md delete mode 100644 stable/automatic-music-downloader/4.0.7/app-readme.md delete mode 100644 stable/automatic-music-downloader/4.0.7/questions.yaml create mode 100644 stable/automatic-music-downloader/4.0.8/CHANGELOG.md create mode 100644 stable/automatic-music-downloader/4.0.8/Chart.yaml rename stable/{avidemux/3.0.7 => automatic-music-downloader/4.0.8}/README.md (100%) create mode 100644 stable/automatic-music-downloader/4.0.8/app-changelog.md create mode 100644 stable/automatic-music-downloader/4.0.8/app-readme.md rename stable/{baserow/6.0.24 => automatic-music-downloader/4.0.8}/charts/common-11.1.2.tgz (100%) rename stable/automatic-music-downloader/{4.0.7 => 4.0.8}/ix_values.yaml (100%) create mode 100644 stable/automatic-music-downloader/4.0.8/questions.yaml rename stable/automatic-music-downloader/{4.0.7 => 4.0.8}/templates/common.yaml (100%) rename stable/{baserow/6.0.24 => automatic-music-downloader/4.0.8}/values.yaml (100%) delete mode 100644 stable/avidemux/3.0.7/CHANGELOG.md delete mode 100644 stable/avidemux/3.0.7/Chart.yaml delete mode 100644 stable/avidemux/3.0.7/app-changelog.md delete mode 100644 stable/avidemux/3.0.7/app-readme.md delete mode 100644 stable/avidemux/3.0.7/questions.yaml create mode 100644 stable/avidemux/3.0.8/CHANGELOG.md create mode 100644 stable/avidemux/3.0.8/Chart.yaml rename stable/{baserow/6.0.24 => avidemux/3.0.8}/README.md (100%) create mode 100644 stable/avidemux/3.0.8/app-changelog.md create mode 100644 stable/avidemux/3.0.8/app-readme.md rename stable/{browserless-chrome/4.0.9 => avidemux/3.0.8}/charts/common-11.1.2.tgz (100%) rename stable/avidemux/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/avidemux/3.0.8/questions.yaml rename stable/avidemux/{3.0.7 => 3.0.8}/templates/common.yaml (100%) rename stable/{browserless-chrome/4.0.9 => avidemux/3.0.8}/values.yaml (100%) delete mode 100644 stable/baserow/6.0.24/CHANGELOG.md delete mode 100644 stable/baserow/6.0.24/Chart.yaml delete mode 100644 stable/baserow/6.0.24/app-changelog.md create mode 100644 stable/baserow/6.0.25/CHANGELOG.md create mode 100644 stable/baserow/6.0.25/Chart.yaml rename stable/{browserless-chrome/4.0.9 => baserow/6.0.25}/README.md (100%) create mode 100644 stable/baserow/6.0.25/app-changelog.md rename stable/baserow/{6.0.24 => 6.0.25}/app-readme.md (100%) rename stable/{chronos/3.0.7 => baserow/6.0.25}/charts/common-11.1.2.tgz (100%) rename stable/baserow/{6.0.24 => 6.0.25}/charts/postgresql-11.0.22.tgz (100%) rename stable/{grist/7.0.22 => baserow/6.0.25}/charts/redis-5.0.29.tgz (100%) rename stable/baserow/{6.0.24 => 6.0.25}/ix_values.yaml (100%) rename stable/baserow/{6.0.24 => 6.0.25}/questions.yaml (100%) rename stable/baserow/{6.0.24 => 6.0.25}/templates/_secrets.tpl (100%) rename stable/baserow/{6.0.24 => 6.0.25}/templates/common.yaml (100%) rename stable/{chronos/3.0.7 => baserow/6.0.25}/values.yaml (100%) create mode 100644 stable/browserless-chrome/4.0.10/CHANGELOG.md create mode 100644 stable/browserless-chrome/4.0.10/Chart.yaml rename stable/{chronos/3.0.7 => browserless-chrome/4.0.10}/README.md (100%) create mode 100644 stable/browserless-chrome/4.0.10/app-changelog.md create mode 100644 stable/browserless-chrome/4.0.10/app-readme.md rename stable/{clamav/5.0.12 => browserless-chrome/4.0.10}/charts/common-11.1.2.tgz (100%) rename stable/browserless-chrome/{4.0.9 => 4.0.10}/ix_values.yaml (100%) create mode 100644 stable/browserless-chrome/4.0.10/questions.yaml rename stable/browserless-chrome/{4.0.9 => 4.0.10}/templates/common.yaml (100%) rename stable/{clamav/5.0.12 => browserless-chrome/4.0.10}/values.yaml (100%) delete mode 100644 stable/browserless-chrome/4.0.9/CHANGELOG.md delete mode 100644 stable/browserless-chrome/4.0.9/Chart.yaml delete mode 100644 stable/browserless-chrome/4.0.9/app-changelog.md delete mode 100644 stable/browserless-chrome/4.0.9/app-readme.md delete mode 100644 stable/browserless-chrome/4.0.9/questions.yaml delete mode 100644 stable/chronos/3.0.7/CHANGELOG.md delete mode 100644 stable/chronos/3.0.7/Chart.yaml delete mode 100644 stable/chronos/3.0.7/app-changelog.md delete mode 100644 stable/chronos/3.0.7/app-readme.md delete mode 100644 stable/chronos/3.0.7/questions.yaml create mode 100644 stable/chronos/3.0.8/CHANGELOG.md create mode 100644 stable/chronos/3.0.8/Chart.yaml rename stable/{clamav/5.0.12 => chronos/3.0.8}/README.md (100%) create mode 100644 stable/chronos/3.0.8/app-changelog.md create mode 100644 stable/chronos/3.0.8/app-readme.md rename stable/{commento-plusplus/6.0.19 => chronos/3.0.8}/charts/common-11.1.2.tgz (100%) rename stable/chronos/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/chronos/3.0.8/questions.yaml rename stable/chronos/{3.0.7 => 3.0.8}/templates/common.yaml (100%) rename stable/{commento-plusplus/6.0.19 => chronos/3.0.8}/values.yaml (100%) delete mode 100644 stable/clamav/5.0.12/CHANGELOG.md delete mode 100644 stable/clamav/5.0.12/Chart.yaml delete mode 100644 stable/clamav/5.0.12/app-changelog.md delete mode 100644 stable/clamav/5.0.12/app-readme.md delete mode 100644 stable/clamav/5.0.12/questions.yaml create mode 100644 stable/clamav/5.0.13/CHANGELOG.md create mode 100644 stable/clamav/5.0.13/Chart.yaml rename stable/{commento-plusplus/6.0.19 => clamav/5.0.13}/README.md (100%) create mode 100644 stable/clamav/5.0.13/app-changelog.md create mode 100644 stable/clamav/5.0.13/app-readme.md rename stable/{cryptofolio/6.0.7 => clamav/5.0.13}/charts/common-11.1.2.tgz (100%) rename stable/clamav/{5.0.12 => 5.0.13}/ix_values.yaml (100%) create mode 100644 stable/clamav/5.0.13/questions.yaml rename stable/clamav/{5.0.12 => 5.0.13}/templates/_cronjob.tpl (100%) rename stable/clamav/{5.0.12 => 5.0.13}/templates/common.yaml (100%) rename stable/{cryptofolio/6.0.7 => clamav/5.0.13}/values.yaml (100%) delete mode 100644 stable/commento-plusplus/6.0.19/CHANGELOG.md delete mode 100644 stable/commento-plusplus/6.0.19/Chart.yaml delete mode 100644 stable/commento-plusplus/6.0.19/app-changelog.md create mode 100644 stable/commento-plusplus/6.0.20/CHANGELOG.md create mode 100644 stable/commento-plusplus/6.0.20/Chart.yaml rename stable/{cryptofolio/6.0.7 => commento-plusplus/6.0.20}/README.md (100%) create mode 100644 stable/commento-plusplus/6.0.20/app-changelog.md rename stable/commento-plusplus/{6.0.19 => 6.0.20}/app-readme.md (100%) rename stable/{cyberchef/4.0.24 => commento-plusplus/6.0.20}/charts/common-11.1.2.tgz (100%) rename stable/commento-plusplus/{6.0.19 => 6.0.20}/charts/postgresql-11.0.22.tgz (100%) rename stable/commento-plusplus/{6.0.19 => 6.0.20}/ix_values.yaml (100%) rename stable/commento-plusplus/{6.0.19 => 6.0.20}/questions.yaml (100%) rename stable/commento-plusplus/{6.0.19 => 6.0.20}/templates/common.yaml (100%) rename stable/{cyberchef/4.0.24 => commento-plusplus/6.0.20}/values.yaml (100%) delete mode 100644 stable/cryptofolio/6.0.7/CHANGELOG.md delete mode 100644 stable/cryptofolio/6.0.7/Chart.yaml delete mode 100644 stable/cryptofolio/6.0.7/app-changelog.md delete mode 100644 stable/cryptofolio/6.0.7/app-readme.md delete mode 100644 stable/cryptofolio/6.0.7/questions.yaml create mode 100644 stable/cryptofolio/6.0.8/CHANGELOG.md create mode 100644 stable/cryptofolio/6.0.8/Chart.yaml rename stable/{cyberchef/4.0.24 => cryptofolio/6.0.8}/README.md (100%) create mode 100644 stable/cryptofolio/6.0.8/app-changelog.md create mode 100644 stable/cryptofolio/6.0.8/app-readme.md rename stable/{czkawka/3.0.12 => cryptofolio/6.0.8}/charts/common-11.1.2.tgz (100%) rename stable/cryptofolio/{6.0.7 => 6.0.8}/ix_values.yaml (100%) create mode 100644 stable/cryptofolio/6.0.8/questions.yaml rename stable/cryptofolio/{6.0.7 => 6.0.8}/templates/common.yaml (100%) rename stable/{czkawka/3.0.12 => cryptofolio/6.0.8}/values.yaml (100%) delete mode 100644 stable/cyberchef/4.0.24/CHANGELOG.md delete mode 100644 stable/cyberchef/4.0.24/Chart.yaml delete mode 100644 stable/cyberchef/4.0.24/app-changelog.md create mode 100644 stable/cyberchef/4.0.25/CHANGELOG.md create mode 100644 stable/cyberchef/4.0.25/Chart.yaml rename stable/{czkawka/3.0.12 => cyberchef/4.0.25}/README.md (100%) create mode 100644 stable/cyberchef/4.0.25/app-changelog.md rename stable/cyberchef/{4.0.24 => 4.0.25}/app-readme.md (100%) rename stable/{dashdot/3.0.11 => cyberchef/4.0.25}/charts/common-11.1.2.tgz (100%) rename stable/cyberchef/{4.0.24 => 4.0.25}/ix_values.yaml (100%) rename stable/cyberchef/{4.0.24 => 4.0.25}/questions.yaml (100%) rename stable/cyberchef/{4.0.24 => 4.0.25}/templates/common.yaml (100%) rename stable/{dashdot/3.0.11 => cyberchef/4.0.25}/values.yaml (100%) delete mode 100644 stable/czkawka/3.0.12/CHANGELOG.md delete mode 100644 stable/czkawka/3.0.12/Chart.yaml delete mode 100644 stable/czkawka/3.0.12/app-changelog.md delete mode 100644 stable/czkawka/3.0.12/app-readme.md delete mode 100644 stable/czkawka/3.0.12/questions.yaml create mode 100644 stable/czkawka/3.0.13/CHANGELOG.md create mode 100644 stable/czkawka/3.0.13/Chart.yaml rename stable/{dashdot/3.0.11 => czkawka/3.0.13}/README.md (100%) create mode 100644 stable/czkawka/3.0.13/app-changelog.md create mode 100644 stable/czkawka/3.0.13/app-readme.md rename stable/{dizquetv/9.0.7 => czkawka/3.0.13}/charts/common-11.1.2.tgz (100%) rename stable/czkawka/{3.0.12 => 3.0.13}/ix_values.yaml (100%) create mode 100644 stable/czkawka/3.0.13/questions.yaml rename stable/czkawka/{3.0.12 => 3.0.13}/templates/common.yaml (100%) rename stable/{dizquetv/9.0.7 => czkawka/3.0.13}/values.yaml (100%) delete mode 100644 stable/dashdot/3.0.11/CHANGELOG.md delete mode 100644 stable/dashdot/3.0.11/Chart.yaml delete mode 100644 stable/dashdot/3.0.11/app-changelog.md create mode 100644 stable/dashdot/3.0.12/CHANGELOG.md create mode 100644 stable/dashdot/3.0.12/Chart.yaml rename stable/{dizquetv/9.0.7 => dashdot/3.0.12}/README.md (100%) create mode 100644 stable/dashdot/3.0.12/app-changelog.md rename stable/dashdot/{3.0.11 => 3.0.12}/app-readme.md (100%) rename stable/{docusaurus/3.0.7 => dashdot/3.0.12}/charts/common-11.1.2.tgz (100%) rename stable/dashdot/{3.0.11 => 3.0.12}/ix_values.yaml (100%) rename stable/dashdot/{3.0.11 => 3.0.12}/questions.yaml (100%) rename stable/dashdot/{3.0.11 => 3.0.12}/templates/common.yaml (100%) rename stable/{docusaurus/3.0.7 => dashdot/3.0.12}/values.yaml (100%) create mode 100644 stable/deconz/10.0.13/CHANGELOG.md create mode 100644 stable/deconz/10.0.13/Chart.yaml rename stable/{docusaurus/3.0.7 => deconz/10.0.13}/README.md (100%) create mode 100644 stable/deconz/10.0.13/app-changelog.md create mode 100644 stable/deconz/10.0.13/app-readme.md rename stable/{dokuwiki/5.0.18 => deconz/10.0.13}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/deconz/10.0.13/ix_values.yaml create mode 100644 stable/deconz/10.0.13/questions.yaml rename stable/{dizquetv/9.0.7 => deconz/10.0.13}/templates/common.yaml (100%) rename stable/{dokuwiki/5.0.18 => deconz/10.0.13}/values.yaml (100%) delete mode 100644 stable/dizquetv/9.0.7/CHANGELOG.md delete mode 100644 stable/dizquetv/9.0.7/Chart.yaml delete mode 100644 stable/dizquetv/9.0.7/app-changelog.md delete mode 100644 stable/dizquetv/9.0.7/app-readme.md delete mode 100644 stable/dizquetv/9.0.7/questions.yaml create mode 100644 stable/dizquetv/9.0.8/CHANGELOG.md create mode 100644 stable/dizquetv/9.0.8/Chart.yaml rename stable/{dokuwiki/5.0.18 => dizquetv/9.0.8}/README.md (100%) create mode 100644 stable/dizquetv/9.0.8/app-changelog.md create mode 100644 stable/dizquetv/9.0.8/app-readme.md rename stable/{drawio/4.0.19 => dizquetv/9.0.8}/charts/common-11.1.2.tgz (100%) rename stable/dizquetv/{9.0.7 => 9.0.8}/ix_values.yaml (100%) create mode 100644 stable/dizquetv/9.0.8/questions.yaml rename stable/{docusaurus/3.0.7 => dizquetv/9.0.8}/templates/common.yaml (100%) rename stable/{drawio/4.0.19 => dizquetv/9.0.8}/values.yaml (100%) delete mode 100644 stable/docusaurus/3.0.7/CHANGELOG.md delete mode 100644 stable/docusaurus/3.0.7/Chart.yaml delete mode 100644 stable/docusaurus/3.0.7/app-changelog.md delete mode 100644 stable/docusaurus/3.0.7/app-readme.md delete mode 100644 stable/docusaurus/3.0.7/questions.yaml create mode 100644 stable/docusaurus/3.0.8/CHANGELOG.md create mode 100644 stable/docusaurus/3.0.8/Chart.yaml rename stable/{drawio/4.0.19 => docusaurus/3.0.8}/README.md (100%) create mode 100644 stable/docusaurus/3.0.8/app-changelog.md create mode 100644 stable/docusaurus/3.0.8/app-readme.md rename stable/{dupeguru => docusaurus}/3.0.8/charts/common-11.1.2.tgz (100%) rename stable/docusaurus/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/docusaurus/3.0.8/questions.yaml rename stable/{dokuwiki/5.0.18 => docusaurus/3.0.8}/templates/common.yaml (100%) rename stable/{dupeguru => docusaurus}/3.0.8/values.yaml (100%) delete mode 100644 stable/dokuwiki/5.0.18/CHANGELOG.md delete mode 100644 stable/dokuwiki/5.0.18/Chart.yaml delete mode 100644 stable/dokuwiki/5.0.18/app-changelog.md create mode 100644 stable/dokuwiki/5.0.19/CHANGELOG.md create mode 100644 stable/dokuwiki/5.0.19/Chart.yaml rename stable/{dupeguru/3.0.8 => dokuwiki/5.0.19}/README.md (100%) create mode 100644 stable/dokuwiki/5.0.19/app-changelog.md rename stable/dokuwiki/{5.0.18 => 5.0.19}/app-readme.md (100%) rename stable/{filebot/3.0.9 => dokuwiki/5.0.19}/charts/common-11.1.2.tgz (100%) rename stable/dokuwiki/{5.0.18 => 5.0.19}/ix_values.yaml (100%) rename stable/dokuwiki/{5.0.18 => 5.0.19}/questions.yaml (100%) rename stable/{drawio/4.0.19 => dokuwiki/5.0.19}/templates/common.yaml (100%) rename stable/{filebot/3.0.9 => dokuwiki/5.0.19}/values.yaml (100%) delete mode 100644 stable/drawio/4.0.19/CHANGELOG.md delete mode 100644 stable/drawio/4.0.19/Chart.yaml delete mode 100644 stable/drawio/4.0.19/app-changelog.md create mode 100644 stable/drawio/4.0.20/CHANGELOG.md create mode 100644 stable/drawio/4.0.20/Chart.yaml rename stable/{filebot/3.0.9 => drawio/4.0.20}/README.md (100%) create mode 100644 stable/drawio/4.0.20/app-changelog.md rename stable/drawio/{4.0.19 => 4.0.20}/app-readme.md (100%) rename stable/{fileflows/4.0.9 => drawio/4.0.20}/charts/common-11.1.2.tgz (100%) rename stable/drawio/{4.0.19 => 4.0.20}/ix_values.yaml (100%) rename stable/drawio/{4.0.19 => 4.0.20}/questions.yaml (100%) rename stable/{dupeguru/3.0.8 => drawio/4.0.20}/templates/common.yaml (100%) rename stable/{fileflows/4.0.9 => drawio/4.0.20}/values.yaml (100%) delete mode 100644 stable/dupeguru/3.0.8/CHANGELOG.md delete mode 100644 stable/dupeguru/3.0.8/Chart.yaml delete mode 100644 stable/dupeguru/3.0.8/app-changelog.md create mode 100644 stable/dupeguru/3.0.9/CHANGELOG.md create mode 100644 stable/dupeguru/3.0.9/Chart.yaml rename stable/{fileflows/4.0.9 => dupeguru/3.0.9}/README.md (100%) create mode 100644 stable/dupeguru/3.0.9/app-changelog.md rename stable/dupeguru/{3.0.8 => 3.0.9}/app-readme.md (100%) rename stable/{filerun/6.0.17 => dupeguru/3.0.9}/charts/common-11.1.2.tgz (100%) rename stable/dupeguru/{3.0.8 => 3.0.9}/ix_values.yaml (100%) rename stable/dupeguru/{3.0.8 => 3.0.9}/questions.yaml (100%) rename stable/{filebot => dupeguru}/3.0.9/templates/common.yaml (100%) rename stable/{filerun/6.0.17 => dupeguru/3.0.9}/values.yaml (100%) create mode 100644 stable/esphome/13.0.18/CHANGELOG.md create mode 100644 stable/esphome/13.0.18/Chart.yaml rename stable/{filerun/6.0.17 => esphome/13.0.18}/README.md (100%) create mode 100644 stable/esphome/13.0.18/app-changelog.md create mode 100644 stable/esphome/13.0.18/app-readme.md rename stable/{flashpaper/3.0.4 => esphome/13.0.18}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/esphome/13.0.18/ix_values.yaml create mode 100644 stable/esphome/13.0.18/questions.yaml rename stable/{fileflows/4.0.9 => esphome/13.0.18}/templates/common.yaml (100%) rename stable/{flashpaper/3.0.4 => esphome/13.0.18}/values.yaml (100%) create mode 100644 stable/filebot/3.0.10/CHANGELOG.md create mode 100644 stable/filebot/3.0.10/Chart.yaml rename stable/{flashpaper/3.0.4 => filebot/3.0.10}/README.md (100%) create mode 100644 stable/filebot/3.0.10/app-changelog.md rename stable/filebot/{3.0.9 => 3.0.10}/app-readme.md (100%) rename stable/{flexget/4.0.18 => filebot/3.0.10}/charts/common-11.1.2.tgz (100%) rename stable/filebot/{3.0.9 => 3.0.10}/ix_values.yaml (100%) create mode 100644 stable/filebot/3.0.10/questions.yaml rename stable/{filerun/6.0.17 => filebot/3.0.10}/templates/common.yaml (100%) rename stable/{flexget/4.0.18 => filebot/3.0.10}/values.yaml (100%) delete mode 100644 stable/filebot/3.0.9/CHANGELOG.md delete mode 100644 stable/filebot/3.0.9/Chart.yaml delete mode 100644 stable/filebot/3.0.9/app-changelog.md delete mode 100644 stable/filebot/3.0.9/questions.yaml create mode 100644 stable/fileflows/4.0.10/CHANGELOG.md create mode 100644 stable/fileflows/4.0.10/Chart.yaml rename stable/{flexget/4.0.18 => fileflows/4.0.10}/README.md (100%) create mode 100644 stable/fileflows/4.0.10/app-changelog.md create mode 100644 stable/fileflows/4.0.10/app-readme.md rename stable/{fluidd/4.0.11 => fileflows/4.0.10}/charts/common-11.1.2.tgz (100%) rename stable/fileflows/{4.0.9 => 4.0.10}/ix_values.yaml (100%) create mode 100644 stable/fileflows/4.0.10/questions.yaml rename stable/{flexget/4.0.18 => fileflows/4.0.10}/templates/common.yaml (100%) rename stable/{fluidd/4.0.11 => fileflows/4.0.10}/values.yaml (100%) delete mode 100644 stable/fileflows/4.0.9/CHANGELOG.md delete mode 100644 stable/fileflows/4.0.9/Chart.yaml delete mode 100644 stable/fileflows/4.0.9/app-changelog.md delete mode 100644 stable/fileflows/4.0.9/app-readme.md delete mode 100644 stable/fileflows/4.0.9/questions.yaml delete mode 100644 stable/filerun/6.0.17/CHANGELOG.md delete mode 100644 stable/filerun/6.0.17/Chart.yaml delete mode 100644 stable/filerun/6.0.17/app-changelog.md create mode 100644 stable/filerun/6.0.18/CHANGELOG.md create mode 100644 stable/filerun/6.0.18/Chart.yaml rename stable/{fluidd/4.0.11 => filerun/6.0.18}/README.md (100%) create mode 100644 stable/filerun/6.0.18/app-changelog.md rename stable/filerun/{6.0.17 => 6.0.18}/app-readme.md (100%) rename stable/{gonic/8.0.9 => filerun/6.0.18}/charts/common-11.1.2.tgz (100%) rename stable/{koel/6.0.22 => filerun/6.0.18}/charts/mariadb-5.0.25.tgz (100%) rename stable/filerun/{6.0.17 => 6.0.18}/ix_values.yaml (100%) rename stable/filerun/{6.0.17 => 6.0.18}/questions.yaml (100%) rename stable/{fluidd/4.0.11 => filerun/6.0.18}/templates/common.yaml (100%) rename stable/{gonic/8.0.9 => filerun/6.0.18}/values.yaml (100%) delete mode 100644 stable/flashpaper/3.0.4/CHANGELOG.md delete mode 100644 stable/flashpaper/3.0.4/Chart.yaml delete mode 100644 stable/flashpaper/3.0.4/app-changelog.md delete mode 100644 stable/flashpaper/3.0.4/app-readme.md delete mode 100644 stable/flashpaper/3.0.4/questions.yaml create mode 100644 stable/flashpaper/3.0.5/CHANGELOG.md create mode 100644 stable/flashpaper/3.0.5/Chart.yaml rename stable/{gonic/8.0.9 => flashpaper/3.0.5}/README.md (100%) create mode 100644 stable/flashpaper/3.0.5/app-changelog.md create mode 100644 stable/flashpaper/3.0.5/app-readme.md rename stable/{grist/7.0.22 => flashpaper/3.0.5}/charts/common-11.1.2.tgz (100%) rename stable/flashpaper/{3.0.4 => 3.0.5}/ix_values.yaml (100%) create mode 100644 stable/flashpaper/3.0.5/questions.yaml rename stable/flashpaper/{3.0.4 => 3.0.5}/templates/common.yaml (100%) rename stable/{grist/7.0.22 => flashpaper/3.0.5}/values.yaml (100%) delete mode 100644 stable/flexget/4.0.18/CHANGELOG.md delete mode 100644 stable/flexget/4.0.18/Chart.yaml delete mode 100644 stable/flexget/4.0.18/app-changelog.md create mode 100644 stable/flexget/4.0.19/CHANGELOG.md create mode 100644 stable/flexget/4.0.19/Chart.yaml rename stable/{grist/7.0.22 => flexget/4.0.19}/README.md (100%) create mode 100644 stable/flexget/4.0.19/app-changelog.md rename stable/flexget/{4.0.18 => 4.0.19}/app-readme.md (100%) rename stable/{guacamole-client/7.0.19 => flexget/4.0.19}/charts/common-11.1.2.tgz (100%) rename stable/flexget/{4.0.18 => 4.0.19}/ix_values.yaml (100%) rename stable/flexget/{4.0.18 => 4.0.19}/questions.yaml (100%) rename stable/{gonic/8.0.9 => flexget/4.0.19}/templates/common.yaml (100%) rename stable/{guacamole-client/7.0.19 => flexget/4.0.19}/values.yaml (100%) delete mode 100644 stable/fluidd/4.0.11/CHANGELOG.md delete mode 100644 stable/fluidd/4.0.11/Chart.yaml delete mode 100644 stable/fluidd/4.0.11/app-changelog.md delete mode 100644 stable/fluidd/4.0.11/app-readme.md delete mode 100644 stable/fluidd/4.0.11/questions.yaml create mode 100644 stable/fluidd/4.0.12/CHANGELOG.md create mode 100644 stable/fluidd/4.0.12/Chart.yaml rename stable/{guacamole-client/7.0.19 => fluidd/4.0.12}/README.md (100%) create mode 100644 stable/fluidd/4.0.12/app-changelog.md create mode 100644 stable/fluidd/4.0.12/app-readme.md rename stable/{hammond/4.0.7 => fluidd/4.0.12}/charts/common-11.1.2.tgz (100%) rename stable/fluidd/{4.0.11 => 4.0.12}/ix_values.yaml (100%) create mode 100644 stable/fluidd/4.0.12/questions.yaml rename stable/{impostor-server/3.0.12 => fluidd/4.0.12}/templates/common.yaml (100%) rename stable/{hammond/4.0.7 => fluidd/4.0.12}/values.yaml (100%) create mode 100644 stable/focalboard/12.0.22/CHANGELOG.md create mode 100644 stable/focalboard/12.0.22/Chart.yaml rename stable/{hammond/4.0.7 => focalboard/12.0.22}/README.md (100%) create mode 100644 stable/focalboard/12.0.22/app-changelog.md create mode 100644 stable/focalboard/12.0.22/app-readme.md rename stable/{homelablabelmaker/3.0.7 => focalboard/12.0.22}/charts/common-11.1.2.tgz (100%) rename stable/{grist/7.0.22 => focalboard/12.0.22}/charts/postgresql-11.0.22.tgz (100%) create mode 100644 stable/focalboard/12.0.22/ix_values.yaml create mode 100644 stable/focalboard/12.0.22/questions.yaml create mode 100644 stable/focalboard/12.0.22/templates/_configmap.tpl create mode 100644 stable/focalboard/12.0.22/templates/common.yaml rename stable/{homelablabelmaker/3.0.7 => focalboard/12.0.22}/values.yaml (100%) create mode 100644 stable/gaps/13.0.8/CHANGELOG.md create mode 100644 stable/gaps/13.0.8/Chart.yaml rename stable/{homelablabelmaker/3.0.7 => gaps/13.0.8}/README.md (100%) create mode 100644 stable/gaps/13.0.8/app-changelog.md create mode 100644 stable/gaps/13.0.8/app-readme.md rename stable/{icantbelieveitsnotvaletudo/6.0.7 => gaps/13.0.8}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/gaps/13.0.8/ix_values.yaml create mode 100644 stable/gaps/13.0.8/questions.yaml rename stable/{ispy-agent-dvr/4.0.13 => gaps/13.0.8}/templates/common.yaml (100%) rename stable/{icantbelieveitsnotvaletudo/6.0.7 => gaps/13.0.8}/values.yaml (100%) create mode 100644 stable/gitea/12.0.26/CHANGELOG.md create mode 100644 stable/gitea/12.0.26/Chart.yaml rename stable/{icantbelieveitsnotvaletudo/6.0.7 => gitea/12.0.26}/README.md (100%) create mode 100644 stable/gitea/12.0.26/app-changelog.md create mode 100644 stable/gitea/12.0.26/app-readme.md rename stable/{impostor-server/3.0.12 => gitea/12.0.26}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/gitea/12.0.26/charts/memcached-5.0.24.tgz rename stable/{guacamole-client/7.0.19 => gitea/12.0.26}/charts/postgresql-11.0.22.tgz (100%) create mode 100644 stable/gitea/12.0.26/ix_values.yaml create mode 100644 stable/gitea/12.0.26/questions.yaml create mode 100644 stable/gitea/12.0.26/templates/_configmap.tpl create mode 100644 stable/gitea/12.0.26/templates/_secrets.tpl create mode 100644 stable/gitea/12.0.26/templates/common.yaml rename stable/{impostor-server/3.0.12 => gitea/12.0.26}/values.yaml (100%) create mode 100644 stable/gonic/8.0.10/CHANGELOG.md create mode 100644 stable/gonic/8.0.10/Chart.yaml rename stable/{impostor-server/3.0.12 => gonic/8.0.10}/README.md (100%) create mode 100644 stable/gonic/8.0.10/app-changelog.md create mode 100644 stable/gonic/8.0.10/app-readme.md rename stable/{inventree/7.0.27 => gonic/8.0.10}/charts/common-11.1.2.tgz (100%) rename stable/gonic/{8.0.9 => 8.0.10}/ix_values.yaml (100%) create mode 100644 stable/gonic/8.0.10/questions.yaml rename stable/{jellyseerr/4.0.9 => gonic/8.0.10}/templates/common.yaml (100%) rename stable/{inventree/7.0.27 => gonic/8.0.10}/values.yaml (100%) delete mode 100644 stable/gonic/8.0.9/CHANGELOG.md delete mode 100644 stable/gonic/8.0.9/Chart.yaml delete mode 100644 stable/gonic/8.0.9/app-changelog.md delete mode 100644 stable/gonic/8.0.9/app-readme.md delete mode 100644 stable/gonic/8.0.9/questions.yaml delete mode 100644 stable/grist/7.0.22/CHANGELOG.md delete mode 100644 stable/grist/7.0.22/Chart.yaml delete mode 100644 stable/grist/7.0.22/app-changelog.md create mode 100644 stable/grist/7.0.23/CHANGELOG.md create mode 100644 stable/grist/7.0.23/Chart.yaml rename stable/{inventree/7.0.27 => grist/7.0.23}/README.md (100%) create mode 100644 stable/grist/7.0.23/app-changelog.md rename stable/grist/{7.0.22 => 7.0.23}/app-readme.md (100%) rename stable/{ipfs/5.0.12 => grist/7.0.23}/charts/common-11.1.2.tgz (100%) rename stable/{inventree/7.0.27 => grist/7.0.23}/charts/postgresql-11.0.22.tgz (100%) rename stable/{inventree/7.0.27 => grist/7.0.23}/charts/redis-5.0.29.tgz (100%) rename stable/grist/{7.0.22 => 7.0.23}/ix_values.yaml (100%) rename stable/grist/{7.0.22 => 7.0.23}/questions.yaml (100%) rename stable/grist/{7.0.22 => 7.0.23}/templates/_config.tpl (100%) rename stable/grist/{7.0.22 => 7.0.23}/templates/_secret.tpl (100%) rename stable/grist/{7.0.22 => 7.0.23}/templates/common.yaml (100%) rename stable/{ipfs/5.0.12 => grist/7.0.23}/values.yaml (100%) delete mode 100644 stable/guacamole-client/7.0.19/CHANGELOG.md delete mode 100644 stable/guacamole-client/7.0.19/Chart.yaml delete mode 100644 stable/guacamole-client/7.0.19/app-changelog.md create mode 100644 stable/guacamole-client/7.0.20/CHANGELOG.md create mode 100644 stable/guacamole-client/7.0.20/Chart.yaml rename stable/{ipfs/5.0.12 => guacamole-client/7.0.20}/README.md (100%) create mode 100644 stable/guacamole-client/7.0.20/app-changelog.md rename stable/guacamole-client/{7.0.19 => 7.0.20}/app-readme.md (100%) rename stable/{ispy-agent-dvr/4.0.13 => guacamole-client/7.0.20}/charts/common-11.1.2.tgz (100%) rename stable/{kutt/6.0.20 => guacamole-client/7.0.20}/charts/postgresql-11.0.22.tgz (100%) rename stable/guacamole-client/{7.0.19 => 7.0.20}/ix_values.yaml (100%) rename stable/guacamole-client/{7.0.19 => 7.0.20}/questions.yaml (100%) rename stable/guacamole-client/{7.0.19 => 7.0.20}/templates/_configmap.tpl (100%) rename stable/guacamole-client/{7.0.19 => 7.0.20}/templates/common.yaml (100%) rename stable/{ispy-agent-dvr/4.0.13 => guacamole-client/7.0.20}/values.yaml (100%) delete mode 100644 stable/hammond/4.0.7/CHANGELOG.md delete mode 100644 stable/hammond/4.0.7/Chart.yaml delete mode 100644 stable/hammond/4.0.7/app-changelog.md delete mode 100644 stable/hammond/4.0.7/app-readme.md delete mode 100644 stable/hammond/4.0.7/questions.yaml create mode 100644 stable/hammond/4.0.8/CHANGELOG.md create mode 100644 stable/hammond/4.0.8/Chart.yaml rename stable/{ispy-agent-dvr/4.0.13 => hammond/4.0.8}/README.md (100%) create mode 100644 stable/hammond/4.0.8/app-changelog.md create mode 100644 stable/hammond/4.0.8/app-readme.md rename stable/{jellyseerr/4.0.9 => hammond/4.0.8}/charts/common-11.1.2.tgz (100%) rename stable/hammond/{4.0.7 => 4.0.8}/ix_values.yaml (100%) create mode 100644 stable/hammond/4.0.8/questions.yaml rename stable/hammond/{4.0.7 => 4.0.8}/templates/_secrets.tpl (100%) rename stable/hammond/{4.0.7 => 4.0.8}/templates/common.yaml (100%) rename stable/{jellyseerr/4.0.9 => hammond/4.0.8}/values.yaml (100%) create mode 100644 stable/handbrake/15.0.8/CHANGELOG.md create mode 100644 stable/handbrake/15.0.8/Chart.yaml rename stable/{jellyseerr/4.0.9 => handbrake/15.0.8}/README.md (100%) create mode 100644 stable/handbrake/15.0.8/app-changelog.md create mode 100644 stable/handbrake/15.0.8/app-readme.md rename stable/{koel/6.0.22 => handbrake/15.0.8}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/handbrake/15.0.8/ix_values.yaml create mode 100644 stable/handbrake/15.0.8/questions.yaml rename stable/{komga/8.0.10 => handbrake/15.0.8}/templates/common.yaml (100%) rename stable/{koel/6.0.22 => handbrake/15.0.8}/values.yaml (100%) create mode 100644 stable/heimdall/14.0.4/CHANGELOG.md create mode 100644 stable/heimdall/14.0.4/Chart.yaml rename stable/{koel/6.0.22 => heimdall/14.0.4}/README.md (100%) create mode 100644 stable/heimdall/14.0.4/app-changelog.md create mode 100644 stable/heimdall/14.0.4/app-readme.md rename stable/{komga/8.0.10 => heimdall/14.0.4}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/heimdall/14.0.4/ix_values.yaml create mode 100644 stable/heimdall/14.0.4/questions.yaml rename stable/{kopia/4.0.7 => heimdall/14.0.4}/templates/common.yaml (100%) rename stable/{komga/8.0.10 => heimdall/14.0.4}/values.yaml (100%) delete mode 100644 stable/homelablabelmaker/3.0.7/CHANGELOG.md delete mode 100644 stable/homelablabelmaker/3.0.7/Chart.yaml delete mode 100644 stable/homelablabelmaker/3.0.7/app-changelog.md delete mode 100644 stable/homelablabelmaker/3.0.7/app-readme.md delete mode 100644 stable/homelablabelmaker/3.0.7/questions.yaml create mode 100644 stable/homelablabelmaker/3.0.8/CHANGELOG.md create mode 100644 stable/homelablabelmaker/3.0.8/Chart.yaml rename stable/{komga/8.0.10 => homelablabelmaker/3.0.8}/README.md (100%) create mode 100644 stable/homelablabelmaker/3.0.8/app-changelog.md create mode 100644 stable/homelablabelmaker/3.0.8/app-readme.md rename stable/{kopia/4.0.7 => homelablabelmaker/3.0.8}/charts/common-11.1.2.tgz (100%) rename stable/homelablabelmaker/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/homelablabelmaker/3.0.8/questions.yaml rename stable/homelablabelmaker/{3.0.7 => 3.0.8}/templates/common.yaml (100%) rename stable/{kopia/4.0.7 => homelablabelmaker/3.0.8}/values.yaml (100%) delete mode 100644 stable/icantbelieveitsnotvaletudo/6.0.7/CHANGELOG.md delete mode 100644 stable/icantbelieveitsnotvaletudo/6.0.7/Chart.yaml delete mode 100644 stable/icantbelieveitsnotvaletudo/6.0.7/app-changelog.md delete mode 100644 stable/icantbelieveitsnotvaletudo/6.0.7/app-readme.md delete mode 100644 stable/icantbelieveitsnotvaletudo/6.0.7/questions.yaml create mode 100644 stable/icantbelieveitsnotvaletudo/6.0.8/CHANGELOG.md create mode 100644 stable/icantbelieveitsnotvaletudo/6.0.8/Chart.yaml rename stable/{kopia/4.0.7 => icantbelieveitsnotvaletudo/6.0.8}/README.md (100%) create mode 100644 stable/icantbelieveitsnotvaletudo/6.0.8/app-changelog.md create mode 100644 stable/icantbelieveitsnotvaletudo/6.0.8/app-readme.md rename stable/{kutt/6.0.20 => icantbelieveitsnotvaletudo/6.0.8}/charts/common-11.1.2.tgz (100%) rename stable/icantbelieveitsnotvaletudo/{6.0.7 => 6.0.8}/ix_values.yaml (100%) create mode 100644 stable/icantbelieveitsnotvaletudo/6.0.8/questions.yaml rename stable/icantbelieveitsnotvaletudo/{6.0.7 => 6.0.8}/templates/common.yaml (100%) rename stable/{kutt/6.0.20 => icantbelieveitsnotvaletudo/6.0.8}/values.yaml (100%) delete mode 100644 stable/impostor-server/3.0.12/CHANGELOG.md delete mode 100644 stable/impostor-server/3.0.12/Chart.yaml delete mode 100644 stable/impostor-server/3.0.12/app-changelog.md create mode 100644 stable/impostor-server/3.0.13/CHANGELOG.md create mode 100644 stable/impostor-server/3.0.13/Chart.yaml rename stable/{kutt/6.0.20 => impostor-server/3.0.13}/README.md (100%) create mode 100644 stable/impostor-server/3.0.13/app-changelog.md rename stable/impostor-server/{3.0.12 => 3.0.13}/app-readme.md (100%) rename stable/{lancache-monolithic/3.0.9 => impostor-server/3.0.13}/charts/common-11.1.2.tgz (100%) rename stable/impostor-server/{3.0.12 => 3.0.13}/ix_values.yaml (100%) rename stable/impostor-server/{3.0.12 => 3.0.13}/questions.yaml (100%) rename stable/{lancache-monolithic/3.0.9 => impostor-server/3.0.13}/templates/common.yaml (100%) rename stable/{lancache-monolithic/3.0.9 => impostor-server/3.0.13}/values.yaml (100%) delete mode 100644 stable/inventree/7.0.27/CHANGELOG.md delete mode 100644 stable/inventree/7.0.27/Chart.yaml delete mode 100644 stable/inventree/7.0.27/app-changelog.md create mode 100644 stable/inventree/7.0.28/CHANGELOG.md create mode 100644 stable/inventree/7.0.28/Chart.yaml rename stable/{lancache-monolithic/3.0.9 => inventree/7.0.28}/README.md (100%) create mode 100644 stable/inventree/7.0.28/app-changelog.md rename stable/inventree/{7.0.27 => 7.0.28}/app-readme.md (100%) rename stable/{lanraragi/4.0.9 => inventree/7.0.28}/charts/common-11.1.2.tgz (100%) rename stable/{nocodb/6.0.27 => inventree/7.0.28}/charts/postgresql-11.0.22.tgz (100%) rename stable/{kutt/6.0.20 => inventree/7.0.28}/charts/redis-5.0.29.tgz (100%) rename stable/inventree/{7.0.27 => 7.0.28}/ix_values.yaml (100%) rename stable/inventree/{7.0.27 => 7.0.28}/questions.yaml (100%) rename stable/inventree/{7.0.27 => 7.0.28}/templates/_configmap.tpl (100%) rename stable/inventree/{7.0.27 => 7.0.28}/templates/_init.tpl (100%) rename stable/inventree/{7.0.27 => 7.0.28}/templates/_nginx.tpl (100%) rename stable/inventree/{7.0.27 => 7.0.28}/templates/_secrets.tpl (100%) rename stable/inventree/{7.0.27 => 7.0.28}/templates/_worker.tpl (100%) rename stable/inventree/{7.0.27 => 7.0.28}/templates/common.yaml (100%) rename stable/{lanraragi/4.0.9 => inventree/7.0.28}/values.yaml (100%) delete mode 100644 stable/ipfs/5.0.12/CHANGELOG.md delete mode 100644 stable/ipfs/5.0.12/Chart.yaml delete mode 100644 stable/ipfs/5.0.12/app-changelog.md create mode 100644 stable/ipfs/5.0.13/CHANGELOG.md create mode 100644 stable/ipfs/5.0.13/Chart.yaml rename stable/{lanraragi/4.0.9 => ipfs/5.0.13}/README.md (100%) create mode 100644 stable/ipfs/5.0.13/app-changelog.md rename stable/ipfs/{5.0.12 => 5.0.13}/app-readme.md (100%) rename stable/{leantime/7.0.22 => ipfs/5.0.13}/charts/common-11.1.2.tgz (100%) rename stable/ipfs/{5.0.12 => 5.0.13}/ix_values.yaml (100%) rename stable/ipfs/{5.0.12 => 5.0.13}/questions.yaml (100%) rename stable/ipfs/{5.0.12 => 5.0.13}/templates/common.yaml (100%) rename stable/{leantime/7.0.22 => ipfs/5.0.13}/values.yaml (100%) delete mode 100644 stable/ispy-agent-dvr/4.0.13/CHANGELOG.md delete mode 100644 stable/ispy-agent-dvr/4.0.13/Chart.yaml delete mode 100644 stable/ispy-agent-dvr/4.0.13/app-changelog.md delete mode 100644 stable/ispy-agent-dvr/4.0.13/app-readme.md delete mode 100644 stable/ispy-agent-dvr/4.0.13/questions.yaml create mode 100644 stable/ispy-agent-dvr/4.0.14/CHANGELOG.md create mode 100644 stable/ispy-agent-dvr/4.0.14/Chart.yaml rename stable/{leantime/7.0.22 => ispy-agent-dvr/4.0.14}/README.md (100%) create mode 100644 stable/ispy-agent-dvr/4.0.14/app-changelog.md create mode 100644 stable/ispy-agent-dvr/4.0.14/app-readme.md rename stable/{libreddit/3.0.13 => ispy-agent-dvr/4.0.14}/charts/common-11.1.2.tgz (100%) rename stable/ispy-agent-dvr/{4.0.13 => 4.0.14}/ix_values.yaml (100%) create mode 100644 stable/ispy-agent-dvr/4.0.14/questions.yaml rename stable/{lanraragi/4.0.9 => ispy-agent-dvr/4.0.14}/templates/common.yaml (100%) rename stable/{libreddit/3.0.13 => ispy-agent-dvr/4.0.14}/values.yaml (100%) create mode 100644 stable/jellyseerr/4.0.10/CHANGELOG.md create mode 100644 stable/jellyseerr/4.0.10/Chart.yaml rename stable/{libreddit/3.0.13 => jellyseerr/4.0.10}/README.md (100%) create mode 100644 stable/jellyseerr/4.0.10/app-changelog.md rename stable/jellyseerr/{4.0.9 => 4.0.10}/app-readme.md (100%) rename stable/{linkace/7.0.21 => jellyseerr/4.0.10}/charts/common-11.1.2.tgz (100%) rename stable/jellyseerr/{4.0.9 => 4.0.10}/ix_values.yaml (100%) rename stable/jellyseerr/{4.0.9 => 4.0.10}/questions.yaml (100%) rename stable/{libreddit/3.0.13 => jellyseerr/4.0.10}/templates/common.yaml (100%) rename stable/{linkace/7.0.21 => jellyseerr/4.0.10}/values.yaml (100%) delete mode 100644 stable/jellyseerr/4.0.9/CHANGELOG.md delete mode 100644 stable/jellyseerr/4.0.9/Chart.yaml delete mode 100644 stable/jellyseerr/4.0.9/app-changelog.md create mode 100644 stable/joplin-server/11.0.23/CHANGELOG.md create mode 100644 stable/joplin-server/11.0.23/Chart.yaml rename stable/{linkace/7.0.21 => joplin-server/11.0.23}/README.md (100%) create mode 100644 stable/joplin-server/11.0.23/app-changelog.md create mode 100644 stable/joplin-server/11.0.23/app-readme.md rename stable/{linkding/4.0.10 => joplin-server/11.0.23}/charts/common-11.1.2.tgz (100%) rename stable/{outline/6.0.20 => joplin-server/11.0.23}/charts/postgresql-11.0.22.tgz (100%) create mode 100644 stable/joplin-server/11.0.23/ix_values.yaml create mode 100644 stable/joplin-server/11.0.23/questions.yaml rename stable/{linkding/4.0.10 => joplin-server/11.0.23}/templates/common.yaml (100%) rename stable/{linkding/4.0.10 => joplin-server/11.0.23}/values.yaml (100%) create mode 100644 stable/kanboard/11.0.21/CHANGELOG.md create mode 100644 stable/kanboard/11.0.21/Chart.yaml rename stable/{linkding/4.0.10 => kanboard/11.0.21}/README.md (100%) create mode 100644 stable/kanboard/11.0.21/app-changelog.md create mode 100644 stable/kanboard/11.0.21/app-readme.md rename stable/{loki/9.0.11 => kanboard/11.0.21}/charts/common-11.1.2.tgz (100%) rename stable/{photoview/7.0.19 => kanboard/11.0.21}/charts/postgresql-11.0.22.tgz (100%) create mode 100644 stable/kanboard/11.0.21/ix_values.yaml create mode 100644 stable/kanboard/11.0.21/questions.yaml rename stable/{loki/9.0.11 => kanboard/11.0.21}/templates/common.yaml (100%) rename stable/{loki/9.0.11 => kanboard/11.0.21}/values.yaml (100%) delete mode 100644 stable/koel/6.0.22/CHANGELOG.md delete mode 100644 stable/koel/6.0.22/Chart.yaml delete mode 100644 stable/koel/6.0.22/app-changelog.md create mode 100644 stable/koel/6.0.23/CHANGELOG.md create mode 100644 stable/koel/6.0.23/Chart.yaml rename stable/{loki/9.0.11 => koel/6.0.23}/README.md (100%) create mode 100644 stable/koel/6.0.23/app-changelog.md rename stable/koel/{6.0.22 => 6.0.23}/app-readme.md (100%) rename stable/{makemkv/4.0.8 => koel/6.0.23}/charts/common-11.1.2.tgz (100%) rename stable/{leantime/7.0.22 => koel/6.0.23}/charts/mariadb-5.0.25.tgz (100%) rename stable/koel/{6.0.22 => 6.0.23}/ix_values.yaml (100%) rename stable/koel/{6.0.22 => 6.0.23}/questions.yaml (100%) rename stable/koel/{6.0.22 => 6.0.23}/templates/_secrets.tpl (100%) rename stable/koel/{6.0.22 => 6.0.23}/templates/common.yaml (100%) rename stable/{makemkv/4.0.8 => koel/6.0.23}/values.yaml (100%) delete mode 100644 stable/komga/8.0.10/CHANGELOG.md delete mode 100644 stable/komga/8.0.10/Chart.yaml delete mode 100644 stable/komga/8.0.10/app-changelog.md create mode 100644 stable/komga/8.0.11/CHANGELOG.md create mode 100644 stable/komga/8.0.11/Chart.yaml rename stable/{makemkv/4.0.8 => komga/8.0.11}/README.md (100%) create mode 100644 stable/komga/8.0.11/app-changelog.md rename stable/komga/{8.0.10 => 8.0.11}/app-readme.md (100%) rename stable/{matomo/6.0.34 => komga/8.0.11}/charts/common-11.1.2.tgz (100%) rename stable/komga/{8.0.10 => 8.0.11}/ix_values.yaml (100%) rename stable/komga/{8.0.10 => 8.0.11}/questions.yaml (100%) rename stable/{makemkv/4.0.8 => komga/8.0.11}/templates/common.yaml (100%) rename stable/{matomo/6.0.34 => komga/8.0.11}/values.yaml (100%) delete mode 100644 stable/kopia/4.0.7/CHANGELOG.md delete mode 100644 stable/kopia/4.0.7/Chart.yaml delete mode 100644 stable/kopia/4.0.7/app-changelog.md delete mode 100644 stable/kopia/4.0.7/app-readme.md delete mode 100644 stable/kopia/4.0.7/questions.yaml create mode 100644 stable/kopia/4.0.8/CHANGELOG.md create mode 100644 stable/kopia/4.0.8/Chart.yaml rename stable/{matomo/6.0.34 => kopia/4.0.8}/README.md (100%) create mode 100644 stable/kopia/4.0.8/app-changelog.md create mode 100644 stable/kopia/4.0.8/app-readme.md rename stable/{mediainfo/3.0.10 => kopia/4.0.8}/charts/common-11.1.2.tgz (100%) rename stable/kopia/{4.0.7 => 4.0.8}/ix_values.yaml (100%) create mode 100644 stable/kopia/4.0.8/questions.yaml rename stable/{matomo/6.0.34 => kopia/4.0.8}/templates/common.yaml (100%) rename stable/{mediainfo/3.0.10 => kopia/4.0.8}/values.yaml (100%) delete mode 100644 stable/kutt/6.0.20/CHANGELOG.md delete mode 100644 stable/kutt/6.0.20/Chart.yaml delete mode 100644 stable/kutt/6.0.20/app-changelog.md create mode 100644 stable/kutt/6.0.21/CHANGELOG.md create mode 100644 stable/kutt/6.0.21/Chart.yaml rename stable/{mediainfo/3.0.10 => kutt/6.0.21}/README.md (100%) create mode 100644 stable/kutt/6.0.21/app-changelog.md rename stable/kutt/{6.0.20 => 6.0.21}/app-readme.md (100%) rename stable/{meshroom/4.0.7 => kutt/6.0.21}/charts/common-11.1.2.tgz (100%) rename stable/{spotweb/7.0.22 => kutt/6.0.21}/charts/postgresql-11.0.22.tgz (100%) rename stable/{linkace/7.0.21 => kutt/6.0.21}/charts/redis-5.0.29.tgz (100%) rename stable/kutt/{6.0.20 => 6.0.21}/ix_values.yaml (100%) rename stable/kutt/{6.0.20 => 6.0.21}/questions.yaml (100%) rename stable/kutt/{6.0.20 => 6.0.21}/templates/_secrets.tpl (100%) rename stable/kutt/{6.0.20 => 6.0.21}/templates/common.yaml (100%) rename stable/{meshroom/4.0.7 => kutt/6.0.21}/values.yaml (100%) create mode 100644 stable/lancache-monolithic/3.0.10/CHANGELOG.md create mode 100644 stable/lancache-monolithic/3.0.10/Chart.yaml rename stable/{meshroom/4.0.7 => lancache-monolithic/3.0.10}/README.md (100%) create mode 100644 stable/lancache-monolithic/3.0.10/app-changelog.md create mode 100644 stable/lancache-monolithic/3.0.10/app-readme.md rename stable/{minio-console/5.0.13 => lancache-monolithic/3.0.10}/charts/common-11.1.2.tgz (100%) rename stable/lancache-monolithic/{3.0.9 => 3.0.10}/ix_values.yaml (100%) create mode 100644 stable/lancache-monolithic/3.0.10/questions.yaml rename stable/{mediainfo => lancache-monolithic}/3.0.10/templates/common.yaml (100%) rename stable/{minio-console/5.0.13 => lancache-monolithic/3.0.10}/values.yaml (100%) delete mode 100644 stable/lancache-monolithic/3.0.9/CHANGELOG.md delete mode 100644 stable/lancache-monolithic/3.0.9/Chart.yaml delete mode 100644 stable/lancache-monolithic/3.0.9/app-changelog.md delete mode 100644 stable/lancache-monolithic/3.0.9/app-readme.md delete mode 100644 stable/lancache-monolithic/3.0.9/questions.yaml create mode 100644 stable/lanraragi/4.0.10/CHANGELOG.md create mode 100644 stable/lanraragi/4.0.10/Chart.yaml rename stable/{minio-console/5.0.13 => lanraragi/4.0.10}/README.md (100%) create mode 100644 stable/lanraragi/4.0.10/app-changelog.md create mode 100644 stable/lanraragi/4.0.10/app-readme.md rename stable/{mkvcleaver/3.0.7 => lanraragi/4.0.10}/charts/common-11.1.2.tgz (100%) rename stable/lanraragi/{4.0.9 => 4.0.10}/ix_values.yaml (100%) create mode 100644 stable/lanraragi/4.0.10/questions.yaml rename stable/{meshroom/4.0.7 => lanraragi/4.0.10}/templates/common.yaml (100%) rename stable/{mkvcleaver/3.0.7 => lanraragi/4.0.10}/values.yaml (100%) delete mode 100644 stable/lanraragi/4.0.9/CHANGELOG.md delete mode 100644 stable/lanraragi/4.0.9/Chart.yaml delete mode 100644 stable/lanraragi/4.0.9/app-changelog.md delete mode 100644 stable/lanraragi/4.0.9/app-readme.md delete mode 100644 stable/lanraragi/4.0.9/questions.yaml delete mode 100644 stable/leantime/7.0.22/CHANGELOG.md delete mode 100644 stable/leantime/7.0.22/Chart.yaml delete mode 100644 stable/leantime/7.0.22/app-changelog.md create mode 100644 stable/leantime/7.0.23/CHANGELOG.md create mode 100644 stable/leantime/7.0.23/Chart.yaml rename stable/{mkvcleaver/3.0.7 => leantime/7.0.23}/README.md (100%) create mode 100644 stable/leantime/7.0.23/app-changelog.md rename stable/leantime/{7.0.22 => 7.0.23}/app-readme.md (100%) rename stable/{mkvtoolnix/4.0.9 => leantime/7.0.23}/charts/common-11.1.2.tgz (100%) rename stable/{linkace/7.0.21 => leantime/7.0.23}/charts/mariadb-5.0.25.tgz (100%) rename stable/leantime/{7.0.22 => 7.0.23}/ix_values.yaml (100%) rename stable/leantime/{7.0.22 => 7.0.23}/questions.yaml (100%) rename stable/leantime/{7.0.22 => 7.0.23}/templates/_secrets.tpl (100%) rename stable/leantime/{7.0.22 => 7.0.23}/templates/common.yaml (100%) rename stable/{mkvtoolnix/4.0.9 => leantime/7.0.23}/values.yaml (100%) delete mode 100644 stable/libreddit/3.0.13/CHANGELOG.md delete mode 100644 stable/libreddit/3.0.13/Chart.yaml delete mode 100644 stable/libreddit/3.0.13/app-changelog.md delete mode 100644 stable/libreddit/3.0.13/app-readme.md delete mode 100644 stable/libreddit/3.0.13/questions.yaml create mode 100644 stable/libreddit/3.0.14/CHANGELOG.md create mode 100644 stable/libreddit/3.0.14/Chart.yaml rename stable/{mkvtoolnix/4.0.9 => libreddit/3.0.14}/README.md (100%) create mode 100644 stable/libreddit/3.0.14/app-changelog.md create mode 100644 stable/libreddit/3.0.14/app-readme.md rename stable/{mymediaforalexa/3.0.7 => libreddit/3.0.14}/charts/common-11.1.2.tgz (100%) rename stable/libreddit/{3.0.13 => 3.0.14}/ix_values.yaml (100%) create mode 100644 stable/libreddit/3.0.14/questions.yaml rename stable/{minio-console/5.0.13 => libreddit/3.0.14}/templates/common.yaml (100%) rename stable/{mymediaforalexa/3.0.7 => libreddit/3.0.14}/values.yaml (100%) delete mode 100644 stable/linkace/7.0.21/CHANGELOG.md delete mode 100644 stable/linkace/7.0.21/Chart.yaml delete mode 100644 stable/linkace/7.0.21/app-changelog.md create mode 100644 stable/linkace/7.0.22/CHANGELOG.md create mode 100644 stable/linkace/7.0.22/Chart.yaml rename stable/{mymediaforalexa/3.0.7 => linkace/7.0.22}/README.md (100%) create mode 100644 stable/linkace/7.0.22/app-changelog.md rename stable/linkace/{7.0.21 => 7.0.22}/app-readme.md (100%) rename stable/{netdata/4.0.9 => linkace/7.0.22}/charts/common-11.1.2.tgz (100%) rename stable/{matomo/6.0.34 => linkace/7.0.22}/charts/mariadb-5.0.25.tgz (100%) rename stable/{nocodb/6.0.27 => linkace/7.0.22}/charts/redis-5.0.29.tgz (100%) rename stable/linkace/{7.0.21 => 7.0.22}/ix_values.yaml (100%) rename stable/linkace/{7.0.21 => 7.0.22}/questions.yaml (100%) rename stable/linkace/{7.0.21 => 7.0.22}/templates/_cronjob.tpl (100%) rename stable/linkace/{7.0.21 => 7.0.22}/templates/_secrets.tpl (100%) rename stable/linkace/{7.0.21 => 7.0.22}/templates/common.yaml (100%) rename stable/{netdata/4.0.9 => linkace/7.0.22}/values.yaml (100%) delete mode 100644 stable/linkding/4.0.10/CHANGELOG.md delete mode 100644 stable/linkding/4.0.10/Chart.yaml delete mode 100644 stable/linkding/4.0.10/app-changelog.md create mode 100644 stable/linkding/4.0.11/CHANGELOG.md create mode 100644 stable/linkding/4.0.11/Chart.yaml rename stable/{netdata/4.0.9 => linkding/4.0.11}/README.md (100%) create mode 100644 stable/linkding/4.0.11/app-changelog.md rename stable/linkding/{4.0.10 => 4.0.11}/app-readme.md (100%) rename stable/{nocodb/6.0.27 => linkding/4.0.11}/charts/common-11.1.2.tgz (100%) rename stable/linkding/{4.0.10 => 4.0.11}/ix_values.yaml (100%) rename stable/linkding/{4.0.10 => 4.0.11}/questions.yaml (100%) rename stable/{mkvcleaver/3.0.7 => linkding/4.0.11}/templates/common.yaml (100%) rename stable/{nocodb/6.0.27 => linkding/4.0.11}/values.yaml (100%) delete mode 100644 stable/loki/9.0.11/CHANGELOG.md delete mode 100644 stable/loki/9.0.11/Chart.yaml delete mode 100644 stable/loki/9.0.11/app-changelog.md create mode 100644 stable/loki/9.0.12/CHANGELOG.md create mode 100644 stable/loki/9.0.12/Chart.yaml rename stable/{nocodb/6.0.27 => loki/9.0.12}/README.md (100%) create mode 100644 stable/loki/9.0.12/app-changelog.md rename stable/loki/{9.0.11 => 9.0.12}/app-readme.md (100%) rename stable/{ntfy/4.0.9 => loki/9.0.12}/charts/common-11.1.2.tgz (100%) rename stable/loki/{9.0.11 => 9.0.12}/charts/promtail-6.0.12.tgz (100%) rename stable/loki/{9.0.11 => 9.0.12}/ix_values.yaml (100%) rename stable/loki/{9.0.11 => 9.0.12}/questions.yaml (100%) rename stable/loki/{9.0.11 => 9.0.12}/templates/_helpers.tpl (100%) rename stable/{mkvtoolnix/4.0.9 => loki/9.0.12}/templates/common.yaml (100%) rename stable/{ntfy/4.0.9 => loki/9.0.12}/values.yaml (100%) delete mode 100644 stable/makemkv/4.0.8/CHANGELOG.md delete mode 100644 stable/makemkv/4.0.8/Chart.yaml delete mode 100644 stable/makemkv/4.0.8/app-changelog.md delete mode 100644 stable/makemkv/4.0.8/questions.yaml create mode 100644 stable/makemkv/4.0.9/CHANGELOG.md create mode 100644 stable/makemkv/4.0.9/Chart.yaml rename stable/{ntfy => makemkv}/4.0.9/README.md (100%) create mode 100644 stable/makemkv/4.0.9/app-changelog.md rename stable/makemkv/{4.0.8 => 4.0.9}/app-readme.md (100%) rename stable/{octoprint/8.0.7 => makemkv/4.0.9}/charts/common-11.1.2.tgz (100%) rename stable/makemkv/{4.0.8 => 4.0.9}/ix_values.yaml (100%) create mode 100644 stable/makemkv/4.0.9/questions.yaml rename stable/{mymediaforalexa/3.0.7 => makemkv/4.0.9}/templates/common.yaml (100%) rename stable/{octoprint/8.0.7 => makemkv/4.0.9}/values.yaml (100%) delete mode 100644 stable/matomo/6.0.34/CHANGELOG.md delete mode 100644 stable/matomo/6.0.34/Chart.yaml delete mode 100644 stable/matomo/6.0.34/app-changelog.md create mode 100644 stable/matomo/6.0.35/CHANGELOG.md create mode 100644 stable/matomo/6.0.35/Chart.yaml rename stable/{octoprint/8.0.7 => matomo/6.0.35}/README.md (100%) create mode 100644 stable/matomo/6.0.35/app-changelog.md rename stable/matomo/{6.0.34 => 6.0.35}/app-readme.md (100%) rename stable/{openhab/4.0.9 => matomo/6.0.35}/charts/common-11.1.2.tgz (100%) rename stable/{pydio-cells/7.0.19 => matomo/6.0.35}/charts/mariadb-5.0.25.tgz (100%) rename stable/matomo/{6.0.34 => 6.0.35}/ix_values.yaml (100%) rename stable/matomo/{6.0.34 => 6.0.35}/questions.yaml (100%) rename stable/{ntfy/4.0.9 => matomo/6.0.35}/templates/common.yaml (100%) rename stable/{openhab/4.0.9 => matomo/6.0.35}/values.yaml (100%) delete mode 100644 stable/mediainfo/3.0.10/CHANGELOG.md delete mode 100644 stable/mediainfo/3.0.10/Chart.yaml delete mode 100644 stable/mediainfo/3.0.10/app-changelog.md delete mode 100644 stable/mediainfo/3.0.10/app-readme.md delete mode 100644 stable/mediainfo/3.0.10/questions.yaml create mode 100644 stable/mediainfo/3.0.11/CHANGELOG.md create mode 100644 stable/mediainfo/3.0.11/Chart.yaml rename stable/{openhab/4.0.9 => mediainfo/3.0.11}/README.md (100%) create mode 100644 stable/mediainfo/3.0.11/app-changelog.md create mode 100644 stable/mediainfo/3.0.11/app-readme.md rename stable/{openldap/9.0.7 => mediainfo/3.0.11}/charts/common-11.1.2.tgz (100%) rename stable/mediainfo/{3.0.10 => 3.0.11}/ix_values.yaml (100%) create mode 100644 stable/mediainfo/3.0.11/questions.yaml rename stable/{octoprint/8.0.7 => mediainfo/3.0.11}/templates/common.yaml (100%) rename stable/{openldap/9.0.7 => mediainfo/3.0.11}/values.yaml (100%) delete mode 100644 stable/meshroom/4.0.7/CHANGELOG.md delete mode 100644 stable/meshroom/4.0.7/Chart.yaml delete mode 100644 stable/meshroom/4.0.7/app-changelog.md delete mode 100644 stable/meshroom/4.0.7/app-readme.md delete mode 100644 stable/meshroom/4.0.7/questions.yaml create mode 100644 stable/meshroom/4.0.8/CHANGELOG.md create mode 100644 stable/meshroom/4.0.8/Chart.yaml rename stable/{openldap/9.0.7 => meshroom/4.0.8}/README.md (100%) create mode 100644 stable/meshroom/4.0.8/app-changelog.md create mode 100644 stable/meshroom/4.0.8/app-readme.md rename stable/{openspeedtest/3.0.14 => meshroom/4.0.8}/charts/common-11.1.2.tgz (100%) rename stable/meshroom/{4.0.7 => 4.0.8}/ix_values.yaml (100%) create mode 100644 stable/meshroom/4.0.8/questions.yaml rename stable/{openspeedtest/3.0.14 => meshroom/4.0.8}/templates/common.yaml (100%) rename stable/{openspeedtest/3.0.14 => meshroom/4.0.8}/values.yaml (100%) create mode 100644 stable/miniflux/10.0.22/CHANGELOG.md create mode 100644 stable/miniflux/10.0.22/Chart.yaml rename stable/{openspeedtest/3.0.14 => miniflux/10.0.22}/README.md (100%) create mode 100644 stable/miniflux/10.0.22/app-changelog.md create mode 100644 stable/miniflux/10.0.22/app-readme.md rename stable/{outline/6.0.20 => miniflux/10.0.22}/charts/common-11.1.2.tgz (100%) rename stable/{strapi/8.0.26 => miniflux/10.0.22}/charts/postgresql-11.0.22.tgz (100%) create mode 100644 stable/miniflux/10.0.22/ix_values.yaml create mode 100644 stable/miniflux/10.0.22/questions.yaml rename stable/{owncast/8.0.8 => miniflux/10.0.22}/templates/common.yaml (100%) rename stable/{outline/6.0.20 => miniflux/10.0.22}/values.yaml (100%) delete mode 100644 stable/minio-console/5.0.13/CHANGELOG.md delete mode 100644 stable/minio-console/5.0.13/Chart.yaml delete mode 100644 stable/minio-console/5.0.13/app-changelog.md delete mode 100644 stable/minio-console/5.0.13/questions.yaml create mode 100644 stable/minio-console/5.0.14/CHANGELOG.md create mode 100644 stable/minio-console/5.0.14/Chart.yaml rename stable/{outline/6.0.20 => minio-console/5.0.14}/README.md (100%) create mode 100644 stable/minio-console/5.0.14/app-changelog.md rename stable/minio-console/{5.0.13 => 5.0.14}/app-readme.md (100%) rename stable/{owncast/8.0.8 => minio-console/5.0.14}/charts/common-11.1.2.tgz (100%) rename stable/minio-console/{5.0.13 => 5.0.14}/ix_values.yaml (100%) create mode 100644 stable/minio-console/5.0.14/questions.yaml rename stable/{photoview/7.0.19 => minio-console/5.0.14}/templates/common.yaml (100%) rename stable/{owncast/8.0.8 => minio-console/5.0.14}/values.yaml (100%) delete mode 100644 stable/mkvcleaver/3.0.7/CHANGELOG.md delete mode 100644 stable/mkvcleaver/3.0.7/Chart.yaml delete mode 100644 stable/mkvcleaver/3.0.7/app-changelog.md delete mode 100644 stable/mkvcleaver/3.0.7/app-readme.md delete mode 100644 stable/mkvcleaver/3.0.7/questions.yaml create mode 100644 stable/mkvcleaver/3.0.8/CHANGELOG.md create mode 100644 stable/mkvcleaver/3.0.8/Chart.yaml rename stable/{owncast/8.0.8 => mkvcleaver/3.0.8}/README.md (100%) create mode 100644 stable/mkvcleaver/3.0.8/app-changelog.md create mode 100644 stable/mkvcleaver/3.0.8/app-readme.md rename stable/{pasta/3.0.7 => mkvcleaver/3.0.8}/charts/common-11.1.2.tgz (100%) rename stable/mkvcleaver/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/mkvcleaver/3.0.8/questions.yaml rename stable/{phpldapadmin/8.0.7 => mkvcleaver/3.0.8}/templates/common.yaml (100%) rename stable/{pasta/3.0.7 => mkvcleaver/3.0.8}/values.yaml (100%) create mode 100644 stable/mkvtoolnix/4.0.10/CHANGELOG.md create mode 100644 stable/mkvtoolnix/4.0.10/Chart.yaml rename stable/{pasta/3.0.7 => mkvtoolnix/4.0.10}/README.md (100%) create mode 100644 stable/mkvtoolnix/4.0.10/app-changelog.md create mode 100644 stable/mkvtoolnix/4.0.10/app-readme.md rename stable/{photoview/7.0.19 => mkvtoolnix/4.0.10}/charts/common-11.1.2.tgz (100%) rename stable/mkvtoolnix/{4.0.9 => 4.0.10}/ix_values.yaml (100%) create mode 100644 stable/mkvtoolnix/4.0.10/questions.yaml rename stable/{piaware/8.0.7 => mkvtoolnix/4.0.10}/templates/common.yaml (100%) rename stable/{photoview/7.0.19 => mkvtoolnix/4.0.10}/values.yaml (100%) delete mode 100644 stable/mkvtoolnix/4.0.9/CHANGELOG.md delete mode 100644 stable/mkvtoolnix/4.0.9/Chart.yaml delete mode 100644 stable/mkvtoolnix/4.0.9/app-changelog.md delete mode 100644 stable/mkvtoolnix/4.0.9/app-readme.md delete mode 100644 stable/mkvtoolnix/4.0.9/questions.yaml delete mode 100644 stable/mymediaforalexa/3.0.7/CHANGELOG.md delete mode 100644 stable/mymediaforalexa/3.0.7/Chart.yaml delete mode 100644 stable/mymediaforalexa/3.0.7/app-changelog.md delete mode 100644 stable/mymediaforalexa/3.0.7/app-readme.md delete mode 100644 stable/mymediaforalexa/3.0.7/questions.yaml create mode 100644 stable/mymediaforalexa/3.0.8/CHANGELOG.md create mode 100644 stable/mymediaforalexa/3.0.8/Chart.yaml rename stable/{photoview/7.0.19 => mymediaforalexa/3.0.8}/README.md (100%) create mode 100644 stable/mymediaforalexa/3.0.8/app-changelog.md create mode 100644 stable/mymediaforalexa/3.0.8/app-readme.md rename stable/{phpldapadmin/8.0.7 => mymediaforalexa/3.0.8}/charts/common-11.1.2.tgz (100%) rename stable/mymediaforalexa/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/mymediaforalexa/3.0.8/questions.yaml rename stable/{pretend-youre-xyzzy/8.0.7 => mymediaforalexa/3.0.8}/templates/common.yaml (100%) rename stable/{phpldapadmin/8.0.7 => mymediaforalexa/3.0.8}/values.yaml (100%) create mode 100644 stable/navidrome/14.0.2/CHANGELOG.md create mode 100644 stable/navidrome/14.0.2/Chart.yaml rename stable/{phpldapadmin/8.0.7 => navidrome/14.0.2}/README.md (100%) create mode 100644 stable/navidrome/14.0.2/app-changelog.md create mode 100644 stable/navidrome/14.0.2/app-readme.md rename stable/{piaware/8.0.7 => navidrome/14.0.2}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/navidrome/14.0.2/ix_values.yaml create mode 100644 stable/navidrome/14.0.2/questions.yaml rename stable/{putty/3.0.8 => navidrome/14.0.2}/templates/common.yaml (100%) rename stable/{piaware/8.0.7 => navidrome/14.0.2}/values.yaml (100%) create mode 100644 stable/netdata/4.0.10/CHANGELOG.md create mode 100644 stable/netdata/4.0.10/Chart.yaml rename stable/{piaware/8.0.7 => netdata/4.0.10}/README.md (100%) create mode 100644 stable/netdata/4.0.10/app-changelog.md create mode 100644 stable/netdata/4.0.10/app-readme.md rename stable/{picoshare/4.0.8 => netdata/4.0.10}/charts/common-11.1.2.tgz (100%) rename stable/netdata/{4.0.9 => 4.0.10}/ix_values.yaml (100%) create mode 100644 stable/netdata/4.0.10/questions.yaml rename stable/netdata/{4.0.9 => 4.0.10}/templates/common.yaml (100%) rename stable/{picoshare/4.0.8 => netdata/4.0.10}/values.yaml (100%) delete mode 100644 stable/netdata/4.0.9/CHANGELOG.md delete mode 100644 stable/netdata/4.0.9/Chart.yaml delete mode 100644 stable/netdata/4.0.9/app-changelog.md delete mode 100644 stable/netdata/4.0.9/app-readme.md delete mode 100644 stable/netdata/4.0.9/questions.yaml delete mode 100644 stable/nocodb/6.0.27/CHANGELOG.md delete mode 100644 stable/nocodb/6.0.27/Chart.yaml delete mode 100644 stable/nocodb/6.0.27/app-changelog.md create mode 100644 stable/nocodb/6.0.28/CHANGELOG.md create mode 100644 stable/nocodb/6.0.28/Chart.yaml rename stable/{picoshare/4.0.8 => nocodb/6.0.28}/README.md (100%) create mode 100644 stable/nocodb/6.0.28/app-changelog.md rename stable/nocodb/{6.0.27 => 6.0.28}/app-readme.md (100%) rename stable/{pihole/8.0.14 => nocodb/6.0.28}/charts/common-11.1.2.tgz (100%) rename stable/{synapse/7.0.22 => nocodb/6.0.28}/charts/postgresql-11.0.22.tgz (100%) rename stable/{outline/6.0.20 => nocodb/6.0.28}/charts/redis-5.0.29.tgz (100%) rename stable/nocodb/{6.0.27 => 6.0.28}/ix_values.yaml (100%) rename stable/nocodb/{6.0.27 => 6.0.28}/questions.yaml (100%) rename stable/nocodb/{6.0.27 => 6.0.28}/templates/_configmap.tpl (100%) rename stable/nocodb/{6.0.27 => 6.0.28}/templates/_secrets.tpl (100%) rename stable/nocodb/{6.0.27 => 6.0.28}/templates/common.yaml (100%) rename stable/{pihole/8.0.14 => nocodb/6.0.28}/values.yaml (100%) create mode 100644 stable/ntfy/4.0.10/CHANGELOG.md create mode 100644 stable/ntfy/4.0.10/Chart.yaml rename stable/{pihole/8.0.14 => ntfy/4.0.10}/README.md (100%) create mode 100644 stable/ntfy/4.0.10/app-changelog.md create mode 100644 stable/ntfy/4.0.10/app-readme.md rename stable/{pinry/4.0.7 => ntfy/4.0.10}/charts/common-11.1.2.tgz (100%) rename stable/ntfy/{4.0.9 => 4.0.10}/ix_values.yaml (100%) create mode 100644 stable/ntfy/4.0.10/questions.yaml rename stable/{qdirstat/3.0.9 => ntfy/4.0.10}/templates/common.yaml (100%) rename stable/{pinry/4.0.7 => ntfy/4.0.10}/values.yaml (100%) delete mode 100644 stable/ntfy/4.0.9/CHANGELOG.md delete mode 100644 stable/ntfy/4.0.9/Chart.yaml delete mode 100644 stable/ntfy/4.0.9/app-changelog.md delete mode 100644 stable/ntfy/4.0.9/app-readme.md delete mode 100644 stable/ntfy/4.0.9/questions.yaml delete mode 100644 stable/octoprint/8.0.7/CHANGELOG.md delete mode 100644 stable/octoprint/8.0.7/Chart.yaml delete mode 100644 stable/octoprint/8.0.7/app-changelog.md delete mode 100644 stable/octoprint/8.0.7/app-readme.md delete mode 100644 stable/octoprint/8.0.7/questions.yaml create mode 100644 stable/octoprint/8.0.8/CHANGELOG.md create mode 100644 stable/octoprint/8.0.8/Chart.yaml rename stable/{pinry/4.0.7 => octoprint/8.0.8}/README.md (100%) create mode 100644 stable/octoprint/8.0.8/app-changelog.md create mode 100644 stable/octoprint/8.0.8/app-readme.md rename stable/{plaxt/3.0.7 => octoprint/8.0.8}/charts/common-11.1.2.tgz (100%) rename stable/octoprint/{8.0.7 => 8.0.8}/ix_values.yaml (100%) create mode 100644 stable/octoprint/8.0.8/questions.yaml rename stable/{qinglong/4.0.14 => octoprint/8.0.8}/templates/common.yaml (100%) rename stable/{plaxt/3.0.7 => octoprint/8.0.8}/values.yaml (100%) create mode 100644 stable/openhab/4.0.10/CHANGELOG.md create mode 100644 stable/openhab/4.0.10/Chart.yaml rename stable/{plaxt/3.0.7 => openhab/4.0.10}/README.md (100%) create mode 100644 stable/openhab/4.0.10/app-changelog.md create mode 100644 stable/openhab/4.0.10/app-readme.md rename stable/{posterr/3.0.7 => openhab/4.0.10}/charts/common-11.1.2.tgz (100%) rename stable/openhab/{4.0.9 => 4.0.10}/ix_values.yaml (100%) create mode 100644 stable/openhab/4.0.10/questions.yaml rename stable/openhab/{4.0.9 => 4.0.10}/templates/common.yaml (100%) rename stable/{posterr/3.0.7 => openhab/4.0.10}/values.yaml (100%) delete mode 100644 stable/openhab/4.0.9/CHANGELOG.md delete mode 100644 stable/openhab/4.0.9/Chart.yaml delete mode 100644 stable/openhab/4.0.9/app-changelog.md delete mode 100644 stable/openhab/4.0.9/app-readme.md delete mode 100644 stable/openhab/4.0.9/questions.yaml delete mode 100644 stable/openldap/9.0.7/CHANGELOG.md delete mode 100644 stable/openldap/9.0.7/Chart.yaml delete mode 100644 stable/openldap/9.0.7/app-changelog.md delete mode 100644 stable/openldap/9.0.7/app-readme.md delete mode 100644 stable/openldap/9.0.7/questions.yaml create mode 100644 stable/openldap/9.0.8/CHANGELOG.md create mode 100644 stable/openldap/9.0.8/Chart.yaml rename stable/{posterr/3.0.7 => openldap/9.0.8}/README.md (100%) create mode 100644 stable/openldap/9.0.8/app-changelog.md create mode 100644 stable/openldap/9.0.8/app-readme.md rename stable/{pretend-youre-xyzzy/8.0.7 => openldap/9.0.8}/charts/common-11.1.2.tgz (100%) rename stable/openldap/{9.0.7 => 9.0.8}/ix_values.yaml (100%) create mode 100644 stable/openldap/9.0.8/questions.yaml rename stable/openldap/{9.0.7 => 9.0.8}/templates/_configmap.tpl (100%) rename stable/openldap/{9.0.7 => 9.0.8}/templates/common.yaml (100%) rename stable/{pretend-youre-xyzzy/8.0.7 => openldap/9.0.8}/values.yaml (100%) delete mode 100644 stable/openspeedtest/3.0.14/CHANGELOG.md delete mode 100644 stable/openspeedtest/3.0.14/Chart.yaml delete mode 100644 stable/openspeedtest/3.0.14/app-changelog.md create mode 100644 stable/openspeedtest/3.0.15/CHANGELOG.md create mode 100644 stable/openspeedtest/3.0.15/Chart.yaml rename stable/{pretend-youre-xyzzy/8.0.7 => openspeedtest/3.0.15}/README.md (100%) create mode 100644 stable/openspeedtest/3.0.15/app-changelog.md rename stable/openspeedtest/{3.0.14 => 3.0.15}/app-readme.md (100%) rename stable/{promcord/6.0.10 => openspeedtest/3.0.15}/charts/common-11.1.2.tgz (100%) rename stable/openspeedtest/{3.0.14 => 3.0.15}/ix_values.yaml (100%) rename stable/openspeedtest/{3.0.14 => 3.0.15}/questions.yaml (100%) rename stable/{retrobot/3.0.8 => openspeedtest/3.0.15}/templates/common.yaml (100%) rename stable/{promcord/6.0.10 => openspeedtest/3.0.15}/values.yaml (100%) create mode 100644 stable/organizr/13.0.9/CHANGELOG.md create mode 100644 stable/organizr/13.0.9/Chart.yaml rename stable/{promcord/6.0.10 => organizr/13.0.9}/README.md (100%) create mode 100644 stable/organizr/13.0.9/app-changelog.md create mode 100644 stable/organizr/13.0.9/app-readme.md rename stable/{putty/3.0.8 => organizr/13.0.9}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/organizr/13.0.9/ix_values.yaml create mode 100644 stable/organizr/13.0.9/questions.yaml rename stable/{rsshub/6.0.29 => organizr/13.0.9}/templates/common.yaml (100%) rename stable/{putty/3.0.8 => organizr/13.0.9}/values.yaml (100%) delete mode 100644 stable/outline/6.0.20/CHANGELOG.md delete mode 100644 stable/outline/6.0.20/Chart.yaml delete mode 100644 stable/outline/6.0.20/app-changelog.md create mode 100644 stable/outline/6.0.21/CHANGELOG.md create mode 100644 stable/outline/6.0.21/Chart.yaml rename stable/{putty/3.0.8 => outline/6.0.21}/README.md (100%) create mode 100644 stable/outline/6.0.21/app-changelog.md rename stable/outline/{6.0.20 => 6.0.21}/app-readme.md (100%) rename stable/{pydio-cells/7.0.19 => outline/6.0.21}/charts/common-11.1.2.tgz (100%) rename stable/{weblate/7.0.21 => outline/6.0.21}/charts/postgresql-11.0.22.tgz (100%) rename stable/{rsshub/6.0.29 => outline/6.0.21}/charts/redis-5.0.29.tgz (100%) rename stable/outline/{6.0.20 => 6.0.21}/ix_values.yaml (100%) rename stable/outline/{6.0.20 => 6.0.21}/questions.yaml (100%) rename stable/outline/{6.0.20 => 6.0.21}/templates/_secrets.tpl (100%) rename stable/outline/{6.0.20 => 6.0.21}/templates/common.yaml (100%) rename stable/{pydio-cells/7.0.19 => outline/6.0.21}/values.yaml (100%) delete mode 100644 stable/owncast/8.0.8/CHANGELOG.md delete mode 100644 stable/owncast/8.0.8/Chart.yaml delete mode 100644 stable/owncast/8.0.8/app-changelog.md delete mode 100644 stable/owncast/8.0.8/app-readme.md delete mode 100644 stable/owncast/8.0.8/questions.yaml create mode 100644 stable/owncast/8.0.9/CHANGELOG.md create mode 100644 stable/owncast/8.0.9/Chart.yaml rename stable/{pydio-cells/7.0.19 => owncast/8.0.9}/README.md (100%) create mode 100644 stable/owncast/8.0.9/app-changelog.md create mode 100644 stable/owncast/8.0.9/app-readme.md rename stable/{qdirstat/3.0.9 => owncast/8.0.9}/charts/common-11.1.2.tgz (100%) rename stable/owncast/{8.0.8 => 8.0.9}/ix_values.yaml (100%) create mode 100644 stable/owncast/8.0.9/questions.yaml rename stable/{snapdrop/4.0.12 => owncast/8.0.9}/templates/common.yaml (100%) rename stable/{qdirstat/3.0.9 => owncast/8.0.9}/values.yaml (100%) delete mode 100644 stable/pasta/3.0.7/CHANGELOG.md delete mode 100644 stable/pasta/3.0.7/Chart.yaml delete mode 100644 stable/pasta/3.0.7/app-changelog.md delete mode 100644 stable/pasta/3.0.7/app-readme.md delete mode 100644 stable/pasta/3.0.7/questions.yaml create mode 100644 stable/pasta/3.0.8/CHANGELOG.md create mode 100644 stable/pasta/3.0.8/Chart.yaml rename stable/{qdirstat/3.0.9 => pasta/3.0.8}/README.md (100%) create mode 100644 stable/pasta/3.0.8/app-changelog.md create mode 100644 stable/pasta/3.0.8/app-readme.md rename stable/{qinglong/4.0.14 => pasta/3.0.8}/charts/common-11.1.2.tgz (100%) rename stable/pasta/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/pasta/3.0.8/questions.yaml rename stable/pasta/{3.0.7 => 3.0.8}/templates/common.yaml (100%) rename stable/{qinglong/4.0.14 => pasta/3.0.8}/values.yaml (100%) create mode 100644 stable/photoprism/13.0.23/CHANGELOG.md create mode 100644 stable/photoprism/13.0.23/Chart.yaml rename stable/{qinglong/4.0.14 => photoprism/13.0.23}/README.md (100%) create mode 100644 stable/photoprism/13.0.23/app-changelog.md create mode 100644 stable/photoprism/13.0.23/app-readme.md rename stable/{rcon-webadmin/3.0.10 => photoprism/13.0.23}/charts/common-11.1.2.tgz (100%) rename stable/{typecho/7.0.17 => photoprism/13.0.23}/charts/mariadb-5.0.25.tgz (100%) create mode 100644 stable/photoprism/13.0.23/ix_values.yaml create mode 100644 stable/photoprism/13.0.23/questions.yaml rename stable/{storj-node/4.0.17 => photoprism/13.0.23}/templates/common.yaml (100%) rename stable/{rcon-webadmin/3.0.10 => photoprism/13.0.23}/values.yaml (100%) delete mode 100644 stable/photoview/7.0.19/CHANGELOG.md delete mode 100644 stable/photoview/7.0.19/Chart.yaml delete mode 100644 stable/photoview/7.0.19/app-changelog.md create mode 100644 stable/photoview/7.0.20/CHANGELOG.md create mode 100644 stable/photoview/7.0.20/Chart.yaml rename stable/{rcon-webadmin/3.0.10 => photoview/7.0.20}/README.md (100%) create mode 100644 stable/photoview/7.0.20/app-changelog.md rename stable/photoview/{7.0.19 => 7.0.20}/app-readme.md (100%) rename stable/{retrobot/3.0.8 => photoview/7.0.20}/charts/common-11.1.2.tgz (100%) rename stable/{wger/4.0.33 => photoview/7.0.20}/charts/postgresql-11.0.22.tgz (100%) rename stable/photoview/{7.0.19 => 7.0.20}/ix_values.yaml (100%) rename stable/photoview/{7.0.19 => 7.0.20}/questions.yaml (100%) rename stable/{strapi/8.0.26 => photoview/7.0.20}/templates/common.yaml (100%) rename stable/{retrobot/3.0.8 => photoview/7.0.20}/values.yaml (100%) delete mode 100644 stable/phpldapadmin/8.0.7/CHANGELOG.md delete mode 100644 stable/phpldapadmin/8.0.7/Chart.yaml delete mode 100644 stable/phpldapadmin/8.0.7/app-changelog.md delete mode 100644 stable/phpldapadmin/8.0.7/app-readme.md delete mode 100644 stable/phpldapadmin/8.0.7/questions.yaml create mode 100644 stable/phpldapadmin/8.0.8/CHANGELOG.md create mode 100644 stable/phpldapadmin/8.0.8/Chart.yaml rename stable/{retrobot/3.0.8 => phpldapadmin/8.0.8}/README.md (100%) create mode 100644 stable/phpldapadmin/8.0.8/app-changelog.md create mode 100644 stable/phpldapadmin/8.0.8/app-readme.md rename stable/{rsshub/6.0.29 => phpldapadmin/8.0.8}/charts/common-11.1.2.tgz (100%) rename stable/phpldapadmin/{8.0.7 => 8.0.8}/ix_values.yaml (100%) create mode 100644 stable/phpldapadmin/8.0.8/questions.yaml rename stable/{tdarr/4.0.7 => phpldapadmin/8.0.8}/templates/common.yaml (100%) rename stable/{rsshub/6.0.29 => phpldapadmin/8.0.8}/values.yaml (100%) delete mode 100644 stable/piaware/8.0.7/CHANGELOG.md delete mode 100644 stable/piaware/8.0.7/Chart.yaml delete mode 100644 stable/piaware/8.0.7/app-changelog.md delete mode 100644 stable/piaware/8.0.7/app-readme.md delete mode 100644 stable/piaware/8.0.7/questions.yaml create mode 100644 stable/piaware/8.0.8/CHANGELOG.md create mode 100644 stable/piaware/8.0.8/Chart.yaml rename stable/{rsshub/6.0.29 => piaware/8.0.8}/README.md (100%) create mode 100644 stable/piaware/8.0.8/app-changelog.md create mode 100644 stable/piaware/8.0.8/app-readme.md rename stable/{sickgear/6.0.0 => piaware/8.0.8}/charts/common-11.1.2.tgz (100%) rename stable/piaware/{8.0.7 => 8.0.8}/ix_values.yaml (100%) create mode 100644 stable/piaware/8.0.8/questions.yaml rename stable/{thelounge/8.0.7 => piaware/8.0.8}/templates/common.yaml (100%) rename stable/{sickgear/6.0.0 => piaware/8.0.8}/values.yaml (100%) delete mode 100644 stable/picoshare/4.0.8/CHANGELOG.md delete mode 100644 stable/picoshare/4.0.8/Chart.yaml delete mode 100644 stable/picoshare/4.0.8/app-changelog.md delete mode 100644 stable/picoshare/4.0.8/app-readme.md delete mode 100644 stable/picoshare/4.0.8/questions.yaml create mode 100644 stable/picoshare/4.0.9/CHANGELOG.md create mode 100644 stable/picoshare/4.0.9/Chart.yaml rename stable/{sickgear/6.0.0 => picoshare/4.0.9}/README.md (100%) create mode 100644 stable/picoshare/4.0.9/app-changelog.md create mode 100644 stable/picoshare/4.0.9/app-readme.md rename stable/{snapdrop/4.0.12 => picoshare/4.0.9}/charts/common-11.1.2.tgz (100%) rename stable/picoshare/{4.0.8 => 4.0.9}/ix_values.yaml (100%) create mode 100644 stable/picoshare/4.0.9/questions.yaml rename stable/picoshare/{4.0.8 => 4.0.9}/templates/common.yaml (100%) rename stable/{snapdrop/4.0.12 => picoshare/4.0.9}/values.yaml (100%) delete mode 100644 stable/pihole/8.0.14/CHANGELOG.md delete mode 100644 stable/pihole/8.0.14/Chart.yaml delete mode 100644 stable/pihole/8.0.14/app-changelog.md create mode 100644 stable/pihole/8.0.15/CHANGELOG.md create mode 100644 stable/pihole/8.0.15/Chart.yaml rename stable/{snapdrop/4.0.12 => pihole/8.0.15}/README.md (100%) create mode 100644 stable/pihole/8.0.15/app-changelog.md rename stable/pihole/{8.0.14 => 8.0.15}/app-readme.md (100%) rename stable/{spotweb/7.0.22 => pihole/8.0.15}/charts/common-11.1.2.tgz (100%) rename stable/pihole/{8.0.14 => 8.0.15}/ix_values.yaml (100%) rename stable/pihole/{8.0.14 => 8.0.15}/questions.yaml (100%) rename stable/pihole/{8.0.14 => 8.0.15}/templates/_configmap.tpl (100%) rename stable/pihole/{8.0.14 => 8.0.15}/templates/common.yaml (100%) rename stable/{spotweb/7.0.22 => pihole/8.0.15}/values.yaml (100%) delete mode 100644 stable/pinry/4.0.7/CHANGELOG.md delete mode 100644 stable/pinry/4.0.7/Chart.yaml delete mode 100644 stable/pinry/4.0.7/app-changelog.md delete mode 100644 stable/pinry/4.0.7/app-readme.md delete mode 100644 stable/pinry/4.0.7/questions.yaml create mode 100644 stable/pinry/4.0.8/CHANGELOG.md create mode 100644 stable/pinry/4.0.8/Chart.yaml rename stable/{spotweb/7.0.22 => pinry/4.0.8}/README.md (100%) create mode 100644 stable/pinry/4.0.8/app-changelog.md create mode 100644 stable/pinry/4.0.8/app-readme.md rename stable/{storj-node/4.0.17 => pinry/4.0.8}/charts/common-11.1.2.tgz (100%) rename stable/pinry/{4.0.7 => 4.0.8}/ix_values.yaml (100%) create mode 100644 stable/pinry/4.0.8/questions.yaml rename stable/pinry/{4.0.7 => 4.0.8}/templates/_secrets.tpl (100%) rename stable/pinry/{4.0.7 => 4.0.8}/templates/common.yaml (100%) rename stable/{storj-node/4.0.17 => pinry/4.0.8}/values.yaml (100%) delete mode 100644 stable/plaxt/3.0.7/CHANGELOG.md delete mode 100644 stable/plaxt/3.0.7/Chart.yaml delete mode 100644 stable/plaxt/3.0.7/app-changelog.md delete mode 100644 stable/plaxt/3.0.7/app-readme.md delete mode 100644 stable/plaxt/3.0.7/questions.yaml create mode 100644 stable/plaxt/3.0.8/CHANGELOG.md create mode 100644 stable/plaxt/3.0.8/Chart.yaml rename stable/{storj-node/4.0.17 => plaxt/3.0.8}/README.md (100%) create mode 100644 stable/plaxt/3.0.8/app-changelog.md create mode 100644 stable/plaxt/3.0.8/app-readme.md rename stable/{strapi/8.0.26 => plaxt/3.0.8}/charts/common-11.1.2.tgz (100%) rename stable/plaxt/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/plaxt/3.0.8/questions.yaml rename stable/plaxt/{3.0.7 => 3.0.8}/templates/common.yaml (100%) rename stable/{strapi/8.0.26 => plaxt/3.0.8}/values.yaml (100%) create mode 100644 stable/podgrab/12.0.8/CHANGELOG.md create mode 100644 stable/podgrab/12.0.8/Chart.yaml rename stable/{strapi/8.0.26 => podgrab/12.0.8}/README.md (100%) create mode 100644 stable/podgrab/12.0.8/app-changelog.md create mode 100644 stable/podgrab/12.0.8/app-readme.md rename stable/{synapse/7.0.22 => podgrab/12.0.8}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/podgrab/12.0.8/ix_values.yaml create mode 100644 stable/podgrab/12.0.8/questions.yaml rename stable/{tinymediamanager/4.0.9 => podgrab/12.0.8}/templates/common.yaml (100%) rename stable/{synapse/7.0.22 => podgrab/12.0.8}/values.yaml (100%) delete mode 100644 stable/posterr/3.0.7/CHANGELOG.md delete mode 100644 stable/posterr/3.0.7/Chart.yaml delete mode 100644 stable/posterr/3.0.7/app-changelog.md delete mode 100644 stable/posterr/3.0.7/app-readme.md delete mode 100644 stable/posterr/3.0.7/questions.yaml create mode 100644 stable/posterr/3.0.8/CHANGELOG.md create mode 100644 stable/posterr/3.0.8/Chart.yaml rename stable/{synapse/7.0.22 => posterr/3.0.8}/README.md (100%) create mode 100644 stable/posterr/3.0.8/app-changelog.md create mode 100644 stable/posterr/3.0.8/app-readme.md rename stable/{synctube/2.1.7 => posterr/3.0.8}/charts/common-11.1.2.tgz (100%) rename stable/posterr/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/posterr/3.0.8/questions.yaml rename stable/posterr/{3.0.7 => 3.0.8}/templates/common.yaml (100%) rename stable/{synctube/2.1.7 => posterr/3.0.8}/values.yaml (100%) delete mode 100644 stable/pretend-youre-xyzzy/8.0.7/CHANGELOG.md delete mode 100644 stable/pretend-youre-xyzzy/8.0.7/Chart.yaml delete mode 100644 stable/pretend-youre-xyzzy/8.0.7/app-changelog.md delete mode 100644 stable/pretend-youre-xyzzy/8.0.7/app-readme.md delete mode 100644 stable/pretend-youre-xyzzy/8.0.7/questions.yaml create mode 100644 stable/pretend-youre-xyzzy/8.0.8/CHANGELOG.md create mode 100644 stable/pretend-youre-xyzzy/8.0.8/Chart.yaml rename stable/{synctube/2.1.7 => pretend-youre-xyzzy/8.0.8}/README.md (100%) create mode 100644 stable/pretend-youre-xyzzy/8.0.8/app-changelog.md create mode 100644 stable/pretend-youre-xyzzy/8.0.8/app-readme.md rename stable/{tdarr/4.0.7 => pretend-youre-xyzzy/8.0.8}/charts/common-11.1.2.tgz (100%) rename stable/pretend-youre-xyzzy/{8.0.7 => 8.0.8}/ix_values.yaml (100%) create mode 100644 stable/pretend-youre-xyzzy/8.0.8/questions.yaml rename stable/{tsmuxer/3.0.9 => pretend-youre-xyzzy/8.0.8}/templates/common.yaml (100%) rename stable/{tdarr/4.0.7 => pretend-youre-xyzzy/8.0.8}/values.yaml (100%) delete mode 100644 stable/promcord/6.0.10/CHANGELOG.md delete mode 100644 stable/promcord/6.0.10/Chart.yaml delete mode 100644 stable/promcord/6.0.10/app-changelog.md delete mode 100644 stable/promcord/6.0.10/questions.yaml create mode 100644 stable/promcord/6.0.11/CHANGELOG.md create mode 100644 stable/promcord/6.0.11/Chart.yaml rename stable/{tdarr/4.0.7 => promcord/6.0.11}/README.md (100%) create mode 100644 stable/promcord/6.0.11/app-changelog.md rename stable/promcord/{6.0.10 => 6.0.11}/app-readme.md (100%) rename stable/{thelounge/8.0.7 => promcord/6.0.11}/charts/common-11.1.2.tgz (100%) rename stable/promcord/{6.0.10 => 6.0.11}/ix_values.yaml (100%) create mode 100644 stable/promcord/6.0.11/questions.yaml rename stable/promcord/{6.0.10 => 6.0.11}/templates/common.yaml (100%) rename stable/promcord/{6.0.10 => 6.0.11}/templates/prometheusrules.yaml (100%) rename stable/promcord/{6.0.10 => 6.0.11}/templates/servicemonitor.yaml (100%) rename stable/{thelounge/8.0.7 => promcord/6.0.11}/values.yaml (100%) delete mode 100644 stable/putty/3.0.8/CHANGELOG.md delete mode 100644 stable/putty/3.0.8/Chart.yaml delete mode 100644 stable/putty/3.0.8/app-changelog.md delete mode 100644 stable/putty/3.0.8/app-readme.md delete mode 100644 stable/putty/3.0.8/questions.yaml create mode 100644 stable/putty/3.0.9/CHANGELOG.md create mode 100644 stable/putty/3.0.9/Chart.yaml rename stable/{thelounge/8.0.7 => putty/3.0.9}/README.md (100%) create mode 100644 stable/putty/3.0.9/app-changelog.md create mode 100644 stable/putty/3.0.9/app-readme.md rename stable/{tinymediamanager/4.0.9 => putty/3.0.9}/charts/common-11.1.2.tgz (100%) rename stable/putty/{3.0.8 => 3.0.9}/ix_values.yaml (100%) create mode 100644 stable/putty/3.0.9/questions.yaml rename stable/{typecho/7.0.17 => putty/3.0.9}/templates/common.yaml (100%) rename stable/{tinymediamanager/4.0.9 => putty/3.0.9}/values.yaml (100%) delete mode 100644 stable/pydio-cells/7.0.19/CHANGELOG.md delete mode 100644 stable/pydio-cells/7.0.19/Chart.yaml delete mode 100644 stable/pydio-cells/7.0.19/app-changelog.md create mode 100644 stable/pydio-cells/7.0.20/CHANGELOG.md create mode 100644 stable/pydio-cells/7.0.20/Chart.yaml rename stable/{tinymediamanager/4.0.9 => pydio-cells/7.0.20}/README.md (100%) create mode 100644 stable/pydio-cells/7.0.20/app-changelog.md rename stable/pydio-cells/{7.0.19 => 7.0.20}/app-readme.md (100%) rename stable/{traggo/1.0.5 => pydio-cells/7.0.20}/charts/common-11.1.2.tgz (100%) rename stable/{wordpress/1.1.10 => pydio-cells/7.0.20}/charts/mariadb-5.0.25.tgz (100%) rename stable/pydio-cells/{7.0.19 => 7.0.20}/ix_values.yaml (100%) rename stable/pydio-cells/{7.0.19 => 7.0.20}/questions.yaml (100%) rename stable/pydio-cells/{7.0.19 => 7.0.20}/templates/common.yaml (100%) rename stable/{traggo/1.0.5 => pydio-cells/7.0.20}/values.yaml (100%) create mode 100644 stable/qdirstat/3.0.10/CHANGELOG.md create mode 100644 stable/qdirstat/3.0.10/Chart.yaml rename stable/{traggo/1.0.5 => qdirstat/3.0.10}/README.md (100%) create mode 100644 stable/qdirstat/3.0.10/app-changelog.md create mode 100644 stable/qdirstat/3.0.10/app-readme.md rename stable/{tsmuxer/3.0.9 => qdirstat/3.0.10}/charts/common-11.1.2.tgz (100%) rename stable/qdirstat/{3.0.9 => 3.0.10}/ix_values.yaml (100%) create mode 100644 stable/qdirstat/3.0.10/questions.yaml rename stable/{unpackerr/8.0.8 => qdirstat/3.0.10}/templates/common.yaml (100%) rename stable/{tsmuxer/3.0.9 => qdirstat/3.0.10}/values.yaml (100%) delete mode 100644 stable/qdirstat/3.0.9/CHANGELOG.md delete mode 100644 stable/qdirstat/3.0.9/Chart.yaml delete mode 100644 stable/qdirstat/3.0.9/app-changelog.md delete mode 100644 stable/qdirstat/3.0.9/app-readme.md delete mode 100644 stable/qdirstat/3.0.9/questions.yaml delete mode 100644 stable/qinglong/4.0.14/CHANGELOG.md delete mode 100644 stable/qinglong/4.0.14/Chart.yaml delete mode 100644 stable/qinglong/4.0.14/app-changelog.md delete mode 100644 stable/qinglong/4.0.14/app-readme.md delete mode 100644 stable/qinglong/4.0.14/questions.yaml create mode 100644 stable/qinglong/4.0.15/CHANGELOG.md create mode 100644 stable/qinglong/4.0.15/Chart.yaml rename stable/{tsmuxer/3.0.9 => qinglong/4.0.15}/README.md (100%) create mode 100644 stable/qinglong/4.0.15/app-changelog.md create mode 100644 stable/qinglong/4.0.15/app-readme.md rename stable/{typecho/7.0.17 => qinglong/4.0.15}/charts/common-11.1.2.tgz (100%) rename stable/qinglong/{4.0.14 => 4.0.15}/ix_values.yaml (100%) create mode 100644 stable/qinglong/4.0.15/questions.yaml rename stable/{watchyourlan/3.1.9 => qinglong/4.0.15}/templates/common.yaml (100%) rename stable/{typecho/7.0.17 => qinglong/4.0.15}/values.yaml (100%) delete mode 100644 stable/rcon-webadmin/3.0.10/CHANGELOG.md delete mode 100644 stable/rcon-webadmin/3.0.10/Chart.yaml delete mode 100644 stable/rcon-webadmin/3.0.10/app-changelog.md delete mode 100644 stable/rcon-webadmin/3.0.10/app-readme.md delete mode 100644 stable/rcon-webadmin/3.0.10/questions.yaml create mode 100644 stable/rcon-webadmin/3.0.11/CHANGELOG.md create mode 100644 stable/rcon-webadmin/3.0.11/Chart.yaml rename stable/{typecho/7.0.17 => rcon-webadmin/3.0.11}/README.md (100%) create mode 100644 stable/rcon-webadmin/3.0.11/app-changelog.md create mode 100644 stable/rcon-webadmin/3.0.11/app-readme.md rename stable/{unpackerr/8.0.8 => rcon-webadmin/3.0.11}/charts/common-11.1.2.tgz (100%) rename stable/rcon-webadmin/{3.0.10 => 3.0.11}/ix_values.yaml (100%) create mode 100644 stable/rcon-webadmin/3.0.11/questions.yaml rename stable/rcon-webadmin/{3.0.10 => 3.0.11}/templates/common.yaml (100%) rename stable/{unpackerr/8.0.8 => rcon-webadmin/3.0.11}/values.yaml (100%) delete mode 100644 stable/retrobot/3.0.8/CHANGELOG.md delete mode 100644 stable/retrobot/3.0.8/Chart.yaml delete mode 100644 stable/retrobot/3.0.8/app-changelog.md delete mode 100644 stable/retrobot/3.0.8/app-readme.md delete mode 100644 stable/retrobot/3.0.8/questions.yaml create mode 100644 stable/retrobot/3.0.9/CHANGELOG.md create mode 100644 stable/retrobot/3.0.9/Chart.yaml rename stable/{unpackerr/8.0.8 => retrobot/3.0.9}/README.md (100%) create mode 100644 stable/retrobot/3.0.9/app-changelog.md create mode 100644 stable/retrobot/3.0.9/app-readme.md rename stable/{watchyourlan/3.1.9 => retrobot/3.0.9}/charts/common-11.1.2.tgz (100%) rename stable/retrobot/{3.0.8 => 3.0.9}/ix_values.yaml (100%) create mode 100644 stable/retrobot/3.0.9/questions.yaml rename stable/{wekan/8.0.16 => retrobot/3.0.9}/templates/common.yaml (100%) rename stable/{watchyourlan/3.1.9 => retrobot/3.0.9}/values.yaml (100%) delete mode 100644 stable/rsshub/6.0.29/CHANGELOG.md delete mode 100644 stable/rsshub/6.0.29/Chart.yaml delete mode 100644 stable/rsshub/6.0.29/app-changelog.md create mode 100644 stable/rsshub/6.0.30/CHANGELOG.md create mode 100644 stable/rsshub/6.0.30/Chart.yaml rename stable/{watchyourlan/3.1.9 => rsshub/6.0.30}/README.md (100%) create mode 100644 stable/rsshub/6.0.30/app-changelog.md rename stable/rsshub/{6.0.29 => 6.0.30}/app-readme.md (100%) rename stable/{wbo/3.0.0 => rsshub/6.0.30}/charts/common-11.1.2.tgz (100%) rename stable/{weblate/7.0.21 => rsshub/6.0.30}/charts/redis-5.0.29.tgz (100%) rename stable/rsshub/{6.0.29 => 6.0.30}/ix_values.yaml (100%) rename stable/rsshub/{6.0.29 => 6.0.30}/questions.yaml (100%) rename stable/{ztcuui-aio/3.0.7 => rsshub/6.0.30}/templates/common.yaml (100%) rename stable/{wbo/3.0.0 => rsshub/6.0.30}/values.yaml (100%) delete mode 100644 stable/sickgear/6.0.0/CHANGELOG.md delete mode 100644 stable/sickgear/6.0.0/Chart.yaml delete mode 100644 stable/sickgear/6.0.0/app-changelog.md delete mode 100644 stable/sickgear/6.0.0/app-readme.md delete mode 100644 stable/sickgear/6.0.0/questions.yaml create mode 100644 stable/sickgear/6.0.1/CHANGELOG.md create mode 100644 stable/sickgear/6.0.1/Chart.yaml rename stable/{weblate/7.0.21 => sickgear/6.0.1}/README.md (100%) create mode 100644 stable/sickgear/6.0.1/app-changelog.md create mode 100644 stable/sickgear/6.0.1/app-readme.md rename stable/{weblate/7.0.21 => sickgear/6.0.1}/charts/common-11.1.2.tgz (100%) rename stable/sickgear/{6.0.0 => 6.0.1}/ix_values.yaml (100%) create mode 100644 stable/sickgear/6.0.1/questions.yaml create mode 100644 stable/sickgear/6.0.1/templates/common.yaml rename stable/{weblate/7.0.21 => sickgear/6.0.1}/values.yaml (100%) delete mode 100644 stable/snapdrop/4.0.12/CHANGELOG.md delete mode 100644 stable/snapdrop/4.0.12/Chart.yaml delete mode 100644 stable/snapdrop/4.0.12/app-changelog.md create mode 100644 stable/snapdrop/4.0.13/CHANGELOG.md create mode 100644 stable/snapdrop/4.0.13/Chart.yaml rename stable/{wekan/8.0.16 => snapdrop/4.0.13}/README.md (100%) create mode 100644 stable/snapdrop/4.0.13/app-changelog.md rename stable/snapdrop/{4.0.12 => 4.0.13}/app-readme.md (100%) rename stable/{wekan/8.0.16 => snapdrop/4.0.13}/charts/common-11.1.2.tgz (100%) rename stable/snapdrop/{4.0.12 => 4.0.13}/ix_values.yaml (100%) rename stable/snapdrop/{4.0.12 => 4.0.13}/questions.yaml (100%) rename stable/{zusam/3.0.7 => snapdrop/4.0.13}/templates/common.yaml (100%) rename stable/{wekan/8.0.16 => snapdrop/4.0.13}/values.yaml (100%) delete mode 100644 stable/spotweb/7.0.22/CHANGELOG.md delete mode 100644 stable/spotweb/7.0.22/Chart.yaml delete mode 100644 stable/spotweb/7.0.22/app-changelog.md create mode 100644 stable/spotweb/7.0.23/CHANGELOG.md create mode 100644 stable/spotweb/7.0.23/Chart.yaml rename stable/{wger/4.0.33 => spotweb/7.0.23}/README.md (100%) create mode 100644 stable/spotweb/7.0.23/app-changelog.md rename stable/spotweb/{7.0.22 => 7.0.23}/app-readme.md (100%) rename stable/{wger/4.0.33 => spotweb/7.0.23}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/spotweb/7.0.23/charts/postgresql-11.0.22.tgz rename stable/spotweb/{7.0.22 => 7.0.23}/ix_values.yaml (100%) rename stable/spotweb/{7.0.22 => 7.0.23}/questions.yaml (100%) rename stable/spotweb/{7.0.22 => 7.0.23}/templates/common.yaml (100%) rename stable/{wger/4.0.33 => spotweb/7.0.23}/values.yaml (100%) delete mode 100644 stable/storj-node/4.0.17/CHANGELOG.md delete mode 100644 stable/storj-node/4.0.17/Chart.yaml delete mode 100644 stable/storj-node/4.0.17/app-changelog.md create mode 100644 stable/storj-node/4.0.18/CHANGELOG.md create mode 100644 stable/storj-node/4.0.18/Chart.yaml rename stable/{wordpress/1.1.10 => storj-node/4.0.18}/README.md (100%) rename stable/storj-node/{4.0.17 => 4.0.18}/SKIPINSTALL (100%) create mode 100644 stable/storj-node/4.0.18/app-changelog.md rename stable/storj-node/{4.0.17 => 4.0.18}/app-readme.md (100%) rename stable/{wordpress/1.1.10 => storj-node/4.0.18}/charts/common-11.1.2.tgz (100%) rename stable/storj-node/{4.0.17 => 4.0.18}/ix_values.yaml (100%) rename stable/storj-node/{4.0.17 => 4.0.18}/questions.yaml (100%) create mode 100644 stable/storj-node/4.0.18/templates/common.yaml rename stable/{wordpress/1.1.10 => storj-node/4.0.18}/values.yaml (100%) delete mode 100644 stable/strapi/8.0.26/CHANGELOG.md delete mode 100644 stable/strapi/8.0.26/Chart.yaml delete mode 100644 stable/strapi/8.0.26/app-changelog.md create mode 100644 stable/strapi/8.0.27/CHANGELOG.md create mode 100644 stable/strapi/8.0.27/Chart.yaml rename stable/{youtransfer/2.1.6 => strapi/8.0.27}/README.md (100%) create mode 100644 stable/strapi/8.0.27/app-changelog.md rename stable/strapi/{8.0.26 => 8.0.27}/app-readme.md (100%) rename stable/{youtransfer/2.1.6 => strapi/8.0.27}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/strapi/8.0.27/charts/postgresql-11.0.22.tgz rename stable/strapi/{8.0.26 => 8.0.27}/ix_values.yaml (100%) rename stable/strapi/{8.0.26 => 8.0.27}/questions.yaml (100%) create mode 100644 stable/strapi/8.0.27/templates/common.yaml rename stable/{youtransfer/2.1.6 => strapi/8.0.27}/values.yaml (100%) delete mode 100644 stable/synapse/7.0.22/CHANGELOG.md delete mode 100644 stable/synapse/7.0.22/Chart.yaml delete mode 100644 stable/synapse/7.0.22/app-changelog.md create mode 100644 stable/synapse/7.0.23/CHANGELOG.md create mode 100644 stable/synapse/7.0.23/Chart.yaml rename stable/{ztcuui-aio/3.0.7 => synapse/7.0.23}/README.md (100%) create mode 100644 stable/synapse/7.0.23/app-changelog.md rename stable/synapse/{7.0.22 => 7.0.23}/app-readme.md (100%) rename stable/{ztcuui-aio/3.0.7 => synapse/7.0.23}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/synapse/7.0.23/charts/postgresql-11.0.22.tgz rename stable/synapse/{7.0.22 => 7.0.23}/ix_values.yaml (100%) rename stable/synapse/{7.0.22 => 7.0.23}/questions.yaml (100%) rename stable/synapse/{7.0.22 => 7.0.23}/templates/_configmap.tpl (100%) rename stable/synapse/{7.0.22 => 7.0.23}/templates/_helpers.tpl (100%) rename stable/synapse/{7.0.22 => 7.0.23}/templates/_secret.tpl (100%) rename stable/synapse/{7.0.22 => 7.0.23}/templates/common.yaml (100%) rename stable/{ztcuui-aio/3.0.7 => synapse/7.0.23}/values.yaml (100%) create mode 100644 stable/syncthing/13.0.10/CHANGELOG.md create mode 100644 stable/syncthing/13.0.10/Chart.yaml rename stable/{zusam/3.0.7 => syncthing/13.0.10}/README.md (100%) create mode 100644 stable/syncthing/13.0.10/app-changelog.md create mode 100644 stable/syncthing/13.0.10/app-readme.md rename stable/{zusam/3.0.7 => syncthing/13.0.10}/charts/common-11.1.2.tgz (100%) create mode 100644 stable/syncthing/13.0.10/ix_values.yaml create mode 100644 stable/syncthing/13.0.10/questions.yaml create mode 100644 stable/syncthing/13.0.10/templates/common.yaml rename stable/{zusam/3.0.7 => syncthing/13.0.10}/values.yaml (100%) delete mode 100644 stable/synctube/2.1.7/CHANGELOG.md delete mode 100644 stable/synctube/2.1.7/Chart.yaml delete mode 100644 stable/synctube/2.1.7/app-changelog.md delete mode 100644 stable/synctube/2.1.7/app-readme.md delete mode 100644 stable/synctube/2.1.7/questions.yaml create mode 100644 stable/synctube/2.1.8/CHANGELOG.md create mode 100644 stable/synctube/2.1.8/Chart.yaml create mode 100644 stable/synctube/2.1.8/README.md create mode 100644 stable/synctube/2.1.8/app-changelog.md create mode 100644 stable/synctube/2.1.8/app-readme.md create mode 100644 stable/synctube/2.1.8/charts/common-11.1.2.tgz rename stable/synctube/{2.1.7 => 2.1.8}/ix_values.yaml (100%) create mode 100644 stable/synctube/2.1.8/questions.yaml rename stable/synctube/{2.1.7 => 2.1.8}/templates/common.yaml (100%) create mode 100644 stable/synctube/2.1.8/values.yaml delete mode 100644 stable/tdarr/4.0.7/CHANGELOG.md delete mode 100644 stable/tdarr/4.0.7/Chart.yaml delete mode 100644 stable/tdarr/4.0.7/app-changelog.md delete mode 100644 stable/tdarr/4.0.7/app-readme.md delete mode 100644 stable/tdarr/4.0.7/questions.yaml create mode 100644 stable/tdarr/4.0.8/CHANGELOG.md create mode 100644 stable/tdarr/4.0.8/Chart.yaml create mode 100644 stable/tdarr/4.0.8/README.md create mode 100644 stable/tdarr/4.0.8/app-changelog.md create mode 100644 stable/tdarr/4.0.8/app-readme.md create mode 100644 stable/tdarr/4.0.8/charts/common-11.1.2.tgz rename stable/tdarr/{4.0.7 => 4.0.8}/ix_values.yaml (100%) create mode 100644 stable/tdarr/4.0.8/questions.yaml create mode 100644 stable/tdarr/4.0.8/templates/common.yaml create mode 100644 stable/tdarr/4.0.8/values.yaml create mode 100644 stable/teedy/10.0.20/CHANGELOG.md create mode 100644 stable/teedy/10.0.20/Chart.yaml create mode 100644 stable/teedy/10.0.20/README.md create mode 100644 stable/teedy/10.0.20/app-changelog.md create mode 100644 stable/teedy/10.0.20/app-readme.md create mode 100644 stable/teedy/10.0.20/charts/common-11.1.2.tgz create mode 100644 stable/teedy/10.0.20/charts/postgresql-11.0.22.tgz create mode 100644 stable/teedy/10.0.20/ix_values.yaml create mode 100644 stable/teedy/10.0.20/questions.yaml create mode 100644 stable/teedy/10.0.20/templates/common.yaml create mode 100644 stable/teedy/10.0.20/values.yaml delete mode 100644 stable/thelounge/8.0.7/CHANGELOG.md delete mode 100644 stable/thelounge/8.0.7/Chart.yaml delete mode 100644 stable/thelounge/8.0.7/app-changelog.md delete mode 100644 stable/thelounge/8.0.7/app-readme.md delete mode 100644 stable/thelounge/8.0.7/questions.yaml create mode 100644 stable/thelounge/8.0.8/CHANGELOG.md create mode 100644 stable/thelounge/8.0.8/Chart.yaml create mode 100644 stable/thelounge/8.0.8/README.md create mode 100644 stable/thelounge/8.0.8/app-changelog.md create mode 100644 stable/thelounge/8.0.8/app-readme.md create mode 100644 stable/thelounge/8.0.8/charts/common-11.1.2.tgz rename stable/thelounge/{8.0.7 => 8.0.8}/ix_values.yaml (100%) create mode 100644 stable/thelounge/8.0.8/questions.yaml create mode 100644 stable/thelounge/8.0.8/templates/common.yaml create mode 100644 stable/thelounge/8.0.8/values.yaml create mode 100644 stable/tinymediamanager/4.0.10/CHANGELOG.md create mode 100644 stable/tinymediamanager/4.0.10/Chart.yaml create mode 100644 stable/tinymediamanager/4.0.10/README.md create mode 100644 stable/tinymediamanager/4.0.10/app-changelog.md create mode 100644 stable/tinymediamanager/4.0.10/app-readme.md create mode 100644 stable/tinymediamanager/4.0.10/charts/common-11.1.2.tgz rename stable/tinymediamanager/{4.0.9 => 4.0.10}/ix_values.yaml (100%) create mode 100644 stable/tinymediamanager/4.0.10/questions.yaml create mode 100644 stable/tinymediamanager/4.0.10/templates/common.yaml create mode 100644 stable/tinymediamanager/4.0.10/values.yaml delete mode 100644 stable/tinymediamanager/4.0.9/CHANGELOG.md delete mode 100644 stable/tinymediamanager/4.0.9/Chart.yaml delete mode 100644 stable/tinymediamanager/4.0.9/app-changelog.md delete mode 100644 stable/tinymediamanager/4.0.9/app-readme.md delete mode 100644 stable/tinymediamanager/4.0.9/questions.yaml create mode 100644 stable/traccar/10.0.20/CHANGELOG.md create mode 100644 stable/traccar/10.0.20/Chart.yaml create mode 100644 stable/traccar/10.0.20/README.md create mode 100644 stable/traccar/10.0.20/app-changelog.md create mode 100644 stable/traccar/10.0.20/app-readme.md create mode 100644 stable/traccar/10.0.20/charts/common-11.1.2.tgz create mode 100644 stable/traccar/10.0.20/charts/postgresql-11.0.22.tgz create mode 100644 stable/traccar/10.0.20/ix_values.yaml create mode 100644 stable/traccar/10.0.20/questions.yaml create mode 100644 stable/traccar/10.0.20/templates/common.yaml create mode 100644 stable/traccar/10.0.20/values.yaml delete mode 100644 stable/traggo/1.0.5/CHANGELOG.md delete mode 100644 stable/traggo/1.0.5/Chart.yaml delete mode 100644 stable/traggo/1.0.5/app-changelog.md delete mode 100644 stable/traggo/1.0.5/app-readme.md delete mode 100644 stable/traggo/1.0.5/questions.yaml create mode 100644 stable/traggo/1.0.6/CHANGELOG.md create mode 100644 stable/traggo/1.0.6/Chart.yaml create mode 100644 stable/traggo/1.0.6/README.md create mode 100644 stable/traggo/1.0.6/app-changelog.md create mode 100644 stable/traggo/1.0.6/app-readme.md create mode 100644 stable/traggo/1.0.6/charts/common-11.1.2.tgz rename stable/traggo/{1.0.5 => 1.0.6}/ix_values.yaml (100%) create mode 100644 stable/traggo/1.0.6/questions.yaml rename stable/traggo/{1.0.5 => 1.0.6}/templates/_secret.tpl (100%) rename stable/traggo/{1.0.5 => 1.0.6}/templates/common.yaml (100%) create mode 100644 stable/traggo/1.0.6/values.yaml create mode 100644 stable/truecommand/13.0.8/CHANGELOG.md create mode 100644 stable/truecommand/13.0.8/Chart.yaml create mode 100644 stable/truecommand/13.0.8/README.md create mode 100644 stable/truecommand/13.0.8/app-changelog.md create mode 100644 stable/truecommand/13.0.8/app-readme.md create mode 100644 stable/truecommand/13.0.8/charts/common-11.1.2.tgz create mode 100644 stable/truecommand/13.0.8/ix_values.yaml create mode 100644 stable/truecommand/13.0.8/questions.yaml create mode 100644 stable/truecommand/13.0.8/templates/common.yaml create mode 100644 stable/truecommand/13.0.8/values.yaml create mode 100644 stable/tsmuxer/3.0.10/CHANGELOG.md create mode 100644 stable/tsmuxer/3.0.10/Chart.yaml create mode 100644 stable/tsmuxer/3.0.10/README.md create mode 100644 stable/tsmuxer/3.0.10/app-changelog.md create mode 100644 stable/tsmuxer/3.0.10/app-readme.md create mode 100644 stable/tsmuxer/3.0.10/charts/common-11.1.2.tgz rename stable/tsmuxer/{3.0.9 => 3.0.10}/ix_values.yaml (100%) create mode 100644 stable/tsmuxer/3.0.10/questions.yaml create mode 100644 stable/tsmuxer/3.0.10/templates/common.yaml create mode 100644 stable/tsmuxer/3.0.10/values.yaml delete mode 100644 stable/tsmuxer/3.0.9/CHANGELOG.md delete mode 100644 stable/tsmuxer/3.0.9/Chart.yaml delete mode 100644 stable/tsmuxer/3.0.9/app-changelog.md delete mode 100644 stable/tsmuxer/3.0.9/app-readme.md delete mode 100644 stable/tsmuxer/3.0.9/questions.yaml delete mode 100644 stable/typecho/7.0.17/CHANGELOG.md delete mode 100644 stable/typecho/7.0.17/Chart.yaml delete mode 100644 stable/typecho/7.0.17/app-changelog.md create mode 100644 stable/typecho/7.0.18/CHANGELOG.md create mode 100644 stable/typecho/7.0.18/Chart.yaml create mode 100644 stable/typecho/7.0.18/README.md create mode 100644 stable/typecho/7.0.18/app-changelog.md rename stable/typecho/{7.0.17 => 7.0.18}/app-readme.md (100%) create mode 100644 stable/typecho/7.0.18/charts/common-11.1.2.tgz create mode 100644 stable/typecho/7.0.18/charts/mariadb-5.0.25.tgz rename stable/typecho/{7.0.17 => 7.0.18}/ix_values.yaml (100%) rename stable/typecho/{7.0.17 => 7.0.18}/questions.yaml (100%) create mode 100644 stable/typecho/7.0.18/templates/common.yaml create mode 100644 stable/typecho/7.0.18/values.yaml delete mode 100644 stable/unpackerr/8.0.8/CHANGELOG.md delete mode 100644 stable/unpackerr/8.0.8/Chart.yaml delete mode 100644 stable/unpackerr/8.0.8/app-changelog.md create mode 100644 stable/unpackerr/8.0.9/CHANGELOG.md create mode 100644 stable/unpackerr/8.0.9/Chart.yaml create mode 100644 stable/unpackerr/8.0.9/README.md create mode 100644 stable/unpackerr/8.0.9/app-changelog.md rename stable/unpackerr/{8.0.8 => 8.0.9}/app-readme.md (100%) create mode 100644 stable/unpackerr/8.0.9/charts/common-11.1.2.tgz rename stable/unpackerr/{8.0.8 => 8.0.9}/ix_values.yaml (100%) rename stable/unpackerr/{8.0.8 => 8.0.9}/questions.yaml (100%) create mode 100644 stable/unpackerr/8.0.9/templates/common.yaml create mode 100644 stable/unpackerr/8.0.9/values.yaml create mode 100644 stable/watchyourlan/3.1.10/CHANGELOG.md create mode 100644 stable/watchyourlan/3.1.10/Chart.yaml create mode 100644 stable/watchyourlan/3.1.10/README.md create mode 100644 stable/watchyourlan/3.1.10/app-changelog.md rename stable/watchyourlan/{3.1.9 => 3.1.10}/app-readme.md (100%) create mode 100644 stable/watchyourlan/3.1.10/charts/common-11.1.2.tgz rename stable/watchyourlan/{3.1.9 => 3.1.10}/ix_values.yaml (100%) create mode 100644 stable/watchyourlan/3.1.10/questions.yaml create mode 100644 stable/watchyourlan/3.1.10/templates/common.yaml create mode 100644 stable/watchyourlan/3.1.10/values.yaml delete mode 100644 stable/watchyourlan/3.1.9/CHANGELOG.md delete mode 100644 stable/watchyourlan/3.1.9/Chart.yaml delete mode 100644 stable/watchyourlan/3.1.9/app-changelog.md delete mode 100644 stable/watchyourlan/3.1.9/questions.yaml delete mode 100644 stable/wbo/3.0.0/CHANGELOG.md delete mode 100644 stable/wbo/3.0.0/Chart.yaml delete mode 100644 stable/wbo/3.0.0/app-changelog.md delete mode 100644 stable/wbo/3.0.0/questions.yaml create mode 100644 stable/wbo/3.0.1/CHANGELOG.md create mode 100644 stable/wbo/3.0.1/Chart.yaml create mode 100644 stable/wbo/3.0.1/README.md create mode 100644 stable/wbo/3.0.1/app-changelog.md rename stable/wbo/{3.0.0 => 3.0.1}/app-readme.md (100%) create mode 100644 stable/wbo/3.0.1/charts/common-11.1.2.tgz rename stable/wbo/{3.0.0 => 3.0.1}/ix_values.yaml (100%) create mode 100644 stable/wbo/3.0.1/questions.yaml rename stable/wbo/{3.0.0 => 3.0.1}/templates/_configmap.tpl (100%) rename stable/wbo/{3.0.0 => 3.0.1}/templates/_secret.tpl (100%) rename stable/wbo/{3.0.0 => 3.0.1}/templates/common.yaml (100%) create mode 100644 stable/wbo/3.0.1/values.yaml delete mode 100644 stable/weblate/7.0.21/CHANGELOG.md delete mode 100644 stable/weblate/7.0.21/Chart.yaml delete mode 100644 stable/weblate/7.0.21/app-changelog.md create mode 100644 stable/weblate/7.0.22/CHANGELOG.md create mode 100644 stable/weblate/7.0.22/Chart.yaml create mode 100644 stable/weblate/7.0.22/README.md create mode 100644 stable/weblate/7.0.22/app-changelog.md rename stable/weblate/{7.0.21 => 7.0.22}/app-readme.md (100%) create mode 100644 stable/weblate/7.0.22/charts/common-11.1.2.tgz create mode 100644 stable/weblate/7.0.22/charts/postgresql-11.0.22.tgz rename stable/{wger/4.0.33 => weblate/7.0.22}/charts/redis-5.0.29.tgz (100%) rename stable/weblate/{7.0.21 => 7.0.22}/ix_values.yaml (100%) rename stable/weblate/{7.0.21 => 7.0.22}/questions.yaml (100%) rename stable/weblate/{7.0.21 => 7.0.22}/templates/_configmap.tpl (100%) rename stable/weblate/{7.0.21 => 7.0.22}/templates/common.yaml (100%) create mode 100644 stable/weblate/7.0.22/values.yaml delete mode 100644 stable/wekan/8.0.16/CHANGELOG.md delete mode 100644 stable/wekan/8.0.16/Chart.yaml delete mode 100644 stable/wekan/8.0.16/app-changelog.md delete mode 100644 stable/wekan/8.0.16/questions.yaml create mode 100644 stable/wekan/8.0.17/CHANGELOG.md create mode 100644 stable/wekan/8.0.17/Chart.yaml create mode 100644 stable/wekan/8.0.17/README.md create mode 100644 stable/wekan/8.0.17/app-changelog.md rename stable/wekan/{8.0.16 => 8.0.17}/app-readme.md (100%) create mode 100644 stable/wekan/8.0.17/charts/common-11.1.2.tgz rename stable/wekan/{8.0.16 => 8.0.17}/charts/mongodb-4.0.28.tgz (100%) rename stable/wekan/{8.0.16 => 8.0.17}/ix_values.yaml (100%) create mode 100644 stable/wekan/8.0.17/questions.yaml create mode 100644 stable/wekan/8.0.17/templates/common.yaml create mode 100644 stable/wekan/8.0.17/values.yaml delete mode 100644 stable/wger/4.0.33/CHANGELOG.md delete mode 100644 stable/wger/4.0.33/Chart.yaml delete mode 100644 stable/wger/4.0.33/app-changelog.md create mode 100644 stable/wger/4.0.34/CHANGELOG.md create mode 100644 stable/wger/4.0.34/Chart.yaml create mode 100644 stable/wger/4.0.34/README.md create mode 100644 stable/wger/4.0.34/app-changelog.md rename stable/wger/{4.0.33 => 4.0.34}/app-readme.md (100%) create mode 100644 stable/wger/4.0.34/charts/common-11.1.2.tgz create mode 100644 stable/wger/4.0.34/charts/postgresql-11.0.22.tgz create mode 100644 stable/wger/4.0.34/charts/redis-5.0.29.tgz rename stable/wger/{4.0.33 => 4.0.34}/ix_values.yaml (100%) rename stable/wger/{4.0.33 => 4.0.34}/questions.yaml (100%) rename stable/wger/{4.0.33 => 4.0.34}/templates/_configmap.tpl (100%) rename stable/wger/{4.0.33 => 4.0.34}/templates/_nginx.tpl (100%) rename stable/wger/{4.0.33 => 4.0.34}/templates/_secrets.tpl (100%) rename stable/wger/{4.0.33 => 4.0.34}/templates/common.yaml (100%) create mode 100644 stable/wger/4.0.34/values.yaml create mode 100644 stable/wikijs/10.0.25/CHANGELOG.md create mode 100644 stable/wikijs/10.0.25/Chart.yaml create mode 100644 stable/wikijs/10.0.25/README.md create mode 100644 stable/wikijs/10.0.25/app-changelog.md create mode 100644 stable/wikijs/10.0.25/app-readme.md create mode 100644 stable/wikijs/10.0.25/charts/common-11.1.2.tgz create mode 100644 stable/wikijs/10.0.25/charts/postgresql-11.0.22.tgz create mode 100644 stable/wikijs/10.0.25/ix_values.yaml create mode 100644 stable/wikijs/10.0.25/questions.yaml create mode 100644 stable/wikijs/10.0.25/templates/common.yaml create mode 100644 stable/wikijs/10.0.25/values.yaml delete mode 100644 stable/wordpress/1.1.10/CHANGELOG.md delete mode 100644 stable/wordpress/1.1.10/Chart.yaml delete mode 100644 stable/wordpress/1.1.10/app-changelog.md create mode 100644 stable/wordpress/1.1.11/CHANGELOG.md create mode 100644 stable/wordpress/1.1.11/Chart.yaml create mode 100644 stable/wordpress/1.1.11/README.md create mode 100644 stable/wordpress/1.1.11/app-changelog.md rename stable/wordpress/{1.1.10 => 1.1.11}/app-readme.md (100%) create mode 100644 stable/wordpress/1.1.11/charts/common-11.1.2.tgz create mode 100644 stable/wordpress/1.1.11/charts/mariadb-5.0.25.tgz rename stable/wordpress/{1.1.10 => 1.1.11}/ix_values.yaml (100%) rename stable/wordpress/{1.1.10 => 1.1.11}/questions.yaml (100%) rename stable/wordpress/{1.1.10 => 1.1.11}/templates/_env.tpl (100%) rename stable/wordpress/{1.1.10 => 1.1.11}/templates/common.yaml (100%) create mode 100644 stable/wordpress/1.1.11/values.yaml delete mode 100644 stable/youtransfer/2.1.6/CHANGELOG.md delete mode 100644 stable/youtransfer/2.1.6/Chart.yaml delete mode 100644 stable/youtransfer/2.1.6/app-changelog.md delete mode 100644 stable/youtransfer/2.1.6/app-readme.md delete mode 100644 stable/youtransfer/2.1.6/questions.yaml create mode 100644 stable/youtransfer/2.1.7/CHANGELOG.md create mode 100644 stable/youtransfer/2.1.7/Chart.yaml create mode 100644 stable/youtransfer/2.1.7/README.md create mode 100644 stable/youtransfer/2.1.7/app-changelog.md create mode 100644 stable/youtransfer/2.1.7/app-readme.md create mode 100644 stable/youtransfer/2.1.7/charts/common-11.1.2.tgz rename stable/youtransfer/{2.1.6 => 2.1.7}/ix_values.yaml (100%) create mode 100644 stable/youtransfer/2.1.7/questions.yaml rename stable/youtransfer/{2.1.6 => 2.1.7}/templates/common.yaml (100%) create mode 100644 stable/youtransfer/2.1.7/values.yaml delete mode 100644 stable/ztcuui-aio/3.0.7/CHANGELOG.md delete mode 100644 stable/ztcuui-aio/3.0.7/Chart.yaml delete mode 100644 stable/ztcuui-aio/3.0.7/app-changelog.md delete mode 100644 stable/ztcuui-aio/3.0.7/app-readme.md delete mode 100644 stable/ztcuui-aio/3.0.7/questions.yaml create mode 100644 stable/ztcuui-aio/3.0.8/CHANGELOG.md create mode 100644 stable/ztcuui-aio/3.0.8/Chart.yaml create mode 100644 stable/ztcuui-aio/3.0.8/README.md create mode 100644 stable/ztcuui-aio/3.0.8/app-changelog.md create mode 100644 stable/ztcuui-aio/3.0.8/app-readme.md create mode 100644 stable/ztcuui-aio/3.0.8/charts/common-11.1.2.tgz rename stable/ztcuui-aio/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/ztcuui-aio/3.0.8/questions.yaml create mode 100644 stable/ztcuui-aio/3.0.8/templates/common.yaml create mode 100644 stable/ztcuui-aio/3.0.8/values.yaml delete mode 100644 stable/zusam/3.0.7/CHANGELOG.md delete mode 100644 stable/zusam/3.0.7/Chart.yaml delete mode 100644 stable/zusam/3.0.7/app-changelog.md delete mode 100644 stable/zusam/3.0.7/app-readme.md delete mode 100644 stable/zusam/3.0.7/questions.yaml create mode 100644 stable/zusam/3.0.8/CHANGELOG.md create mode 100644 stable/zusam/3.0.8/Chart.yaml create mode 100644 stable/zusam/3.0.8/README.md create mode 100644 stable/zusam/3.0.8/app-changelog.md create mode 100644 stable/zusam/3.0.8/app-readme.md create mode 100644 stable/zusam/3.0.8/charts/common-11.1.2.tgz rename stable/zusam/{3.0.7 => 3.0.8}/ix_values.yaml (100%) create mode 100644 stable/zusam/3.0.8/questions.yaml create mode 100644 stable/zusam/3.0.8/templates/common.yaml create mode 100644 stable/zusam/3.0.8/values.yaml diff --git a/dependency/mariadb/5.0.25/CHANGELOG.md b/dependency/mariadb/5.0.25/CHANGELOG.md deleted file mode 100644 index 1a7799656ca..00000000000 --- a/dependency/mariadb/5.0.25/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mariadb-5.0.25](https://github.com/truecharts/charts/compare/mariadb-5.0.24...mariadb-5.0.25) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/mariadb to 10.10.2 - - - - -## [mariadb-5.0.24](https://github.com/truecharts/charts/compare/mariadb-5.0.23...mariadb-5.0.24) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/mariadb to 10.10.2 - - - - -## [mariadb-5.0.23](https://github.com/truecharts/charts/compare/mariadb-5.0.22...mariadb-5.0.23) (2023-01-15) - -### Fix - -- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) - - - - -## [mariadb-5.0.22](https://github.com/truecharts/charts/compare/mariadb-5.0.21...mariadb-5.0.22) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/mariadb to 10.10.2 - - - - -## [mariadb-5.0.21](https://github.com/truecharts/charts/compare/mariadb-5.0.20...mariadb-5.0.21) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/mariadb to 10.10.2 - - - - -## [mariadb-5.0.20](https://github.com/truecharts/charts/compare/mariadb-5.0.19...mariadb-5.0.20) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/mariadb to 10.10.2 - - - - -## [mariadb-5.0.19](https://github.com/truecharts/charts/compare/mariadb-5.0.18...mariadb-5.0.19) (2022-12-27) - -### Chore - -- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) - - - - -## [mariadb-5.0.18](https://github.com/truecharts/charts/compare/mariadb-5.0.17...mariadb-5.0.18) (2022-12-26) - -### Chore - -- update helm chart common to 11.1.1 - - - - -## [mariadb-5.0.17](https://github.com/truecharts/charts/compare/mariadb-5.0.16...mariadb-5.0.17) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/mariadb to 10.10.2 - - - - -## [mariadb-5.0.16](https://github.com/truecharts/charts/compare/mariadb-5.0.15...mariadb-5.0.16) (2022-12-24) - -### Chore - -- update helm chart common to v11.1.0 ([#5686](https://github.com/truecharts/charts/issues/5686)) - - - - -## [mariadb-5.0.15](https://github.com/truecharts/charts/compare/mariadb-5.0.14...mariadb-5.0.15) (2022-12-17) - - diff --git a/dependency/mariadb/5.0.25/Chart.yaml b/dependency/mariadb/5.0.25/Chart.yaml deleted file mode 100644 index c897ba3b2c8..00000000000 --- a/dependency/mariadb/5.0.25/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "10.10.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Fast, reliable, scalable, and easy to use open-source relational database system. -home: https://truecharts.org/charts/dependency/mariadb -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mariadb.png -keywords: - - mariadb - - mysql - - database - - sql -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mariadb -sources: - - https://github.com/truecharts/charts/tree/master/charts/dependency/mariadb - - https://github.com/bitnami/bitnami-docker-mariadb - - https://github.com/prometheus/mysqld_exporter - - https://mariadb.org -type: application -version: 5.0.25 -annotations: - truecharts.org/catagories: | - - database - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/dependency/mariadb/5.0.25/app-changelog.md b/dependency/mariadb/5.0.25/app-changelog.md deleted file mode 100644 index 9873f3521ec..00000000000 --- a/dependency/mariadb/5.0.25/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mariadb-5.0.25](https://github.com/truecharts/charts/compare/mariadb-5.0.24...mariadb-5.0.25) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/mariadb to 10.10.2 - - \ No newline at end of file diff --git a/dependency/mariadb/5.0.26/CHANGELOG.md b/dependency/mariadb/5.0.26/CHANGELOG.md new file mode 100644 index 00000000000..aeb656023c7 --- /dev/null +++ b/dependency/mariadb/5.0.26/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mariadb-5.0.26](https://github.com/truecharts/charts/compare/mariadb-5.0.25...mariadb-5.0.26) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mariadb-5.0.25](https://github.com/truecharts/charts/compare/mariadb-5.0.24...mariadb-5.0.25) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/mariadb to 10.10.2 + + + + +## [mariadb-5.0.24](https://github.com/truecharts/charts/compare/mariadb-5.0.23...mariadb-5.0.24) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/mariadb to 10.10.2 + + + + +## [mariadb-5.0.23](https://github.com/truecharts/charts/compare/mariadb-5.0.22...mariadb-5.0.23) (2023-01-15) + +### Fix + +- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) + + + + +## [mariadb-5.0.22](https://github.com/truecharts/charts/compare/mariadb-5.0.21...mariadb-5.0.22) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/mariadb to 10.10.2 + + + + +## [mariadb-5.0.21](https://github.com/truecharts/charts/compare/mariadb-5.0.20...mariadb-5.0.21) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/mariadb to 10.10.2 + + + + +## [mariadb-5.0.20](https://github.com/truecharts/charts/compare/mariadb-5.0.19...mariadb-5.0.20) (2023-01-04) + +### Chore + +- update container image tccr.io/truecharts/mariadb to 10.10.2 + + + + +## [mariadb-5.0.19](https://github.com/truecharts/charts/compare/mariadb-5.0.18...mariadb-5.0.19) (2022-12-27) + +### Chore + +- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) + + + + +## [mariadb-5.0.18](https://github.com/truecharts/charts/compare/mariadb-5.0.17...mariadb-5.0.18) (2022-12-26) + +### Chore + +- update helm chart common to 11.1.1 + + + + +## [mariadb-5.0.17](https://github.com/truecharts/charts/compare/mariadb-5.0.16...mariadb-5.0.17) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/mariadb to 10.10.2 + + + + +## [mariadb-5.0.16](https://github.com/truecharts/charts/compare/mariadb-5.0.15...mariadb-5.0.16) (2022-12-24) + +### Chore diff --git a/dependency/mariadb/5.0.26/Chart.yaml b/dependency/mariadb/5.0.26/Chart.yaml new file mode 100644 index 00000000000..f075c2bcbc5 --- /dev/null +++ b/dependency/mariadb/5.0.26/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "10.10.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Fast, reliable, scalable, and easy to use open-source relational database system. +home: https://truecharts.org/charts/dependency/mariadb +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mariadb.png +keywords: + - mariadb + - mysql + - database + - sql +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mariadb +sources: + - https://github.com/truecharts/charts/tree/master/charts/dependency/mariadb + - https://hub.docker.com/bitnami/mariadb + - https://github.com/bitnami/bitnami-docker-mariadb + - https://github.com/prometheus/mysqld_exporter + - https://mariadb.org +type: application +version: 5.0.26 +annotations: + truecharts.org/catagories: | + - database + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/dependency/mariadb/5.0.25/README.md b/dependency/mariadb/5.0.26/README.md similarity index 100% rename from dependency/mariadb/5.0.25/README.md rename to dependency/mariadb/5.0.26/README.md diff --git a/dependency/mariadb/5.0.26/app-changelog.md b/dependency/mariadb/5.0.26/app-changelog.md new file mode 100644 index 00000000000..4a7d20af038 --- /dev/null +++ b/dependency/mariadb/5.0.26/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mariadb-5.0.26](https://github.com/truecharts/charts/compare/mariadb-5.0.25...mariadb-5.0.26) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/dependency/mariadb/5.0.25/app-readme.md b/dependency/mariadb/5.0.26/app-readme.md similarity index 100% rename from dependency/mariadb/5.0.25/app-readme.md rename to dependency/mariadb/5.0.26/app-readme.md diff --git a/dependency/mariadb/5.0.25/charts/common-11.1.2.tgz b/dependency/mariadb/5.0.26/charts/common-11.1.2.tgz similarity index 100% rename from dependency/mariadb/5.0.25/charts/common-11.1.2.tgz rename to dependency/mariadb/5.0.26/charts/common-11.1.2.tgz diff --git a/dependency/mariadb/5.0.25/ix_values.yaml b/dependency/mariadb/5.0.26/ix_values.yaml similarity index 100% rename from dependency/mariadb/5.0.25/ix_values.yaml rename to dependency/mariadb/5.0.26/ix_values.yaml diff --git a/dependency/mariadb/5.0.25/questions.yaml b/dependency/mariadb/5.0.26/questions.yaml similarity index 100% rename from dependency/mariadb/5.0.25/questions.yaml rename to dependency/mariadb/5.0.26/questions.yaml diff --git a/dependency/mariadb/5.0.25/templates/common.yaml b/dependency/mariadb/5.0.26/templates/common.yaml similarity index 100% rename from dependency/mariadb/5.0.25/templates/common.yaml rename to dependency/mariadb/5.0.26/templates/common.yaml diff --git a/dependency/mariadb/5.0.25/values.yaml b/dependency/mariadb/5.0.26/values.yaml similarity index 100% rename from dependency/mariadb/5.0.25/values.yaml rename to dependency/mariadb/5.0.26/values.yaml diff --git a/dependency/memcached/5.0.24/CHANGELOG.md b/dependency/memcached/5.0.24/CHANGELOG.md deleted file mode 100644 index 71c69421ba9..00000000000 --- a/dependency/memcached/5.0.24/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [memcached-5.0.24](https://github.com/truecharts/charts/compare/memcached-5.0.23...memcached-5.0.24) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/memcached to 1.6.18 - - - - -## [memcached-5.0.23](https://github.com/truecharts/charts/compare/memcached-5.0.22...memcached-5.0.23) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/memcached to 1.6.18 - - - - -## [memcached-5.0.22](https://github.com/truecharts/charts/compare/memcached-5.0.21...memcached-5.0.22) (2023-01-16) - -### Chore - -- update container image tccr.io/truecharts/memcached to v1.6.18 - - - - -## [memcached-5.0.21](https://github.com/truecharts/charts/compare/memcached-5.0.20...memcached-5.0.21) (2023-01-15) - -### Fix - -- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) - - - - -## [memcached-5.0.20](https://github.com/truecharts/charts/compare/memcached-5.0.19...memcached-5.0.20) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/memcached to 1.6.17 - - - - -## [memcached-5.0.19](https://github.com/truecharts/charts/compare/memcached-5.0.18...memcached-5.0.19) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/memcached to 1.6.17 - - - - -## [memcached-5.0.18](https://github.com/truecharts/charts/compare/memcached-5.0.17...memcached-5.0.18) (2022-12-27) - -### Chore - -- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) - - - - -## [memcached-5.0.17](https://github.com/truecharts/charts/compare/memcached-5.0.16...memcached-5.0.17) (2022-12-26) - -### Chore - -- update helm chart common to 11.1.1 - - - - -## [memcached-5.0.16](https://github.com/truecharts/charts/compare/memcached-5.0.15...memcached-5.0.16) (2022-12-25) - -### Chore - -- update container image tccr.io/truecharts/memcached to 1.6.17 - - - - -## [memcached-5.0.15](https://github.com/truecharts/charts/compare/memcached-5.0.14...memcached-5.0.15) (2022-12-24) - -### Chore - -- update helm chart common to v11.1.0 ([#5686](https://github.com/truecharts/charts/issues/5686)) - - - - -## [memcached-5.0.14](https://github.com/truecharts/charts/compare/memcached-5.0.13...memcached-5.0.14) (2022-12-17) - - diff --git a/dependency/memcached/5.0.24/Chart.yaml b/dependency/memcached/5.0.24/Chart.yaml deleted file mode 100644 index a6fc1d28b07..00000000000 --- a/dependency/memcached/5.0.24/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "1.6.18" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Memcached is a memory-backed database caching solution -home: https://truecharts.org/charts/dependency/memcached -icon: https://truecharts.org/img/hotlink-ok/chart-icons/memcached.png -keywords: - - memcached - - database - - cache -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: memcached -sources: - - https://github.com/truecharts/charts/tree/master/charts/dependency/memcached - - https://github.com/bitnami/bitnami-docker-memcached - - http://memcached.org/ -type: application -version: 5.0.24 -annotations: - truecharts.org/catagories: | - - database - - cache - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/dependency/memcached/5.0.24/app-changelog.md b/dependency/memcached/5.0.24/app-changelog.md deleted file mode 100644 index c73797397e4..00000000000 --- a/dependency/memcached/5.0.24/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [memcached-5.0.24](https://github.com/truecharts/charts/compare/memcached-5.0.23...memcached-5.0.24) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/memcached to 1.6.18 - - \ No newline at end of file diff --git a/dependency/memcached/5.0.25/CHANGELOG.md b/dependency/memcached/5.0.25/CHANGELOG.md new file mode 100644 index 00000000000..b3416f70714 --- /dev/null +++ b/dependency/memcached/5.0.25/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [memcached-5.0.25](https://github.com/truecharts/charts/compare/memcached-5.0.24...memcached-5.0.25) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [memcached-5.0.24](https://github.com/truecharts/charts/compare/memcached-5.0.23...memcached-5.0.24) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/memcached to 1.6.18 + + + + +## [memcached-5.0.23](https://github.com/truecharts/charts/compare/memcached-5.0.22...memcached-5.0.23) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/memcached to 1.6.18 + + + + +## [memcached-5.0.22](https://github.com/truecharts/charts/compare/memcached-5.0.21...memcached-5.0.22) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/memcached to v1.6.18 + + + + +## [memcached-5.0.21](https://github.com/truecharts/charts/compare/memcached-5.0.20...memcached-5.0.21) (2023-01-15) + +### Fix + +- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) + + + + +## [memcached-5.0.20](https://github.com/truecharts/charts/compare/memcached-5.0.19...memcached-5.0.20) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/memcached to 1.6.17 + + + + +## [memcached-5.0.19](https://github.com/truecharts/charts/compare/memcached-5.0.18...memcached-5.0.19) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/memcached to 1.6.17 + + + + +## [memcached-5.0.18](https://github.com/truecharts/charts/compare/memcached-5.0.17...memcached-5.0.18) (2022-12-27) + +### Chore + +- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) + + + + +## [memcached-5.0.17](https://github.com/truecharts/charts/compare/memcached-5.0.16...memcached-5.0.17) (2022-12-26) + +### Chore + +- update helm chart common to 11.1.1 + + + + +## [memcached-5.0.16](https://github.com/truecharts/charts/compare/memcached-5.0.15...memcached-5.0.16) (2022-12-25) + +### Chore + +- update container image tccr.io/truecharts/memcached to 1.6.17 + + + + +## [memcached-5.0.15](https://github.com/truecharts/charts/compare/memcached-5.0.14...memcached-5.0.15) (2022-12-24) + +### Chore diff --git a/dependency/memcached/5.0.25/Chart.yaml b/dependency/memcached/5.0.25/Chart.yaml new file mode 100644 index 00000000000..e7517f9de06 --- /dev/null +++ b/dependency/memcached/5.0.25/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "1.6.18" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Memcached is a memory-backed database caching solution +home: https://truecharts.org/charts/dependency/memcached +icon: https://truecharts.org/img/hotlink-ok/chart-icons/memcached.png +keywords: + - memcached + - database + - cache +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: memcached +sources: + - https://github.com/truecharts/charts/tree/master/charts/dependency/memcached + - https://hub.docker.com/bitnami/memcached + - https://github.com/bitnami/bitnami-docker-memcached + - http://memcached.org/ +type: application +version: 5.0.25 +annotations: + truecharts.org/catagories: | + - database + - cache + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/dependency/memcached/5.0.24/README.md b/dependency/memcached/5.0.25/README.md similarity index 100% rename from dependency/memcached/5.0.24/README.md rename to dependency/memcached/5.0.25/README.md diff --git a/dependency/memcached/5.0.25/app-changelog.md b/dependency/memcached/5.0.25/app-changelog.md new file mode 100644 index 00000000000..c5baabb52d4 --- /dev/null +++ b/dependency/memcached/5.0.25/app-changelog.md @@ -0,0 +1,9 @@ + + +## [memcached-5.0.25](https://github.com/truecharts/charts/compare/memcached-5.0.24...memcached-5.0.25) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/dependency/memcached/5.0.24/app-readme.md b/dependency/memcached/5.0.25/app-readme.md similarity index 100% rename from dependency/memcached/5.0.24/app-readme.md rename to dependency/memcached/5.0.25/app-readme.md diff --git a/dependency/memcached/5.0.24/charts/common-11.1.2.tgz b/dependency/memcached/5.0.25/charts/common-11.1.2.tgz similarity index 100% rename from dependency/memcached/5.0.24/charts/common-11.1.2.tgz rename to dependency/memcached/5.0.25/charts/common-11.1.2.tgz diff --git a/dependency/memcached/5.0.24/ix_values.yaml b/dependency/memcached/5.0.25/ix_values.yaml similarity index 100% rename from dependency/memcached/5.0.24/ix_values.yaml rename to dependency/memcached/5.0.25/ix_values.yaml diff --git a/dependency/memcached/5.0.24/questions.yaml b/dependency/memcached/5.0.25/questions.yaml similarity index 100% rename from dependency/memcached/5.0.24/questions.yaml rename to dependency/memcached/5.0.25/questions.yaml diff --git a/dependency/memcached/5.0.24/templates/common.yaml b/dependency/memcached/5.0.25/templates/common.yaml similarity index 100% rename from dependency/memcached/5.0.24/templates/common.yaml rename to dependency/memcached/5.0.25/templates/common.yaml diff --git a/dependency/memcached/5.0.24/values.yaml b/dependency/memcached/5.0.25/values.yaml similarity index 100% rename from dependency/memcached/5.0.24/values.yaml rename to dependency/memcached/5.0.25/values.yaml diff --git a/dependency/postgresql/11.0.23/CHANGELOG.md b/dependency/postgresql/11.0.23/CHANGELOG.md new file mode 100644 index 00000000000..e08999ab502 --- /dev/null +++ b/dependency/postgresql/11.0.23/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [postgresql-11.0.23](https://github.com/truecharts/charts/compare/postgresql-11.0.22...postgresql-11.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [postgresql-11.0.22](https://github.com/truecharts/charts/compare/postgresql-11.0.21...postgresql-11.0.22) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/postgresql to 14.6.0 + + + + +## [postgresql-11.0.21](https://github.com/truecharts/charts/compare/postgresql-11.0.20...postgresql-11.0.21) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/postgresql to 14.6.0 + + + + +## [postgresql-11.0.20](https://github.com/truecharts/charts/compare/postgresql-11.0.19...postgresql-11.0.20) (2023-01-15) + +### Fix + +- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) + + + + +## [postgresql-11.0.19](https://github.com/truecharts/charts/compare/postgresql-11.0.18...postgresql-11.0.19) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/postgresql to 14.6.0 + + + + +## [postgresql-11.0.18](https://github.com/truecharts/charts/compare/postgresql-11.0.17...postgresql-11.0.18) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/postgresql to 14.6.0 + + + + +## [postgresql-11.0.17](https://github.com/truecharts/charts/compare/postgresql-11.0.16...postgresql-11.0.17) (2022-12-27) + +### Chore + +- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) + + + + +## [postgresql-11.0.16](https://github.com/truecharts/charts/compare/postgresql-11.0.15...postgresql-11.0.16) (2022-12-26) + +### Chore + +- update helm chart common to 11.1.1 + + + + +## [postgresql-11.0.15](https://github.com/truecharts/charts/compare/postgresql-11.0.14...postgresql-11.0.15) (2022-12-25) + +### Chore + +- update container image tccr.io/truecharts/postgresql to 14.6.0 + + + + +## [postgresql-11.0.14](https://github.com/truecharts/charts/compare/postgresql-11.0.13...postgresql-11.0.14) (2022-12-24) + +### Chore + +- update helm chart common to v11.1.0 ([#5686](https://github.com/truecharts/charts/issues/5686)) + + + + +## [postgresql-11.0.13](https://github.com/truecharts/charts/compare/postgresql-11.0.12...postgresql-11.0.13) (2022-12-17) + + diff --git a/dependency/postgresql/11.0.23/Chart.yaml b/dependency/postgresql/11.0.23/Chart.yaml new file mode 100644 index 00000000000..8c8f90b6fe8 --- /dev/null +++ b/dependency/postgresql/11.0.23/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "14.6.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: PostgresSQL +home: https://truecharts.org/charts/dependency/postgresql +icon: https://truecharts.org/img/hotlink-ok/chart-icons/postgresql.png +keywords: + - postgres + - postgressql + - dtabase + - sql +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: postgresql +sources: + - https://github.com/truecharts/charts/tree/master/charts/dependency/postgresql + - https://hub.docker.com/bitnami/postgresql + - https://www.postgresql.org/ +type: application +version: 11.0.23 +annotations: + truecharts.org/catagories: | + - database + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/dependency/promtail/6.0.12/README.md b/dependency/postgresql/11.0.23/README.md similarity index 100% rename from dependency/promtail/6.0.12/README.md rename to dependency/postgresql/11.0.23/README.md diff --git a/dependency/postgresql/11.0.23/app-changelog.md b/dependency/postgresql/11.0.23/app-changelog.md new file mode 100644 index 00000000000..f48ce164ad8 --- /dev/null +++ b/dependency/postgresql/11.0.23/app-changelog.md @@ -0,0 +1,9 @@ + + +## [postgresql-11.0.23](https://github.com/truecharts/charts/compare/postgresql-11.0.22...postgresql-11.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/dependency/postgresql/11.0.23/app-readme.md b/dependency/postgresql/11.0.23/app-readme.md new file mode 100644 index 00000000000..e7844625605 --- /dev/null +++ b/dependency/postgresql/11.0.23/app-readme.md @@ -0,0 +1,8 @@ +PostgresSQL + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/dependency/postgresql](https://truecharts.org/charts/dependency/postgresql) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/dependency/promtail/6.0.12/charts/common-11.1.2.tgz b/dependency/postgresql/11.0.23/charts/common-11.1.2.tgz similarity index 100% rename from dependency/promtail/6.0.12/charts/common-11.1.2.tgz rename to dependency/postgresql/11.0.23/charts/common-11.1.2.tgz diff --git a/dependency/postgresql/11.0.23/ix_values.yaml b/dependency/postgresql/11.0.23/ix_values.yaml new file mode 100644 index 00000000000..9e92a84dcd7 --- /dev/null +++ b/dependency/postgresql/11.0.23/ix_values.yaml @@ -0,0 +1,132 @@ +image: + repository: tccr.io/truecharts/postgresql + pullPolicy: IfNotPresent + tag: 14.6.0@sha256:101b616f2cd0d4d3c1963ecdffd5ffc5704f202967288e718f7aa2ae526600bc + +controller: + # -- Set the controller type. + # Valid options are deployment, daemonset or statefulset + type: statefulset + # -- Number of desired pods + replicas: 1 + # -- Set the controller upgrade strategy + # For Deployments, valid values are Recreate (default) and RollingUpdate. + # For StatefulSets, valid values are OnDelete and RollingUpdate (default). + # DaemonSets ignore this. + strategy: RollingUpdate + rollingUpdate: + # -- Set deployment RollingUpdate max unavailable + unavailable: 1 + # -- Set deployment RollingUpdate max surge + surge: + # -- Set statefulset RollingUpdate partition + partition: + # -- ReplicaSet revision history limit + revisionHistoryLimit: 3 + +securityContext: + readOnlyRootFilesystem: false + +service: + main: + ports: + main: + port: 5432 + targetPort: 5432 + +## TODO: Fix the backup-on-upgrade system +enableUpgradeBackup: false + +podSecurityContext: + runAsGroup: 0 + +volumeClaimTemplates: + db: + enabled: true + mountPath: "/bitnami/postgresql" + +# -- Probe configuration +# -- [[ref]](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) +# @default -- See below +probes: + # -- Liveness probe configuration + # @default -- See below + liveness: + # -- Enable the liveness probe + 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. + # @default -- See below + spec: + exec: + command: + - sh + - -c + - "until pg_isready -U ${POSTGRES_USER} -h localhost; do sleep 2 ; done" + + # -- Redainess probe configuration + # @default -- See below + readiness: + # -- Enable the readiness probe + enabled: true + # -- Set this to `true` if you wish to specify your own readinessProbe + custom: true + # -- The spec field contains the values for the default readinessProbe. + # If you selected `custom: true`, this field holds the definition of the readinessProbe. + # @default -- See below + spec: + exec: + command: + - sh + - -c + - "until pg_isready -U ${POSTGRES_USER} -h localhost; do sleep 2 ; done" + # -- Startup probe configuration + # @default -- See below + startup: + # -- Enable the startup probe + enabled: true + 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. + # @default -- See below + spec: + exec: + command: + - sh + - -c + - "until pg_isready -U ${POSTGRES_USER} -h localhost; do sleep 2 ; done" + +postgresqlPassword: "testpass" +postgresqlUsername: "test" +postgresqlDatabase: "test" +postgrespassword: "testroot" +existingSecret: "" + +secret: + credentials: + enabled: true + data: + postgresql-password: '{{ ( .Values.postgresqlPassword | default "empty" ) }}' + postgresql-postgres-password: '{{ ( .Values.postgrespassword | default "empty" ) }}' + +env: + POSTGRES_PASSWORD: + secretKeyRef: + name: '{{ .Values.existingSecret | default ( printf "%s-credentials" ( include "tc.common.names.fullname" . ) ) }}' + key: "postgresql-password" + POSTGRESQL_POSTGRES_PASSWORD: + secretKeyRef: + name: '{{ .Values.existingSecret | default ( printf "%s-credentials" ( include "tc.common.names.fullname" . ) ) }}' + key: "postgresql-postgres-password" + POSTGRES_USER: "{{ .Values.postgresqlUsername }}" + POSTGRES_DB: "{{ .Values.postgresqlDatabase }}" +# POSTGRESQL_POSTGRES_PASSWORD: "{{ .Values.postgrespassword }}" +# POSTGRESQL_PASSWORD: "{{ .Values.password }}" + +portal: + enabled: false + +manifests: + enabled: false diff --git a/dependency/postgresql/11.0.23/questions.yaml b/dependency/postgresql/11.0.23/questions.yaml new file mode 100644 index 00000000000..27ba4693497 --- /dev/null +++ b/dependency/postgresql/11.0.23/questions.yaml @@ -0,0 +1,1596 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: postgresqlDatabase + group: "App Configuration" + label: "Database Name" + schema: + type: string + default: "mydatabase" + required: true + - variable: postgresqlUsername + group: "App Configuration" + label: "Database User" + schema: + type: string + default: "mydatabaseuser" + required: true + - variable: postgresqlPassword + group: "App Configuration" + label: "Database Password" + schema: + type: string + default: "" + required: true + - variable: postgrespassword + group: "App Configuration" + label: "Root Password" + schema: + type: string + default: "" + required: true + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5432 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: volumeClaimTemplates + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: db + label: "DB Storage" + description: "Stores the old Application Database." + schema: + type: dict + hidden: true + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/dependency/solr/2.0.26/templates/common.yaml b/dependency/postgresql/11.0.23/templates/common.yaml similarity index 100% rename from dependency/solr/2.0.26/templates/common.yaml rename to dependency/postgresql/11.0.23/templates/common.yaml diff --git a/dependency/promtail/6.0.12/values.yaml b/dependency/postgresql/11.0.23/values.yaml similarity index 100% rename from dependency/promtail/6.0.12/values.yaml rename to dependency/postgresql/11.0.23/values.yaml diff --git a/dependency/promtail/6.0.12/CHANGELOG.md b/dependency/promtail/6.0.12/CHANGELOG.md deleted file mode 100644 index 25ea33ba19e..00000000000 --- a/dependency/promtail/6.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [promtail-6.0.12](https://github.com/truecharts/charts/compare/promtail-6.0.11...promtail-6.0.12) (2023-01-30) - -### Chore - -- update container image ghcr.io/truecharts/promtail to v2.7.2 - - - - -## [promtail-6.0.11](https://github.com/truecharts/charts/compare/promtail-6.0.10...promtail-6.0.11) (2023-01-15) - -### Fix - -- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) - - - - -## [promtail-6.0.10](https://github.com/truecharts/charts/compare/promtail-6.0.9...promtail-6.0.10) (2022-12-27) - -### Chore - -- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) - - - - -## [promtail-6.0.9](https://github.com/truecharts/charts/compare/promtail-6.0.8...promtail-6.0.9) (2022-12-26) - -### Chore - -- update helm chart common to 11.1.1 - - - - -## [promtail-6.0.8](https://github.com/truecharts/charts/compare/promtail-6.0.7...promtail-6.0.8) (2022-12-24) - -### Chore - -- update helm chart common to v11.1.0 ([#5686](https://github.com/truecharts/charts/issues/5686)) - - - - -## [promtail-6.0.7](https://github.com/truecharts/charts/compare/promtail-6.0.6...promtail-6.0.7) (2022-12-17) - - - - -## [promtail-6.0.6](https://github.com/truecharts/charts/compare/promtail-6.0.5...promtail-6.0.6) (2022-12-14) - -### Chore - -- update helm chart common to v11.0.8 - - - - -## [promtail-6.0.5](https://github.com/truecharts/charts/compare/promtail-6.0.4...promtail-6.0.5) (2022-12-11) - -### Chore - -- update helm chart common to v11.0.7 ([#5266](https://github.com/truecharts/charts/issues/5266)) - - - - -## [promtail-6.0.4](https://github.com/truecharts/charts/compare/promtail-6.0.3...promtail-6.0.4) (2022-12-10) - - - - -## [promtail-6.0.3](https://github.com/truecharts/charts/compare/promtail-6.0.2...promtail-6.0.3) (2022-12-07) - - - - -## [promtail-6.0.2](https://github.com/truecharts/charts/compare/promtail-6.0.1...promtail-6.0.2) (2022-12-06) - -### Chore - -- update helm chart common to v11.0.5 - - - - -## [promtail-6.0.1](https://github.com/truecharts/charts/compare/promtail-6.0.0...promtail-6.0.1) (2022-11-29) - - - - -## [promtail-6.0.1](https://github.com/truecharts/charts/compare/promtail-6.0.0...promtail-6.0.1) (2022-11-29) diff --git a/dependency/promtail/6.0.12/Chart.yaml b/dependency/promtail/6.0.12/Chart.yaml deleted file mode 100644 index 61927ab978e..00000000000 --- a/dependency/promtail/6.0.12/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "2.7.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Promtail is an agent which ships the contents of local logs to a Loki instance -icon: https://truecharts.org/img/hotlink-ok/chart-icons/promtail.png -home: https://truecharts.org/charts/dependency/promtail -keywords: - - metrics - - logs -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: promtail -sources: - - https://github.com/truecharts/charts/tree/master/charts/dependency/promtail - - https://github.com/grafana/loki - - https://grafana.com/oss/loki/ - - https://grafana.com/docs/loki/latest/ -type: application -version: 6.0.12 -annotations: - truecharts.org/catagories: | - - metrics - - logs - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/dependency/promtail/6.0.12/app-changelog.md b/dependency/promtail/6.0.12/app-changelog.md deleted file mode 100644 index 5b2b3c3aed9..00000000000 --- a/dependency/promtail/6.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [promtail-6.0.12](https://github.com/truecharts/charts/compare/promtail-6.0.11...promtail-6.0.12) (2023-01-30) - -### Chore - -- update container image ghcr.io/truecharts/promtail to v2.7.2 - - \ No newline at end of file diff --git a/dependency/promtail/6.0.13/CHANGELOG.md b/dependency/promtail/6.0.13/CHANGELOG.md new file mode 100644 index 00000000000..f9abb40a58e --- /dev/null +++ b/dependency/promtail/6.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [promtail-6.0.13](https://github.com/truecharts/charts/compare/promtail-6.0.12...promtail-6.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [promtail-6.0.12](https://github.com/truecharts/charts/compare/promtail-6.0.11...promtail-6.0.12) (2023-01-30) + +### Chore + +- update container image ghcr.io/truecharts/promtail to v2.7.2 + + + + +## [promtail-6.0.11](https://github.com/truecharts/charts/compare/promtail-6.0.10...promtail-6.0.11) (2023-01-15) + +### Fix + +- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) + + + + +## [promtail-6.0.10](https://github.com/truecharts/charts/compare/promtail-6.0.9...promtail-6.0.10) (2022-12-27) + +### Chore + +- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) + + + + +## [promtail-6.0.9](https://github.com/truecharts/charts/compare/promtail-6.0.8...promtail-6.0.9) (2022-12-26) + +### Chore + +- update helm chart common to 11.1.1 + + + + +## [promtail-6.0.8](https://github.com/truecharts/charts/compare/promtail-6.0.7...promtail-6.0.8) (2022-12-24) + +### Chore + +- update helm chart common to v11.1.0 ([#5686](https://github.com/truecharts/charts/issues/5686)) + + + + +## [promtail-6.0.7](https://github.com/truecharts/charts/compare/promtail-6.0.6...promtail-6.0.7) (2022-12-17) + + + + +## [promtail-6.0.6](https://github.com/truecharts/charts/compare/promtail-6.0.5...promtail-6.0.6) (2022-12-14) + +### Chore + +- update helm chart common to v11.0.8 + + + + +## [promtail-6.0.5](https://github.com/truecharts/charts/compare/promtail-6.0.4...promtail-6.0.5) (2022-12-11) + +### Chore + +- update helm chart common to v11.0.7 ([#5266](https://github.com/truecharts/charts/issues/5266)) + + + + +## [promtail-6.0.4](https://github.com/truecharts/charts/compare/promtail-6.0.3...promtail-6.0.4) (2022-12-10) + + + + +## [promtail-6.0.3](https://github.com/truecharts/charts/compare/promtail-6.0.2...promtail-6.0.3) (2022-12-07) + + + + +## [promtail-6.0.2](https://github.com/truecharts/charts/compare/promtail-6.0.1...promtail-6.0.2) (2022-12-06) + +### Chore + +- update helm chart common to v11.0.5 + diff --git a/dependency/promtail/6.0.13/Chart.yaml b/dependency/promtail/6.0.13/Chart.yaml new file mode 100644 index 00000000000..abb77f77e74 --- /dev/null +++ b/dependency/promtail/6.0.13/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "2.7.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Promtail is an agent which ships the contents of local logs to a Loki instance +icon: https://truecharts.org/img/hotlink-ok/chart-icons/promtail.png +home: https://truecharts.org/charts/dependency/promtail +keywords: + - metrics + - logs +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: promtail +sources: + - https://github.com/truecharts/charts/tree/master/charts/dependency/promtail + - https://hub.docker.com/grafana/promtail + - https://github.com/grafana/loki + - https://grafana.com/oss/loki/ + - https://grafana.com/docs/loki/latest/ +type: application +version: 6.0.13 +annotations: + truecharts.org/catagories: | + - metrics + - logs + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/dependency/solr/2.0.26/README.md b/dependency/promtail/6.0.13/README.md similarity index 100% rename from dependency/solr/2.0.26/README.md rename to dependency/promtail/6.0.13/README.md diff --git a/dependency/promtail/6.0.13/app-changelog.md b/dependency/promtail/6.0.13/app-changelog.md new file mode 100644 index 00000000000..708f9ff9023 --- /dev/null +++ b/dependency/promtail/6.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [promtail-6.0.13](https://github.com/truecharts/charts/compare/promtail-6.0.12...promtail-6.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/dependency/promtail/6.0.12/app-readme.md b/dependency/promtail/6.0.13/app-readme.md similarity index 100% rename from dependency/promtail/6.0.12/app-readme.md rename to dependency/promtail/6.0.13/app-readme.md diff --git a/dependency/solr/2.0.26/charts/common-11.1.2.tgz b/dependency/promtail/6.0.13/charts/common-11.1.2.tgz similarity index 100% rename from dependency/solr/2.0.26/charts/common-11.1.2.tgz rename to dependency/promtail/6.0.13/charts/common-11.1.2.tgz diff --git a/dependency/promtail/6.0.12/ix_values.yaml b/dependency/promtail/6.0.13/ix_values.yaml similarity index 100% rename from dependency/promtail/6.0.12/ix_values.yaml rename to dependency/promtail/6.0.13/ix_values.yaml diff --git a/dependency/promtail/6.0.12/questions.yaml b/dependency/promtail/6.0.13/questions.yaml similarity index 100% rename from dependency/promtail/6.0.12/questions.yaml rename to dependency/promtail/6.0.13/questions.yaml diff --git a/dependency/promtail/6.0.12/templates/_servicemonitor.tpl b/dependency/promtail/6.0.13/templates/_servicemonitor.tpl similarity index 100% rename from dependency/promtail/6.0.12/templates/_servicemonitor.tpl rename to dependency/promtail/6.0.13/templates/_servicemonitor.tpl diff --git a/dependency/promtail/6.0.12/templates/common.yaml b/dependency/promtail/6.0.13/templates/common.yaml similarity index 100% rename from dependency/promtail/6.0.12/templates/common.yaml rename to dependency/promtail/6.0.13/templates/common.yaml diff --git a/dependency/solr/2.0.26/values.yaml b/dependency/promtail/6.0.13/values.yaml similarity index 100% rename from dependency/solr/2.0.26/values.yaml rename to dependency/promtail/6.0.13/values.yaml diff --git a/dependency/solr/2.0.26/CHANGELOG.md b/dependency/solr/2.0.26/CHANGELOG.md deleted file mode 100644 index 049f6df6ccf..00000000000 --- a/dependency/solr/2.0.26/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [solr-2.0.26](https://github.com/truecharts/charts/compare/solr-2.0.25...solr-2.0.26) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/solr to v9.1.1 - - - - -## [solr-2.0.25](https://github.com/truecharts/charts/compare/solr-2.0.24...solr-2.0.25) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/solr to v - - - - -## [solr-2.0.24](https://github.com/truecharts/charts/compare/solr-2.0.23...solr-2.0.24) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/solr to 9.1.0 - - - - -## [solr-2.0.23](https://github.com/truecharts/charts/compare/solr-2.0.22...solr-2.0.23) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/solr to 9.1.0 - - - - -## [solr-2.0.22](https://github.com/truecharts/charts/compare/solr-2.0.21...solr-2.0.22) (2023-01-15) - -### Fix - -- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) - - - - -## [solr-2.0.21](https://github.com/truecharts/charts/compare/solr-2.0.20...solr-2.0.21) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/solr to 9.1.0 - - - - -## [solr-2.0.20](https://github.com/truecharts/charts/compare/solr-2.0.19...solr-2.0.20) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/solr to 9.1.0 - - - - -## [solr-2.0.19](https://github.com/truecharts/charts/compare/solr-2.0.18...solr-2.0.19) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/solr to 9.1.0 - - - - -## [solr-2.0.18](https://github.com/truecharts/charts/compare/solr-2.0.17...solr-2.0.18) (2022-12-27) - -### Chore - -- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) - - - - -## [solr-2.0.17](https://github.com/truecharts/charts/compare/solr-2.0.16...solr-2.0.17) (2022-12-26) - -### Chore - -- update helm chart common to 11.1.1 - - - - -## [solr-2.0.16](https://github.com/truecharts/charts/compare/solr-2.0.15...solr-2.0.16) (2022-12-25) - -### Chore diff --git a/dependency/solr/2.0.26/Chart.yaml b/dependency/solr/2.0.26/Chart.yaml deleted file mode 100644 index b35e3fa0d65..00000000000 --- a/dependency/solr/2.0.26/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -appVersion: "9.1.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Apache Solr -home: https://truecharts.org/charts/dependency/solr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/solr.png -keywords: - - solr - - apache - - search -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: solr -sources: - - https://github.com/truecharts/charts/tree/master/charts/dependency/solr - - https://github.com/apache/solr - - https://hub.docker.com/r/bitnami/solr/ -type: application -version: 2.0.26 -annotations: - truecharts.org/catagories: | - - search - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/dependency/solr/2.0.26/app-changelog.md b/dependency/solr/2.0.26/app-changelog.md deleted file mode 100644 index 4e87d721967..00000000000 --- a/dependency/solr/2.0.26/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [solr-2.0.26](https://github.com/truecharts/charts/compare/solr-2.0.25...solr-2.0.26) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/solr to v9.1.1 - - \ No newline at end of file diff --git a/dependency/solr/2.0.27/CHANGELOG.md b/dependency/solr/2.0.27/CHANGELOG.md new file mode 100644 index 00000000000..698bf8e40e0 --- /dev/null +++ b/dependency/solr/2.0.27/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [solr-2.0.27](https://github.com/truecharts/charts/compare/solr-2.0.26...solr-2.0.27) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [solr-2.0.26](https://github.com/truecharts/charts/compare/solr-2.0.25...solr-2.0.26) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/solr to v9.1.1 + + + + +## [solr-2.0.25](https://github.com/truecharts/charts/compare/solr-2.0.24...solr-2.0.25) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/solr to v + + + + +## [solr-2.0.24](https://github.com/truecharts/charts/compare/solr-2.0.23...solr-2.0.24) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/solr to 9.1.0 + + + + +## [solr-2.0.23](https://github.com/truecharts/charts/compare/solr-2.0.22...solr-2.0.23) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/solr to 9.1.0 + + + + +## [solr-2.0.22](https://github.com/truecharts/charts/compare/solr-2.0.21...solr-2.0.22) (2023-01-15) + +### Fix + +- don't run manifest Manager on most dependency apps. ([#6384](https://github.com/truecharts/charts/issues/6384)) + + + + +## [solr-2.0.21](https://github.com/truecharts/charts/compare/solr-2.0.20...solr-2.0.21) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/solr to 9.1.0 + + + + +## [solr-2.0.20](https://github.com/truecharts/charts/compare/solr-2.0.19...solr-2.0.20) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/solr to 9.1.0 + + + + +## [solr-2.0.19](https://github.com/truecharts/charts/compare/solr-2.0.18...solr-2.0.19) (2023-01-04) + +### Chore + +- update container image tccr.io/truecharts/solr to 9.1.0 + + + + +## [solr-2.0.18](https://github.com/truecharts/charts/compare/solr-2.0.17...solr-2.0.18) (2022-12-27) + +### Chore + +- update helm chart common to 11.1.2 ([#5855](https://github.com/truecharts/charts/issues/5855)) + + + + +## [solr-2.0.17](https://github.com/truecharts/charts/compare/solr-2.0.16...solr-2.0.17) (2022-12-26) + +### Chore diff --git a/dependency/solr/2.0.27/Chart.yaml b/dependency/solr/2.0.27/Chart.yaml new file mode 100644 index 00000000000..b601634e37c --- /dev/null +++ b/dependency/solr/2.0.27/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "9.1.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Apache Solr +home: https://truecharts.org/charts/dependency/solr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/solr.png +keywords: + - solr + - apache + - search +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: solr +sources: + - https://github.com/truecharts/charts/tree/master/charts/dependency/solr + - https://hub.docker.com/bitnami/solr + - https://github.com/apache/solr +type: application +version: 2.0.27 +annotations: + truecharts.org/catagories: | + - search + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/dependency/solr/2.0.27/README.md b/dependency/solr/2.0.27/README.md new file mode 100644 index 00000000000..36b5b3d8f7e --- /dev/null +++ b/dependency/solr/2.0.27/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/dependency/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/dependency/solr/2.0.27/app-changelog.md b/dependency/solr/2.0.27/app-changelog.md new file mode 100644 index 00000000000..8dab827c934 --- /dev/null +++ b/dependency/solr/2.0.27/app-changelog.md @@ -0,0 +1,9 @@ + + +## [solr-2.0.27](https://github.com/truecharts/charts/compare/solr-2.0.26...solr-2.0.27) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/dependency/solr/2.0.26/app-readme.md b/dependency/solr/2.0.27/app-readme.md similarity index 100% rename from dependency/solr/2.0.26/app-readme.md rename to dependency/solr/2.0.27/app-readme.md diff --git a/enterprise/prometheus/7.0.46/charts/common-11.1.2.tgz b/dependency/solr/2.0.27/charts/common-11.1.2.tgz similarity index 100% rename from enterprise/prometheus/7.0.46/charts/common-11.1.2.tgz rename to dependency/solr/2.0.27/charts/common-11.1.2.tgz diff --git a/dependency/solr/2.0.26/ix_values.yaml b/dependency/solr/2.0.27/ix_values.yaml similarity index 100% rename from dependency/solr/2.0.26/ix_values.yaml rename to dependency/solr/2.0.27/ix_values.yaml diff --git a/dependency/solr/2.0.26/questions.yaml b/dependency/solr/2.0.27/questions.yaml similarity index 100% rename from dependency/solr/2.0.26/questions.yaml rename to dependency/solr/2.0.27/questions.yaml diff --git a/stable/sickgear/6.0.0/templates/common.yaml b/dependency/solr/2.0.27/templates/common.yaml similarity index 100% rename from stable/sickgear/6.0.0/templates/common.yaml rename to dependency/solr/2.0.27/templates/common.yaml diff --git a/enterprise/prometheus/7.0.46/values.yaml b/dependency/solr/2.0.27/values.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/values.yaml rename to dependency/solr/2.0.27/values.yaml diff --git a/enterprise/prometheus/7.0.46/CHANGELOG.md b/enterprise/prometheus/7.0.46/CHANGELOG.md deleted file mode 100644 index f28a2cd2ffd..00000000000 --- a/enterprise/prometheus/7.0.46/CHANGELOG.md +++ /dev/null @@ -1,48 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [prometheus-7.0.46](https://github.com/truecharts/charts/compare/prometheus-7.0.45...prometheus-7.0.46) (2023-01-31) - -### Chore - -- update helm general non-major - - update container image tccr.io/truecharts/thanos to 0.30.1 - - update container image tccr.io/truecharts/prometheus to 2.41.0 - - - - -## [prometheus-7.0.45](https://github.com/truecharts/charts/compare/prometheus-7.0.44...prometheus-7.0.45) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/alertmanager to 0.25.0 - - update container image tccr.io/truecharts/thanos to 0.30.1 - - update container image tccr.io/truecharts/prometheus to 2.41.0 - - - - -## [prometheus-7.0.44](https://github.com/truecharts/charts/compare/prometheus-7.0.43...prometheus-7.0.44) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/alertmanager to 0.25.0 - - - - -## [prometheus-7.0.43](https://github.com/truecharts/charts/compare/prometheus-7.0.42...prometheus-7.0.43) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - ### Feat - -- move Grafana, Prometheus and Traefik to Enterprise Train ([#6372](https://github.com/truecharts/charts/issues/6372)) - - \ No newline at end of file diff --git a/enterprise/prometheus/7.0.46/Chart.yaml b/enterprise/prometheus/7.0.46/Chart.yaml deleted file mode 100644 index 00d93a669f1..00000000000 --- a/enterprise/prometheus/7.0.46/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: v2 -appVersion: "2.41.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: exporters.enabled,exporters.node-exporter.enabled - name: node-exporter - repository: https://charts.bitnami.com/bitnami - version: 3.2.8 - - condition: exporters.enabled,exporters.kube-state-metrics.enabled - name: kube-state-metrics - repository: https://charts.bitnami.com/bitnami - version: 3.2.8 -deprecated: false -description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. -icon: https://truecharts.org/img/hotlink-ok/chart-icons/prometheus.png -home: https://truecharts.org/charts/enterprise/prometheus -keywords: - - metrics -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: prometheus -sources: - - https://github.com/truecharts/charts/tree/master/charts/enterprise/prometheus - - https://github.com/prometheus-community/helm-charts - - https://github.com/prometheus-operator/kube-prometheus -type: application -version: 7.0.46 -annotations: - truecharts.org/catagories: | - - metrics - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/enterprise/prometheus/7.0.46/app-changelog.md b/enterprise/prometheus/7.0.46/app-changelog.md deleted file mode 100644 index eb00b3d4521..00000000000 --- a/enterprise/prometheus/7.0.46/app-changelog.md +++ /dev/null @@ -1,11 +0,0 @@ - - -## [prometheus-7.0.46](https://github.com/truecharts/charts/compare/prometheus-7.0.45...prometheus-7.0.46) (2023-01-31) - -### Chore - -- update helm general non-major - - update container image tccr.io/truecharts/thanos to 0.30.1 - - update container image tccr.io/truecharts/prometheus to 2.41.0 - - \ No newline at end of file diff --git a/enterprise/prometheus/7.0.47/CHANGELOG.md b/enterprise/prometheus/7.0.47/CHANGELOG.md new file mode 100644 index 00000000000..c822284e1d2 --- /dev/null +++ b/enterprise/prometheus/7.0.47/CHANGELOG.md @@ -0,0 +1,57 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [prometheus-7.0.47](https://github.com/truecharts/charts/compare/prometheus-7.0.46...prometheus-7.0.47) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [prometheus-7.0.46](https://github.com/truecharts/charts/compare/prometheus-7.0.45...prometheus-7.0.46) (2023-01-31) + +### Chore + +- update helm general non-major + - update container image tccr.io/truecharts/thanos to 0.30.1 + - update container image tccr.io/truecharts/prometheus to 2.41.0 + + + + +## [prometheus-7.0.45](https://github.com/truecharts/charts/compare/prometheus-7.0.44...prometheus-7.0.45) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/alertmanager to 0.25.0 + - update container image tccr.io/truecharts/thanos to 0.30.1 + - update container image tccr.io/truecharts/prometheus to 2.41.0 + + + + +## [prometheus-7.0.44](https://github.com/truecharts/charts/compare/prometheus-7.0.43...prometheus-7.0.44) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/alertmanager to 0.25.0 + + + + +## [prometheus-7.0.43](https://github.com/truecharts/charts/compare/prometheus-7.0.42...prometheus-7.0.43) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + ### Feat + +- move Grafana, Prometheus and Traefik to Enterprise Train ([#6372](https://github.com/truecharts/charts/issues/6372)) + + \ No newline at end of file diff --git a/enterprise/prometheus/7.0.47/Chart.yaml b/enterprise/prometheus/7.0.47/Chart.yaml new file mode 100644 index 00000000000..11af5cc95b7 --- /dev/null +++ b/enterprise/prometheus/7.0.47/Chart.yaml @@ -0,0 +1,38 @@ +apiVersion: v2 +appVersion: "2.41.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: exporters.enabled,exporters.node-exporter.enabled + name: node-exporter + repository: https://charts.bitnami.com/bitnami + version: 3.2.8 + - condition: exporters.enabled,exporters.kube-state-metrics.enabled + name: kube-state-metrics + repository: https://charts.bitnami.com/bitnami + version: 3.2.8 +deprecated: false +description: kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator. +icon: https://truecharts.org/img/hotlink-ok/chart-icons/prometheus.png +home: https://truecharts.org/charts/enterprise/prometheus +keywords: + - metrics +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: prometheus +sources: + - https://github.com/truecharts/charts/tree/master/charts/enterprise/prometheus + - https://hub.docker.com/bitnami/prometheus + - https://github.com/prometheus-community/helm-charts + - https://github.com/prometheus-operator/kube-prometheus +type: application +version: 7.0.47 +annotations: + truecharts.org/catagories: | + - metrics + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/enterprise/prometheus/7.0.46/README.md b/enterprise/prometheus/7.0.47/README.md similarity index 100% rename from enterprise/prometheus/7.0.46/README.md rename to enterprise/prometheus/7.0.47/README.md diff --git a/enterprise/prometheus/7.0.47/app-changelog.md b/enterprise/prometheus/7.0.47/app-changelog.md new file mode 100644 index 00000000000..90aa23c9e6c --- /dev/null +++ b/enterprise/prometheus/7.0.47/app-changelog.md @@ -0,0 +1,9 @@ + + +## [prometheus-7.0.47](https://github.com/truecharts/charts/compare/prometheus-7.0.46...prometheus-7.0.47) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/enterprise/prometheus/7.0.46/app-readme.md b/enterprise/prometheus/7.0.47/app-readme.md similarity index 100% rename from enterprise/prometheus/7.0.46/app-readme.md rename to enterprise/prometheus/7.0.47/app-readme.md diff --git a/incubator/amtd/2.0.7/charts/common-11.1.2.tgz b/enterprise/prometheus/7.0.47/charts/common-11.1.2.tgz similarity index 100% rename from incubator/amtd/2.0.7/charts/common-11.1.2.tgz rename to enterprise/prometheus/7.0.47/charts/common-11.1.2.tgz diff --git a/enterprise/prometheus/7.0.46/charts/kube-state-metrics-3.2.8.tgz b/enterprise/prometheus/7.0.47/charts/kube-state-metrics-3.2.8.tgz similarity index 100% rename from enterprise/prometheus/7.0.46/charts/kube-state-metrics-3.2.8.tgz rename to enterprise/prometheus/7.0.47/charts/kube-state-metrics-3.2.8.tgz diff --git a/enterprise/prometheus/7.0.46/charts/node-exporter-3.2.8.tgz b/enterprise/prometheus/7.0.47/charts/node-exporter-3.2.8.tgz similarity index 100% rename from enterprise/prometheus/7.0.46/charts/node-exporter-3.2.8.tgz rename to enterprise/prometheus/7.0.47/charts/node-exporter-3.2.8.tgz diff --git a/enterprise/prometheus/7.0.46/ix_values.yaml b/enterprise/prometheus/7.0.47/ix_values.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/ix_values.yaml rename to enterprise/prometheus/7.0.47/ix_values.yaml diff --git a/enterprise/prometheus/7.0.46/questions.yaml b/enterprise/prometheus/7.0.47/questions.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/questions.yaml rename to enterprise/prometheus/7.0.47/questions.yaml diff --git a/enterprise/prometheus/7.0.46/templates/_helpers.tpl b/enterprise/prometheus/7.0.47/templates/_helpers.tpl similarity index 100% rename from enterprise/prometheus/7.0.46/templates/_helpers.tpl rename to enterprise/prometheus/7.0.47/templates/_helpers.tpl diff --git a/enterprise/prometheus/7.0.46/templates/alertmanager/_alertmanager.tpl b/enterprise/prometheus/7.0.47/templates/alertmanager/_alertmanager.tpl similarity index 100% rename from enterprise/prometheus/7.0.46/templates/alertmanager/_alertmanager.tpl rename to enterprise/prometheus/7.0.47/templates/alertmanager/_alertmanager.tpl diff --git a/enterprise/prometheus/7.0.46/templates/alertmanager/secrets.yaml b/enterprise/prometheus/7.0.47/templates/alertmanager/secrets.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/alertmanager/secrets.yaml rename to enterprise/prometheus/7.0.47/templates/alertmanager/secrets.yaml diff --git a/enterprise/prometheus/7.0.46/templates/alertmanager/serviceaccount.yaml b/enterprise/prometheus/7.0.47/templates/alertmanager/serviceaccount.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/alertmanager/serviceaccount.yaml rename to enterprise/prometheus/7.0.47/templates/alertmanager/serviceaccount.yaml diff --git a/enterprise/prometheus/7.0.46/templates/alertmanager/servicemonitor.yaml b/enterprise/prometheus/7.0.47/templates/alertmanager/servicemonitor.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/alertmanager/servicemonitor.yaml rename to enterprise/prometheus/7.0.47/templates/alertmanager/servicemonitor.yaml diff --git a/enterprise/prometheus/7.0.46/templates/common.yaml b/enterprise/prometheus/7.0.47/templates/common.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/common.yaml rename to enterprise/prometheus/7.0.47/templates/common.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/core-dns/service.yaml b/enterprise/prometheus/7.0.47/templates/exporters/core-dns/service.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/core-dns/service.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/core-dns/service.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/core-dns/servicemonitor.yaml b/enterprise/prometheus/7.0.47/templates/exporters/core-dns/servicemonitor.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/core-dns/servicemonitor.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/core-dns/servicemonitor.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/kube-apiserver/servicemonitor.yaml b/enterprise/prometheus/7.0.47/templates/exporters/kube-apiserver/servicemonitor.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/kube-apiserver/servicemonitor.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/kube-apiserver/servicemonitor.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/kube-controller-manager/endpoints.yaml b/enterprise/prometheus/7.0.47/templates/exporters/kube-controller-manager/endpoints.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/kube-controller-manager/endpoints.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/kube-controller-manager/endpoints.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/kube-controller-manager/service.yaml b/enterprise/prometheus/7.0.47/templates/exporters/kube-controller-manager/service.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/kube-controller-manager/service.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/kube-controller-manager/service.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/kube-controller-manager/servicemonitor.yaml b/enterprise/prometheus/7.0.47/templates/exporters/kube-controller-manager/servicemonitor.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/kube-controller-manager/servicemonitor.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/kube-controller-manager/servicemonitor.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/kube-scheduler/endpoints.yaml b/enterprise/prometheus/7.0.47/templates/exporters/kube-scheduler/endpoints.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/kube-scheduler/endpoints.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/kube-scheduler/endpoints.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/kube-scheduler/service.yaml b/enterprise/prometheus/7.0.47/templates/exporters/kube-scheduler/service.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/kube-scheduler/service.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/kube-scheduler/service.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/kube-scheduler/servicemonitor.yaml b/enterprise/prometheus/7.0.47/templates/exporters/kube-scheduler/servicemonitor.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/kube-scheduler/servicemonitor.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/kube-scheduler/servicemonitor.yaml diff --git a/enterprise/prometheus/7.0.46/templates/exporters/kubelet/servicemonitor.yaml b/enterprise/prometheus/7.0.47/templates/exporters/kubelet/servicemonitor.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/exporters/kubelet/servicemonitor.yaml rename to enterprise/prometheus/7.0.47/templates/exporters/kubelet/servicemonitor.yaml diff --git a/enterprise/prometheus/7.0.46/templates/prometheus/_additionalPrometheusRules.tpl b/enterprise/prometheus/7.0.47/templates/prometheus/_additionalPrometheusRules.tpl similarity index 100% rename from enterprise/prometheus/7.0.46/templates/prometheus/_additionalPrometheusRules.tpl rename to enterprise/prometheus/7.0.47/templates/prometheus/_additionalPrometheusRules.tpl diff --git a/enterprise/prometheus/7.0.46/templates/prometheus/_additionalScrapeJobs.tpl b/enterprise/prometheus/7.0.47/templates/prometheus/_additionalScrapeJobs.tpl similarity index 100% rename from enterprise/prometheus/7.0.46/templates/prometheus/_additionalScrapeJobs.tpl rename to enterprise/prometheus/7.0.47/templates/prometheus/_additionalScrapeJobs.tpl diff --git a/enterprise/prometheus/7.0.46/templates/prometheus/_prometheus.tpl b/enterprise/prometheus/7.0.47/templates/prometheus/_prometheus.tpl similarity index 100% rename from enterprise/prometheus/7.0.46/templates/prometheus/_prometheus.tpl rename to enterprise/prometheus/7.0.47/templates/prometheus/_prometheus.tpl diff --git a/enterprise/prometheus/7.0.46/templates/prometheus/_servicemonitor.tpl b/enterprise/prometheus/7.0.47/templates/prometheus/_servicemonitor.tpl similarity index 100% rename from enterprise/prometheus/7.0.46/templates/prometheus/_servicemonitor.tpl rename to enterprise/prometheus/7.0.47/templates/prometheus/_servicemonitor.tpl diff --git a/enterprise/prometheus/7.0.46/templates/prometheus/clusterrole.yaml b/enterprise/prometheus/7.0.47/templates/prometheus/clusterrole.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/prometheus/clusterrole.yaml rename to enterprise/prometheus/7.0.47/templates/prometheus/clusterrole.yaml diff --git a/enterprise/prometheus/7.0.46/templates/prometheus/clusterrolebinding.yaml b/enterprise/prometheus/7.0.47/templates/prometheus/clusterrolebinding.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/prometheus/clusterrolebinding.yaml rename to enterprise/prometheus/7.0.47/templates/prometheus/clusterrolebinding.yaml diff --git a/enterprise/prometheus/7.0.46/templates/prometheus/serviceaccount.yaml b/enterprise/prometheus/7.0.47/templates/prometheus/serviceaccount.yaml similarity index 100% rename from enterprise/prometheus/7.0.46/templates/prometheus/serviceaccount.yaml rename to enterprise/prometheus/7.0.47/templates/prometheus/serviceaccount.yaml diff --git a/incubator/amtd/2.0.7/values.yaml b/enterprise/prometheus/7.0.47/values.yaml similarity index 100% rename from incubator/amtd/2.0.7/values.yaml rename to enterprise/prometheus/7.0.47/values.yaml diff --git a/incubator/amtd/2.0.7/CHANGELOG.md b/incubator/amtd/2.0.7/CHANGELOG.md deleted file mode 100644 index 07447f1bc03..00000000000 --- a/incubator/amtd/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [amtd-2.0.7](https://github.com/truecharts/charts/compare/amtd-2.0.6...amtd-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [amtd-2.0.6](https://github.com/truecharts/charts/compare/amtd-2.0.5...amtd-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [amtd-2.0.5](https://github.com/truecharts/charts/compare/amtd-2.0.4...amtd-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [amtd-2.0.4](https://github.com/truecharts/charts/compare/amtd-2.0.3...amtd-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [amtd-2.0.3](https://github.com/truecharts/charts/compare/amtd-2.0.2...amtd-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - - - -## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) - - diff --git a/incubator/amtd/2.0.7/Chart.yaml b/incubator/amtd/2.0.7/Chart.yaml deleted file mode 100644 index 9677b2b1450..00000000000 --- a/incubator/amtd/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Downloaders - - MediaApp-Video -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Automated Movie Trailer Downloader :: AMTD is a Radarr Companion script to automatically download movie trailers for use in media applications\n" -home: https://truecharts.org/charts/incubator/amtd -icon: https://truecharts.org/img/hotlink-ok/chart-icons/amtd.png -keywords: - - amtd - - Downloaders - - MediaApp-Video -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: amtd -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/amtd - - https://github.com/RandomNinjaAtk/docker-amtd - - https://hub.docker.com/r/randomninjaatk/amtd -type: application -version: 2.0.7 diff --git a/incubator/amtd/2.0.7/app-changelog.md b/incubator/amtd/2.0.7/app-changelog.md deleted file mode 100644 index 84c8e88467c..00000000000 --- a/incubator/amtd/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [amtd-2.0.7](https://github.com/truecharts/charts/compare/amtd-2.0.6...amtd-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/amtd/2.0.7/app-readme.md b/incubator/amtd/2.0.7/app-readme.md deleted file mode 100644 index 66363d778b1..00000000000 --- a/incubator/amtd/2.0.7/app-readme.md +++ /dev/null @@ -1,9 +0,0 @@ -Automated Movie Trailer Downloader :: AMTD is a Radarr Companion script to automatically download movie trailers for use in media applications - - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/amtd](https://truecharts.org/charts/incubator/amtd) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/amtd/2.0.7/questions.yaml b/incubator/amtd/2.0.7/questions.yaml deleted file mode 100644 index 6835c30cd71..00000000000 --- a/incubator/amtd/2.0.7/questions.yaml +++ /dev/null @@ -1,1571 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: AUTOSTART - label: "AUTOSTART" - description: "true = Enabled Runs script automatically on startup" - schema: - type: string - default: "" - - variable: SCRIPTINTERVAL - label: "SCRIPTINTERVAL" - description: "#s or #m or #h or #d s = seconds, m = minutes, h = hours, d = days Amount of time between each script run, when AUTOSTART is enabled" - schema: - type: string - default: "" - - variable: RadarrUrl - label: "RadarrUrl" - description: "Set domain or IP to your Radarr instance including port. If using reverse proxy, do not use a trailing slash. Ensure you specify https..." - schema: - type: string - default: "" - - variable: RadarrAPIkey - label: "RadarrAPIkey" - description: "Radarr API Key" - schema: - type: string - default: "" - - variable: extrastype - label: "extrastype" - description: "all or trailers all downloads all available videos (trailers, clips, featurettes, etc...) trailers only downloads trailers" - schema: - type: string - default: "" - - variable: LANGUAGES - label: "LANGUAGES" - description: "Set the primary desired language, if not found, fallback to next langauge in the list... (this is a , separated list of ISO 639-1 language codes)" - schema: - type: string - default: "" - - variable: videoformat - label: "videoformat" - description: "For guidence, please see youtube-dl documentation" - schema: - type: string - default: "" - - variable: subtitlelanguage - label: "subtitlelanguage" - description: "Desired Language Code For guidence, please see youtube-dl documentation" - schema: - type: string - default: "" - - variable: SINGLETRAILER - label: "SINGLETRAILER" - description: "true = enabled Only downloads the first available trailer, does not apply to other extras type" - schema: - type: string - default: "" - - variable: PREFER_EXISTING - label: "PREFER_EXISTING" - description: "true = enabled Checks for existing trailer file, and skips it if found" - schema: - type: string - default: "" - - variable: USEFOLDERS - label: "USEFOLDERS" - description: "true = enabled Creates subfolders within the movie folder for extras" - schema: - type: string - default: "" - - variable: EndClient - label: "EndClient" - description: "plex or emby or jellyfin Select the appropriate client for maximum compatibility" - schema: - type: string - default: "" - - variable: FilePermissions - label: "FilePermissions" - description: "Based on chmod linux permissions" - schema: - type: string - default: "" - - variable: FolderPermissions - label: "FolderPermissions" - description: "Based on chmod linux permissions" - schema: - type: string - default: "" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Container Path config" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/amtd/2.0.8/CHANGELOG.md b/incubator/amtd/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..58ac2e1d198 --- /dev/null +++ b/incubator/amtd/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [amtd-2.0.8](https://github.com/truecharts/charts/compare/amtd-2.0.7...amtd-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [amtd-2.0.7](https://github.com/truecharts/charts/compare/amtd-2.0.6...amtd-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [amtd-2.0.6](https://github.com/truecharts/charts/compare/amtd-2.0.5...amtd-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [amtd-2.0.5](https://github.com/truecharts/charts/compare/amtd-2.0.4...amtd-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [amtd-2.0.4](https://github.com/truecharts/charts/compare/amtd-2.0.3...amtd-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [amtd-2.0.3](https://github.com/truecharts/charts/compare/amtd-2.0.2...amtd-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) + + + + +## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) + + + + +## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) + + + + +## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) + + + + +## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) + + + + +## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) + + + + +## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) + + + + +## [amtd-2.0.2](https://github.com/truecharts/charts/compare/amtd-2.0.1...amtd-2.0.2) (2022-11-30) + + + diff --git a/incubator/amtd/2.0.8/Chart.yaml b/incubator/amtd/2.0.8/Chart.yaml new file mode 100644 index 00000000000..5b790978da1 --- /dev/null +++ b/incubator/amtd/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Downloaders + - MediaApp-Video +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Automated Movie Trailer Downloader :: AMTD is a Radarr Companion script to automatically download movie trailers for use in media applications\n" +home: https://truecharts.org/charts/incubator/amtd +icon: https://truecharts.org/img/hotlink-ok/chart-icons/amtd.png +keywords: + - amtd + - Downloaders + - MediaApp-Video +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: amtd +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/amtd + - https://hub.docker.com/randomninjaatk/amtd + - https://github.com/RandomNinjaAtk/docker-amtd +type: application +version: 2.0.8 diff --git a/incubator/amtd/2.0.7/README.md b/incubator/amtd/2.0.8/README.md similarity index 100% rename from incubator/amtd/2.0.7/README.md rename to incubator/amtd/2.0.8/README.md diff --git a/incubator/amtd/2.0.8/app-changelog.md b/incubator/amtd/2.0.8/app-changelog.md new file mode 100644 index 00000000000..d48419ce5e3 --- /dev/null +++ b/incubator/amtd/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [amtd-2.0.8](https://github.com/truecharts/charts/compare/amtd-2.0.7...amtd-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/amtd/2.0.8/app-readme.md b/incubator/amtd/2.0.8/app-readme.md new file mode 100644 index 00000000000..4713af4c475 --- /dev/null +++ b/incubator/amtd/2.0.8/app-readme.md @@ -0,0 +1,9 @@ +Automated Movie Trailer Downloader :: AMTD is a Radarr Companion script to automatically download movie trailers for use in media applications + + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/amtd](https://truecharts.org/charts/incubator/amtd) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/amvd/2.0.7/charts/common-11.1.2.tgz b/incubator/amtd/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/amvd/2.0.7/charts/common-11.1.2.tgz rename to incubator/amtd/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/amtd/2.0.7/ix_values.yaml b/incubator/amtd/2.0.8/ix_values.yaml similarity index 100% rename from incubator/amtd/2.0.7/ix_values.yaml rename to incubator/amtd/2.0.8/ix_values.yaml diff --git a/incubator/amtd/2.0.8/questions.yaml b/incubator/amtd/2.0.8/questions.yaml new file mode 100644 index 00000000000..f7445cc74c4 --- /dev/null +++ b/incubator/amtd/2.0.8/questions.yaml @@ -0,0 +1,1571 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: AUTOSTART + label: "AUTOSTART" + description: "true = Enabled Runs script automatically on startup" + schema: + type: string + default: "" + - variable: SCRIPTINTERVAL + label: "SCRIPTINTERVAL" + description: "#s or #m or #h or #d s = seconds, m = minutes, h = hours, d = days Amount of time between each script run, when AUTOSTART is enabled" + schema: + type: string + default: "" + - variable: RadarrUrl + label: "RadarrUrl" + description: "Set domain or IP to your Radarr instance including port. If using reverse proxy, do not use a trailing slash. Ensure you specify https..." + schema: + type: string + default: "" + - variable: RadarrAPIkey + label: "RadarrAPIkey" + description: "Radarr API Key" + schema: + type: string + default: "" + - variable: extrastype + label: "extrastype" + description: "all or trailers all downloads all available videos (trailers, clips, featurettes, etc...) trailers only downloads trailers" + schema: + type: string + default: "" + - variable: LANGUAGES + label: "LANGUAGES" + description: "Set the primary desired language, if not found, fallback to next langauge in the list... (this is a , separated list of ISO 639-1 language codes)" + schema: + type: string + default: "" + - variable: videoformat + label: "videoformat" + description: "For guidence, please see youtube-dl documentation" + schema: + type: string + default: "" + - variable: subtitlelanguage + label: "subtitlelanguage" + description: "Desired Language Code For guidence, please see youtube-dl documentation" + schema: + type: string + default: "" + - variable: SINGLETRAILER + label: "SINGLETRAILER" + description: "true = enabled Only downloads the first available trailer, does not apply to other extras type" + schema: + type: string + default: "" + - variable: PREFER_EXISTING + label: "PREFER_EXISTING" + description: "true = enabled Checks for existing trailer file, and skips it if found" + schema: + type: string + default: "" + - variable: USEFOLDERS + label: "USEFOLDERS" + description: "true = enabled Creates subfolders within the movie folder for extras" + schema: + type: string + default: "" + - variable: EndClient + label: "EndClient" + description: "plex or emby or jellyfin Select the appropriate client for maximum compatibility" + schema: + type: string + default: "" + - variable: FilePermissions + label: "FilePermissions" + description: "Based on chmod linux permissions" + schema: + type: string + default: "" + - variable: FolderPermissions + label: "FolderPermissions" + description: "Based on chmod linux permissions" + schema: + type: string + default: "" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "Container Path config" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/amtd/2.0.7/templates/common.yaml b/incubator/amtd/2.0.8/templates/common.yaml similarity index 100% rename from incubator/amtd/2.0.7/templates/common.yaml rename to incubator/amtd/2.0.8/templates/common.yaml diff --git a/incubator/amvd/2.0.7/values.yaml b/incubator/amtd/2.0.8/values.yaml similarity index 100% rename from incubator/amvd/2.0.7/values.yaml rename to incubator/amtd/2.0.8/values.yaml diff --git a/incubator/amvd/2.0.7/CHANGELOG.md b/incubator/amvd/2.0.7/CHANGELOG.md deleted file mode 100644 index 7dfb4c99389..00000000000 --- a/incubator/amvd/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [amvd-2.0.7](https://github.com/truecharts/charts/compare/amvd-2.0.6...amvd-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [amvd-2.0.6](https://github.com/truecharts/charts/compare/amvd-2.0.5...amvd-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [amvd-2.0.5](https://github.com/truecharts/charts/compare/amvd-2.0.4...amvd-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [amvd-2.0.4](https://github.com/truecharts/charts/compare/amvd-2.0.3...amvd-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [amvd-2.0.3](https://github.com/truecharts/charts/compare/amvd-2.0.2...amvd-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - - - -## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) - - diff --git a/incubator/amvd/2.0.7/Chart.yaml b/incubator/amvd/2.0.7/Chart.yaml deleted file mode 100644 index 6edbc473fd9..00000000000 --- a/incubator/amvd/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Downloaders - - MediaApp-Video -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Automated Music Video Downloader :: AMVD is a Lidarr Companion script to automatically download and tag Music Videos for use in various media applications" -home: https://truecharts.org/charts/incubator/amvd -icon: https://truecharts.org/img/hotlink-ok/chart-icons/amvd.png -keywords: - - amvd - - Downloaders - - MediaApp-Video -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: amvd -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/amvd - - https://github.com/RandomNinjaAtk/docker-amvd - - https://hub.docker.com/r/randomninjaatk/amvd -type: application -version: 2.0.7 diff --git a/incubator/amvd/2.0.7/app-changelog.md b/incubator/amvd/2.0.7/app-changelog.md deleted file mode 100644 index e2f588550fe..00000000000 --- a/incubator/amvd/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [amvd-2.0.7](https://github.com/truecharts/charts/compare/amvd-2.0.6...amvd-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/amvd/2.0.7/app-readme.md b/incubator/amvd/2.0.7/app-readme.md deleted file mode 100644 index d35499c18c9..00000000000 --- a/incubator/amvd/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Automated Music Video Downloader :: AMVD is a Lidarr Companion script to automatically download and tag Music Videos for use in various media applications - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/amvd](https://truecharts.org/charts/incubator/amvd) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/amvd/2.0.7/questions.yaml b/incubator/amvd/2.0.7/questions.yaml deleted file mode 100644 index 24863b42942..00000000000 --- a/incubator/amvd/2.0.7/questions.yaml +++ /dev/null @@ -1,1629 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: AUTOSTART - label: "AUTOSTART" - description: "true = Enabled Runs script automatically on startup" - schema: - type: string - default: "" - - variable: SCRIPTINTERVAL - label: "SCRIPTINTERVAL" - description: "#s or #m or #h or #d s = seconds, m = minutes, h = hours, d = days Amount of time between each script run, when AUTOSTART is enabled" - schema: - type: string - default: "" - - variable: MBRAINZMIRROR - label: "MBRAINZMIRROR" - description: "OPTIONAL Only change if using a different mirror" - schema: - type: string - default: "" - - variable: MBRATELIMIT - label: "MBRATELIMIT" - description: "OPTIONAL musicbrainz rate limit, musicbrainz allows only 1 connection per second, max setting is 10" - schema: - type: string - default: "" - - variable: SOURCE_CONNECTION - label: "SOURCE_CONNECTION" - description: "lidarr or ama ama requires the AMA config folder to be mounted as a volume ama" - schema: - type: string - default: "" - - variable: LidarrUrl - label: "LidarrUrl" - description: "Set domain or IP to your Lidarr instance including port. If using reverse proxy, do not use a trailing slash. Ensure you specify https." - schema: - type: string - default: "" - - variable: LidarrAPIkey - label: "LidarrAPIkey" - description: "Lidarr API key" - schema: - type: string - default: "" - - variable: CountryCode - label: "CountryCode" - description: "Set the country code for preferred video matching, uses Musicbrainz Country Codes, lowercase only." - schema: - type: string - default: "" - - variable: subtitlelanguage - label: "subtitlelanguage" - description: "Desired Language Code For guidence, please see youtube-dl documentation" - schema: - type: string - default: "" - - variable: WriteNFOs - label: "WriteNFOs" - description: "true = enabled Create NFO and Local Thumbnail for use in applications such as Kodi" - schema: - type: string - default: "" - - variable: USEFOLDERS - label: "USEFOLDERS" - description: "true = enabled Creates subfolders using the Lidarr Artist folder name" - schema: - type: string - default: "" - - variable: USEVIDEOFOLDERS - label: "USEVIDEOFOLDERS" - description: "true = enabled Creates subfolders using Video File Name only, requires USEFOLDERS to be enabled" - schema: - type: string - default: "" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Container Path config" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: hostpathfordownloads-amvd - label: "hostpathfordownloads-amvd Storage" - description: "Container Path downloads-amvd" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/amvd/2.0.8/CHANGELOG.md b/incubator/amvd/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..add125f196e --- /dev/null +++ b/incubator/amvd/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [amvd-2.0.8](https://github.com/truecharts/charts/compare/amvd-2.0.7...amvd-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [amvd-2.0.7](https://github.com/truecharts/charts/compare/amvd-2.0.6...amvd-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [amvd-2.0.6](https://github.com/truecharts/charts/compare/amvd-2.0.5...amvd-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [amvd-2.0.5](https://github.com/truecharts/charts/compare/amvd-2.0.4...amvd-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [amvd-2.0.4](https://github.com/truecharts/charts/compare/amvd-2.0.3...amvd-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [amvd-2.0.3](https://github.com/truecharts/charts/compare/amvd-2.0.2...amvd-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) + + + + +## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) + + + + +## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) + + + + +## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) + + + + +## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) + + + + +## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) + + + + +## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) + + + + +## [amvd-2.0.2](https://github.com/truecharts/charts/compare/amvd-2.0.1...amvd-2.0.2) (2022-11-30) + + + diff --git a/incubator/amvd/2.0.8/Chart.yaml b/incubator/amvd/2.0.8/Chart.yaml new file mode 100644 index 00000000000..ba45642e40a --- /dev/null +++ b/incubator/amvd/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Downloaders + - MediaApp-Video +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Automated Music Video Downloader :: AMVD is a Lidarr Companion script to automatically download and tag Music Videos for use in various media applications" +home: https://truecharts.org/charts/incubator/amvd +icon: https://truecharts.org/img/hotlink-ok/chart-icons/amvd.png +keywords: + - amvd + - Downloaders + - MediaApp-Video +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: amvd +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/amvd + - https://hub.docker.com/randomninjaatk/amvd + - https://github.com/RandomNinjaAtk/docker-amvd +type: application +version: 2.0.8 diff --git a/incubator/amvd/2.0.7/README.md b/incubator/amvd/2.0.8/README.md similarity index 100% rename from incubator/amvd/2.0.7/README.md rename to incubator/amvd/2.0.8/README.md diff --git a/incubator/amvd/2.0.8/app-changelog.md b/incubator/amvd/2.0.8/app-changelog.md new file mode 100644 index 00000000000..da6ce8a313d --- /dev/null +++ b/incubator/amvd/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [amvd-2.0.8](https://github.com/truecharts/charts/compare/amvd-2.0.7...amvd-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/amvd/2.0.8/app-readme.md b/incubator/amvd/2.0.8/app-readme.md new file mode 100644 index 00000000000..6313cc8fd95 --- /dev/null +++ b/incubator/amvd/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Automated Music Video Downloader :: AMVD is a Lidarr Companion script to automatically download and tag Music Videos for use in various media applications + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/amvd](https://truecharts.org/charts/incubator/amvd) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/apache-webdav/2.0.7/charts/common-11.1.2.tgz b/incubator/amvd/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/apache-webdav/2.0.7/charts/common-11.1.2.tgz rename to incubator/amvd/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/amvd/2.0.7/ix_values.yaml b/incubator/amvd/2.0.8/ix_values.yaml similarity index 100% rename from incubator/amvd/2.0.7/ix_values.yaml rename to incubator/amvd/2.0.8/ix_values.yaml diff --git a/incubator/amvd/2.0.8/questions.yaml b/incubator/amvd/2.0.8/questions.yaml new file mode 100644 index 00000000000..2118293f870 --- /dev/null +++ b/incubator/amvd/2.0.8/questions.yaml @@ -0,0 +1,1629 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: AUTOSTART + label: "AUTOSTART" + description: "true = Enabled Runs script automatically on startup" + schema: + type: string + default: "" + - variable: SCRIPTINTERVAL + label: "SCRIPTINTERVAL" + description: "#s or #m or #h or #d s = seconds, m = minutes, h = hours, d = days Amount of time between each script run, when AUTOSTART is enabled" + schema: + type: string + default: "" + - variable: MBRAINZMIRROR + label: "MBRAINZMIRROR" + description: "OPTIONAL Only change if using a different mirror" + schema: + type: string + default: "" + - variable: MBRATELIMIT + label: "MBRATELIMIT" + description: "OPTIONAL musicbrainz rate limit, musicbrainz allows only 1 connection per second, max setting is 10" + schema: + type: string + default: "" + - variable: SOURCE_CONNECTION + label: "SOURCE_CONNECTION" + description: "lidarr or ama ama requires the AMA config folder to be mounted as a volume ama" + schema: + type: string + default: "" + - variable: LidarrUrl + label: "LidarrUrl" + description: "Set domain or IP to your Lidarr instance including port. If using reverse proxy, do not use a trailing slash. Ensure you specify https." + schema: + type: string + default: "" + - variable: LidarrAPIkey + label: "LidarrAPIkey" + description: "Lidarr API key" + schema: + type: string + default: "" + - variable: CountryCode + label: "CountryCode" + description: "Set the country code for preferred video matching, uses Musicbrainz Country Codes, lowercase only." + schema: + type: string + default: "" + - variable: subtitlelanguage + label: "subtitlelanguage" + description: "Desired Language Code For guidence, please see youtube-dl documentation" + schema: + type: string + default: "" + - variable: WriteNFOs + label: "WriteNFOs" + description: "true = enabled Create NFO and Local Thumbnail for use in applications such as Kodi" + schema: + type: string + default: "" + - variable: USEFOLDERS + label: "USEFOLDERS" + description: "true = enabled Creates subfolders using the Lidarr Artist folder name" + schema: + type: string + default: "" + - variable: USEVIDEOFOLDERS + label: "USEVIDEOFOLDERS" + description: "true = enabled Creates subfolders using Video File Name only, requires USEFOLDERS to be enabled" + schema: + type: string + default: "" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "Container Path config" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostpathfordownloads-amvd + label: "hostpathfordownloads-amvd Storage" + description: "Container Path downloads-amvd" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/amvd/2.0.7/templates/common.yaml b/incubator/amvd/2.0.8/templates/common.yaml similarity index 100% rename from incubator/amvd/2.0.7/templates/common.yaml rename to incubator/amvd/2.0.8/templates/common.yaml diff --git a/incubator/apache-webdav/2.0.7/values.yaml b/incubator/amvd/2.0.8/values.yaml similarity index 100% rename from incubator/apache-webdav/2.0.7/values.yaml rename to incubator/amvd/2.0.8/values.yaml diff --git a/incubator/apache-webdav/2.0.7/CHANGELOG.md b/incubator/apache-webdav/2.0.7/CHANGELOG.md deleted file mode 100644 index 0e76148d9ec..00000000000 --- a/incubator/apache-webdav/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [apache-webdav-2.0.7](https://github.com/truecharts/charts/compare/apache-webdav-2.0.6...apache-webdav-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [apache-webdav-2.0.6](https://github.com/truecharts/charts/compare/apache-webdav-2.0.5...apache-webdav-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [apache-webdav-2.0.5](https://github.com/truecharts/charts/compare/apache-webdav-2.0.4...apache-webdav-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [apache-webdav-2.0.4](https://github.com/truecharts/charts/compare/apache-webdav-2.0.3...apache-webdav-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [apache-webdav-2.0.3](https://github.com/truecharts/charts/compare/apache-webdav-2.0.2...apache-webdav-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - - - -## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) - - diff --git a/incubator/apache-webdav/2.0.7/Chart.yaml b/incubator/apache-webdav/2.0.7/Chart.yaml deleted file mode 100644 index 9d682482b26..00000000000 --- a/incubator/apache-webdav/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Very simple WebDAV server based on Apache. You need a WebDAV client to transfer files. It does not include a WebUI to upload files through your browser." -home: https://truecharts.org/charts/incubator/apache-webdav -icon: https://truecharts.org/img/hotlink-ok/chart-icons/apache-webdav.png -keywords: - - apache-webdav - - Cloud -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: apache-webdav -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/apache-webdav - - https://httpd.apache.org/docs/2.4/mod/mod_dav.html - - https://github.com/mgutt/docker-apachewebdav -type: application -version: 2.0.7 diff --git a/incubator/apache-webdav/2.0.7/app-changelog.md b/incubator/apache-webdav/2.0.7/app-changelog.md deleted file mode 100644 index 3090bd42dd0..00000000000 --- a/incubator/apache-webdav/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [apache-webdav-2.0.7](https://github.com/truecharts/charts/compare/apache-webdav-2.0.6...apache-webdav-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/apache-webdav/2.0.7/app-readme.md b/incubator/apache-webdav/2.0.7/app-readme.md deleted file mode 100644 index e57bb68bbb3..00000000000 --- a/incubator/apache-webdav/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Very simple WebDAV server based on Apache. You need a WebDAV client to transfer files. It does not include a WebUI to upload files through your browser. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/apache-webdav](https://truecharts.org/charts/incubator/apache-webdav) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/apache-webdav/2.0.7/questions.yaml b/incubator/apache-webdav/2.0.7/questions.yaml deleted file mode 100644 index 2e49fbbdde5..00000000000 --- a/incubator/apache-webdav/2.0.7/questions.yaml +++ /dev/null @@ -1,1960 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: SERVER_NAMES - label: "SERVER_NAMES" - description: "Comma-separated list of domains (eg, example.com,www.example.com). The first is set as the ServerName, and the rest (if any) are set as ServerAlias. The default is localhost." - schema: - type: string - default: "localhost" - - variable: LOCATION - label: "LOCATION" - description: "The URL path for WebDAV (eg, if set to webdav then clients should connect to example.comwebdav). The default is ." - schema: - type: string - default: "/" - - variable: AUTH_TYPE - label: "AUTH_TYPE" - description: "Apache authentication type to use. This can be Basic (best choice for HTTPS) or Digest (best choice for HTTP). The default is Basic." - schema: - type: string - default: "Basic" - - variable: REALM - label: "REALM" - description: "The string will appear in the password dialog provided by browsers." - schema: - type: string - default: "WebDAV-Login" - - variable: USERNAME - label: "USERNAME" - description: "Authenticate with this username (and the password below). Will be ignored if user.passwd is present." - schema: - type: string - default: "" - - variable: PASSWORD - label: "PASSWORD" - description: "Authenticate with this password (and the username above). Will be ignored if user.passwd is present." - schema: - type: string - default: "" - - variable: ANONYMOUS_METHODS - label: "ANONYMOUS_METHODS" - description: "Comma-separated list of HTTP request methods (eg, GET,POST,OPTIONS,PROPFIND) which can be used without login. The default is to disallow any anonymous access." - schema: - type: string - default: "" - - variable: SSL_CERT - label: "SSL_CERT" - description: "Set to selfsigned to generate a self-signed certificate and enable Apaches SSL module. If you specify SERVERNAMES, the first domain is set as the Common Name." - schema: - type: string - default: "" - - variable: PUMASK - label: "PUMASK" - description: "Container Variable PUMASK" - schema: - type: string - default: "0000" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8384 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path varlibdavdata" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: config - label: "config Storage" - description: "Container Path varlibdav" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/apache-webdav/2.0.8/CHANGELOG.md b/incubator/apache-webdav/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..b7a7dc03778 --- /dev/null +++ b/incubator/apache-webdav/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [apache-webdav-2.0.8](https://github.com/truecharts/charts/compare/apache-webdav-2.0.7...apache-webdav-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [apache-webdav-2.0.7](https://github.com/truecharts/charts/compare/apache-webdav-2.0.6...apache-webdav-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [apache-webdav-2.0.6](https://github.com/truecharts/charts/compare/apache-webdav-2.0.5...apache-webdav-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [apache-webdav-2.0.5](https://github.com/truecharts/charts/compare/apache-webdav-2.0.4...apache-webdav-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [apache-webdav-2.0.4](https://github.com/truecharts/charts/compare/apache-webdav-2.0.3...apache-webdav-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [apache-webdav-2.0.3](https://github.com/truecharts/charts/compare/apache-webdav-2.0.2...apache-webdav-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) + + + + +## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) + + + + +## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) + + + + +## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) + + + + +## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) + + + + +## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) + + + + +## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) + + + + +## [apache-webdav-2.0.2](https://github.com/truecharts/charts/compare/apache-webdav-2.0.1...apache-webdav-2.0.2) (2022-11-30) + + + diff --git a/incubator/apache-webdav/2.0.8/Chart.yaml b/incubator/apache-webdav/2.0.8/Chart.yaml new file mode 100644 index 00000000000..9397d8ca09c --- /dev/null +++ b/incubator/apache-webdav/2.0.8/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Very simple WebDAV server based on Apache. You need a WebDAV client to transfer files. It does not include a WebUI to upload files through your browser." +home: https://truecharts.org/charts/incubator/apache-webdav +icon: https://truecharts.org/img/hotlink-ok/chart-icons/apache-webdav.png +keywords: + - apache-webdav + - Cloud +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: apache-webdav +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/apache-webdav + - https://hub.docker.com/apachewebdav/apachewebdav + - https://httpd.apache.org/docs/2.4/mod/mod_dav.html + - https://github.com/mgutt/docker-apachewebdav +type: application +version: 2.0.8 diff --git a/incubator/apache-webdav/2.0.7/README.md b/incubator/apache-webdav/2.0.8/README.md similarity index 100% rename from incubator/apache-webdav/2.0.7/README.md rename to incubator/apache-webdav/2.0.8/README.md diff --git a/incubator/apache-webdav/2.0.8/app-changelog.md b/incubator/apache-webdav/2.0.8/app-changelog.md new file mode 100644 index 00000000000..5faf9ff27eb --- /dev/null +++ b/incubator/apache-webdav/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [apache-webdav-2.0.8](https://github.com/truecharts/charts/compare/apache-webdav-2.0.7...apache-webdav-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/apache-webdav/2.0.8/app-readme.md b/incubator/apache-webdav/2.0.8/app-readme.md new file mode 100644 index 00000000000..aacce51ccbc --- /dev/null +++ b/incubator/apache-webdav/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Very simple WebDAV server based on Apache. You need a WebDAV client to transfer files. It does not include a WebUI to upload files through your browser. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/apache-webdav](https://truecharts.org/charts/incubator/apache-webdav) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/awesome-ttrss/3.0.19/charts/common-11.1.2.tgz b/incubator/apache-webdav/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/awesome-ttrss/3.0.19/charts/common-11.1.2.tgz rename to incubator/apache-webdav/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/apache-webdav/2.0.7/ix_values.yaml b/incubator/apache-webdav/2.0.8/ix_values.yaml similarity index 100% rename from incubator/apache-webdav/2.0.7/ix_values.yaml rename to incubator/apache-webdav/2.0.8/ix_values.yaml diff --git a/incubator/apache-webdav/2.0.8/questions.yaml b/incubator/apache-webdav/2.0.8/questions.yaml new file mode 100644 index 00000000000..b49ca50b0d5 --- /dev/null +++ b/incubator/apache-webdav/2.0.8/questions.yaml @@ -0,0 +1,2001 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: SERVER_NAMES + label: "SERVER_NAMES" + description: "Comma-separated list of domains (eg, example.com,www.example.com). The first is set as the ServerName, and the rest (if any) are set as ServerAlias. The default is localhost." + schema: + type: string + default: "localhost" + - variable: LOCATION + label: "LOCATION" + description: "The URL path for WebDAV (eg, if set to webdav then clients should connect to example.comwebdav). The default is ." + schema: + type: string + default: "/" + - variable: AUTH_TYPE + label: "AUTH_TYPE" + description: "Apache authentication type to use. This can be Basic (best choice for HTTPS) or Digest (best choice for HTTP). The default is Basic." + schema: + type: string + default: "Basic" + - variable: REALM + label: "REALM" + description: "The string will appear in the password dialog provided by browsers." + schema: + type: string + default: "WebDAV-Login" + - variable: USERNAME + label: "USERNAME" + description: "Authenticate with this username (and the password below). Will be ignored if user.passwd is present." + schema: + type: string + default: "" + - variable: PASSWORD + label: "PASSWORD" + description: "Authenticate with this password (and the username above). Will be ignored if user.passwd is present." + schema: + type: string + default: "" + - variable: ANONYMOUS_METHODS + label: "ANONYMOUS_METHODS" + description: "Comma-separated list of HTTP request methods (eg, GET,POST,OPTIONS,PROPFIND) which can be used without login. The default is to disallow any anonymous access." + schema: + type: string + default: "" + - variable: SSL_CERT + label: "SSL_CERT" + description: "Set to selfsigned to generate a self-signed certificate and enable Apaches SSL module. If you specify SERVERNAMES, the first domain is set as the Common Name." + schema: + type: string + default: "" + - variable: PUMASK + label: "PUMASK" + description: "Container Variable PUMASK" + schema: + type: string + default: "0000" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8384 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path varlibdavdata" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: config + label: "config Storage" + description: "Container Path varlibdav" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/apache-webdav/2.0.7/templates/common.yaml b/incubator/apache-webdav/2.0.8/templates/common.yaml similarity index 100% rename from incubator/apache-webdav/2.0.7/templates/common.yaml rename to incubator/apache-webdav/2.0.8/templates/common.yaml diff --git a/incubator/awesome-ttrss/3.0.19/values.yaml b/incubator/apache-webdav/2.0.8/values.yaml similarity index 100% rename from incubator/awesome-ttrss/3.0.19/values.yaml rename to incubator/apache-webdav/2.0.8/values.yaml diff --git a/incubator/awesome-ttrss/3.0.19/CHANGELOG.md b/incubator/awesome-ttrss/3.0.19/CHANGELOG.md deleted file mode 100644 index ca670eff476..00000000000 --- a/incubator/awesome-ttrss/3.0.19/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [awesome-ttrss-3.0.19](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.18...awesome-ttrss-3.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [awesome-ttrss-3.0.18](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.17...awesome-ttrss-3.0.18) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [awesome-ttrss-3.0.17](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.16...awesome-ttrss-3.0.17) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [awesome-ttrss-3.0.16](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.15...awesome-ttrss-3.0.16) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [awesome-ttrss-3.0.15](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.14...awesome-ttrss-3.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [awesome-ttrss-3.0.14](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.13...awesome-ttrss-3.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [awesome-ttrss-3.0.13](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.12...awesome-ttrss-3.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [awesome-ttrss-3.0.12](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.11...awesome-ttrss-3.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [awesome-ttrss-3.0.11](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.10...awesome-ttrss-3.0.11) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - - - -## [awesome-ttrss-3.0.10](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.9...awesome-ttrss-3.0.10) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [awesome-ttrss-3.0.9](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.8...awesome-ttrss-3.0.9) (2022-12-05) - -### Chore diff --git a/incubator/awesome-ttrss/3.0.19/Chart.yaml b/incubator/awesome-ttrss/3.0.19/Chart.yaml deleted file mode 100644 index e85bc40f2f9..00000000000 --- a/incubator/awesome-ttrss/3.0.19/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -appVersion: "2022" -description: Awesome TTRSS aims to provide a powerful Chartized all-in-one solution for Tiny Tiny RSS -name: awesome-ttrss -version: 3.0.19 -kubeVersion: ">=1.16.0-0" -keywords: - - tt-rss - - awesome-ttrss -home: https://truecharts.org/charts/incubator/awesome-ttrss -icon: https://truecharts.org/img/hotlink-ok/chart-icons/awesome-ttrss.png -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/awesome-ttrss - - https://github.com/HenryQW/Awesome-TTRSS -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/awesome-ttrss/3.0.19/app-changelog.md b/incubator/awesome-ttrss/3.0.19/app-changelog.md deleted file mode 100644 index 8428847e2c6..00000000000 --- a/incubator/awesome-ttrss/3.0.19/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [awesome-ttrss-3.0.19](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.18...awesome-ttrss-3.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/incubator/awesome-ttrss/3.0.20/CHANGELOG.md b/incubator/awesome-ttrss/3.0.20/CHANGELOG.md new file mode 100644 index 00000000000..af6ceb12122 --- /dev/null +++ b/incubator/awesome-ttrss/3.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [awesome-ttrss-3.0.20](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.19...awesome-ttrss-3.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [awesome-ttrss-3.0.19](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.18...awesome-ttrss-3.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [awesome-ttrss-3.0.18](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.17...awesome-ttrss-3.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [awesome-ttrss-3.0.17](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.16...awesome-ttrss-3.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [awesome-ttrss-3.0.16](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.15...awesome-ttrss-3.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [awesome-ttrss-3.0.15](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.14...awesome-ttrss-3.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [awesome-ttrss-3.0.14](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.13...awesome-ttrss-3.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [awesome-ttrss-3.0.13](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.12...awesome-ttrss-3.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [awesome-ttrss-3.0.12](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.11...awesome-ttrss-3.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [awesome-ttrss-3.0.11](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.10...awesome-ttrss-3.0.11) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [awesome-ttrss-3.0.10](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.9...awesome-ttrss-3.0.10) (2022-12-13) + +### Chore diff --git a/incubator/awesome-ttrss/3.0.20/Chart.yaml b/incubator/awesome-ttrss/3.0.20/Chart.yaml new file mode 100644 index 00000000000..426e843d329 --- /dev/null +++ b/incubator/awesome-ttrss/3.0.20/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "2022" +description: Awesome TTRSS aims to provide a powerful Chartized all-in-one solution for Tiny Tiny RSS +name: awesome-ttrss +version: 3.0.20 +kubeVersion: ">=1.16.0-0" +keywords: + - tt-rss + - awesome-ttrss +home: https://truecharts.org/charts/incubator/awesome-ttrss +icon: https://truecharts.org/img/hotlink-ok/chart-icons/awesome-ttrss.png +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/awesome-ttrss + - https://hub.docker.com/wangqiru/ttrss + - https://github.com/HenryQW/Awesome-TTRSS +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/awesome-ttrss/3.0.19/README.md b/incubator/awesome-ttrss/3.0.20/README.md similarity index 100% rename from incubator/awesome-ttrss/3.0.19/README.md rename to incubator/awesome-ttrss/3.0.20/README.md diff --git a/incubator/awesome-ttrss/3.0.20/app-changelog.md b/incubator/awesome-ttrss/3.0.20/app-changelog.md new file mode 100644 index 00000000000..956985e0cae --- /dev/null +++ b/incubator/awesome-ttrss/3.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [awesome-ttrss-3.0.20](https://github.com/truecharts/charts/compare/awesome-ttrss-3.0.19...awesome-ttrss-3.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/awesome-ttrss/3.0.19/app-readme.md b/incubator/awesome-ttrss/3.0.20/app-readme.md similarity index 100% rename from incubator/awesome-ttrss/3.0.19/app-readme.md rename to incubator/awesome-ttrss/3.0.20/app-readme.md diff --git a/incubator/backuppc/2.0.11/charts/common-11.1.2.tgz b/incubator/awesome-ttrss/3.0.20/charts/common-11.1.2.tgz similarity index 100% rename from incubator/backuppc/2.0.11/charts/common-11.1.2.tgz rename to incubator/awesome-ttrss/3.0.20/charts/common-11.1.2.tgz diff --git a/incubator/awesome-ttrss/3.0.19/charts/postgresql-11.0.22.tgz b/incubator/awesome-ttrss/3.0.20/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/awesome-ttrss/3.0.19/charts/postgresql-11.0.22.tgz rename to incubator/awesome-ttrss/3.0.20/charts/postgresql-11.0.22.tgz diff --git a/incubator/awesome-ttrss/3.0.19/ix_values.yaml b/incubator/awesome-ttrss/3.0.20/ix_values.yaml similarity index 100% rename from incubator/awesome-ttrss/3.0.19/ix_values.yaml rename to incubator/awesome-ttrss/3.0.20/ix_values.yaml diff --git a/incubator/awesome-ttrss/3.0.19/questions.yaml b/incubator/awesome-ttrss/3.0.20/questions.yaml similarity index 100% rename from incubator/awesome-ttrss/3.0.19/questions.yaml rename to incubator/awesome-ttrss/3.0.20/questions.yaml diff --git a/incubator/awesome-ttrss/3.0.19/templates/common.yaml b/incubator/awesome-ttrss/3.0.20/templates/common.yaml similarity index 100% rename from incubator/awesome-ttrss/3.0.19/templates/common.yaml rename to incubator/awesome-ttrss/3.0.20/templates/common.yaml diff --git a/incubator/backuppc/2.0.11/values.yaml b/incubator/awesome-ttrss/3.0.20/values.yaml similarity index 100% rename from incubator/backuppc/2.0.11/values.yaml rename to incubator/awesome-ttrss/3.0.20/values.yaml diff --git a/incubator/backuppc/2.0.11/CHANGELOG.md b/incubator/backuppc/2.0.11/CHANGELOG.md deleted file mode 100644 index 847d3426db0..00000000000 --- a/incubator/backuppc/2.0.11/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [backuppc-2.0.11](https://github.com/truecharts/charts/compare/backuppc-2.0.10...backuppc-2.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [backuppc-2.0.10](https://github.com/truecharts/charts/compare/backuppc-2.0.9...backuppc-2.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [backuppc-2.0.9](https://github.com/truecharts/charts/compare/backuppc-2.0.8...backuppc-2.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [backuppc-2.0.8](https://github.com/truecharts/charts/compare/backuppc-2.0.7...backuppc-2.0.8) (2022-12-25) - -### Chore - -- update container image tccr.io/truecharts/backuppc to latest ([#5695](https://github.com/truecharts/charts/issues/5695)) - - - - -## [backuppc-2.0.7](https://github.com/truecharts/charts/compare/backuppc-2.0.6...backuppc-2.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [backuppc-2.0.6](https://github.com/truecharts/charts/compare/backuppc-2.0.5...backuppc-2.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [backuppc-2.0.5](https://github.com/truecharts/charts/compare/backuppc-2.0.4...backuppc-2.0.5) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/backuppc to latest - - - - -## [backuppc-2.0.4](https://github.com/truecharts/charts/compare/backuppc-2.0.3...backuppc-2.0.4) (2022-12-01) - -### Chore - -- update container image tccr.io/truecharts/backuppc to latest - - - - -## [backuppc-2.0.3](https://github.com/truecharts/charts/compare/backuppc-2.0.2...backuppc-2.0.3) (2022-11-30) - - - - -## [backuppc-2.0.3](https://github.com/truecharts/charts/compare/backuppc-2.0.2...backuppc-2.0.3) (2022-11-30) - - - - -## [backuppc-2.0.3](https://github.com/truecharts/charts/compare/backuppc-2.0.2...backuppc-2.0.3) (2022-11-30) - - - - -## [backuppc-2.0.3](https://github.com/truecharts/charts/compare/backuppc-2.0.2...backuppc-2.0.3) (2022-11-30) - - - - -## [backuppc-2.0.3](https://github.com/truecharts/charts/compare/backuppc-2.0.2...backuppc-2.0.3) (2022-11-30) diff --git a/incubator/backuppc/2.0.11/Chart.yaml b/incubator/backuppc/2.0.11/Chart.yaml deleted file mode 100644 index b9d323f0afa..00000000000 --- a/incubator/backuppc/2.0.11/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Backup - - Network-Web -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: BackupPC is a high-performance, enterprise-grade system for backing up Linux, Windows and macOS PCs and laptops to a server's disk. -home: https://truecharts.org/charts/incubator/backuppc -icon: https://truecharts.org/img/hotlink-ok/chart-icons/backuppc.png -keywords: - - backuppc - - Backup - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: backuppc -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/backuppc - - https://backuppc.github.io/backuppc/index.html - - https://hub.docker.com/r/tiredofit/backuppc/ -type: application -version: 2.0.11 diff --git a/incubator/backuppc/2.0.11/app-changelog.md b/incubator/backuppc/2.0.11/app-changelog.md deleted file mode 100644 index 6abb916d0ec..00000000000 --- a/incubator/backuppc/2.0.11/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [backuppc-2.0.11](https://github.com/truecharts/charts/compare/backuppc-2.0.10...backuppc-2.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/backuppc/2.0.11/app-readme.md b/incubator/backuppc/2.0.11/app-readme.md deleted file mode 100644 index 375b2a8b309..00000000000 --- a/incubator/backuppc/2.0.11/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -BackupPC is a high-performance, enterprise-grade system for backing up Linux, Windows and macOS PCs and laptops to a server's disk. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/backuppc](https://truecharts.org/charts/incubator/backuppc) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/backuppc/2.0.11/questions.yaml b/incubator/backuppc/2.0.11/questions.yaml deleted file mode 100644 index 300d6039c05..00000000000 --- a/incubator/backuppc/2.0.11/questions.yaml +++ /dev/null @@ -1,2039 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: backuplocation - label: "backuplocation Storage" - description: "Backup Location" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: configurationfiles - label: "configurationfiles Storage" - description: "Configuration Files" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: homedirectory - label: "homedirectory Storage" - description: "Home Directory for Backuppc (SSH Keys)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: logs - label: "logs Storage" - description: "Logs" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/backuppc/2.0.12/CHANGELOG.md b/incubator/backuppc/2.0.12/CHANGELOG.md new file mode 100644 index 00000000000..3b9c495f063 --- /dev/null +++ b/incubator/backuppc/2.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [backuppc-2.0.12](https://github.com/truecharts/charts/compare/backuppc-2.0.11...backuppc-2.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [backuppc-2.0.11](https://github.com/truecharts/charts/compare/backuppc-2.0.10...backuppc-2.0.11) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [backuppc-2.0.10](https://github.com/truecharts/charts/compare/backuppc-2.0.9...backuppc-2.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [backuppc-2.0.9](https://github.com/truecharts/charts/compare/backuppc-2.0.8...backuppc-2.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [backuppc-2.0.8](https://github.com/truecharts/charts/compare/backuppc-2.0.7...backuppc-2.0.8) (2022-12-25) + +### Chore + +- update container image tccr.io/truecharts/backuppc to latest ([#5695](https://github.com/truecharts/charts/issues/5695)) + + + + +## [backuppc-2.0.7](https://github.com/truecharts/charts/compare/backuppc-2.0.6...backuppc-2.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [backuppc-2.0.6](https://github.com/truecharts/charts/compare/backuppc-2.0.5...backuppc-2.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [backuppc-2.0.5](https://github.com/truecharts/charts/compare/backuppc-2.0.4...backuppc-2.0.5) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/backuppc to latest + + + + +## [backuppc-2.0.4](https://github.com/truecharts/charts/compare/backuppc-2.0.3...backuppc-2.0.4) (2022-12-01) + +### Chore + +- update container image tccr.io/truecharts/backuppc to latest + + + + +## [backuppc-2.0.3](https://github.com/truecharts/charts/compare/backuppc-2.0.2...backuppc-2.0.3) (2022-11-30) + + + + +## [backuppc-2.0.3](https://github.com/truecharts/charts/compare/backuppc-2.0.2...backuppc-2.0.3) (2022-11-30) + + + + +## [backuppc-2.0.3](https://github.com/truecharts/charts/compare/backuppc-2.0.2...backuppc-2.0.3) (2022-11-30) + diff --git a/incubator/backuppc/2.0.12/Chart.yaml b/incubator/backuppc/2.0.12/Chart.yaml new file mode 100644 index 00000000000..50697f6d84d --- /dev/null +++ b/incubator/backuppc/2.0.12/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Backup + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: BackupPC is a high-performance, enterprise-grade system for backing up Linux, Windows and macOS PCs and laptops to a server's disk. +home: https://truecharts.org/charts/incubator/backuppc +icon: https://truecharts.org/img/hotlink-ok/chart-icons/backuppc.png +keywords: + - backuppc + - Backup + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: backuppc +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/backuppc + - https://hub.docker.com/tiredofit/backuppc + - https://backuppc.github.io/backuppc/index.html +type: application +version: 2.0.12 diff --git a/incubator/backuppc/2.0.11/README.md b/incubator/backuppc/2.0.12/README.md similarity index 100% rename from incubator/backuppc/2.0.11/README.md rename to incubator/backuppc/2.0.12/README.md diff --git a/incubator/backuppc/2.0.12/app-changelog.md b/incubator/backuppc/2.0.12/app-changelog.md new file mode 100644 index 00000000000..d3188f8f935 --- /dev/null +++ b/incubator/backuppc/2.0.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [backuppc-2.0.12](https://github.com/truecharts/charts/compare/backuppc-2.0.11...backuppc-2.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/backuppc/2.0.12/app-readme.md b/incubator/backuppc/2.0.12/app-readme.md new file mode 100644 index 00000000000..22147f17aba --- /dev/null +++ b/incubator/backuppc/2.0.12/app-readme.md @@ -0,0 +1,8 @@ +BackupPC is a high-performance, enterprise-grade system for backing up Linux, Windows and macOS PCs and laptops to a server's disk. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/backuppc](https://truecharts.org/charts/incubator/backuppc) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/baikal/2.0.8/charts/common-11.1.2.tgz b/incubator/backuppc/2.0.12/charts/common-11.1.2.tgz similarity index 100% rename from incubator/baikal/2.0.8/charts/common-11.1.2.tgz rename to incubator/backuppc/2.0.12/charts/common-11.1.2.tgz diff --git a/incubator/backuppc/2.0.11/ix_values.yaml b/incubator/backuppc/2.0.12/ix_values.yaml similarity index 100% rename from incubator/backuppc/2.0.11/ix_values.yaml rename to incubator/backuppc/2.0.12/ix_values.yaml diff --git a/incubator/backuppc/2.0.12/questions.yaml b/incubator/backuppc/2.0.12/questions.yaml new file mode 100644 index 00000000000..6dab6321d56 --- /dev/null +++ b/incubator/backuppc/2.0.12/questions.yaml @@ -0,0 +1,2080 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: backuplocation + label: "backuplocation Storage" + description: "Backup Location" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: configurationfiles + label: "configurationfiles Storage" + description: "Configuration Files" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: homedirectory + label: "homedirectory Storage" + description: "Home Directory for Backuppc (SSH Keys)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: logs + label: "logs Storage" + description: "Logs" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/backuppc/2.0.11/templates/common.yaml b/incubator/backuppc/2.0.12/templates/common.yaml similarity index 100% rename from incubator/backuppc/2.0.11/templates/common.yaml rename to incubator/backuppc/2.0.12/templates/common.yaml diff --git a/incubator/baikal/2.0.8/values.yaml b/incubator/backuppc/2.0.12/values.yaml similarity index 100% rename from incubator/baikal/2.0.8/values.yaml rename to incubator/backuppc/2.0.12/values.yaml diff --git a/incubator/baikal/2.0.8/CHANGELOG.md b/incubator/baikal/2.0.8/CHANGELOG.md deleted file mode 100644 index bc1f3a99c7e..00000000000 --- a/incubator/baikal/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [baikal-2.0.8](https://github.com/truecharts/charts/compare/baikal-2.0.7...baikal-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [baikal-2.0.7](https://github.com/truecharts/charts/compare/baikal-2.0.6...baikal-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [baikal-2.0.6](https://github.com/truecharts/charts/compare/baikal-2.0.5...baikal-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [baikal-2.0.5](https://github.com/truecharts/charts/compare/baikal-2.0.4...baikal-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [baikal-2.0.4](https://github.com/truecharts/charts/compare/baikal-2.0.3...baikal-2.0.4) (2022-12-14) - -### Chore - -- update container image tccr.io/truecharts/baikal to v0.9.3 - - - - -## [baikal-2.0.3](https://github.com/truecharts/charts/compare/baikal-2.0.2...baikal-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) - - - - -## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) - - - - -## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) - - - - -## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) - - - - -## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) - - - - -## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) - - - - -## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) - - - - -## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) - - - diff --git a/incubator/baikal/2.0.8/Chart.yaml b/incubator/baikal/2.0.8/Chart.yaml deleted file mode 100644 index d0bf9eedcc7..00000000000 --- a/incubator/baikal/2.0.8/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "0.9.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Baikal is a lightweight CalDAV+CardDAV server" -home: https://truecharts.org/charts/incubator/baikal -icon: https://truecharts.org/img/hotlink-ok/chart-icons/baikal.png -keywords: - - baikal -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: baikal -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/baikal - - https://github.com/ckulka/baikal-docker - - https://hub.docker.com/r/ckulka/baikal/ -type: application -version: 2.0.8 -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - utilities diff --git a/incubator/baikal/2.0.8/app-changelog.md b/incubator/baikal/2.0.8/app-changelog.md deleted file mode 100644 index 94fe939679b..00000000000 --- a/incubator/baikal/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [baikal-2.0.8](https://github.com/truecharts/charts/compare/baikal-2.0.7...baikal-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/baikal/2.0.8/app-readme.md b/incubator/baikal/2.0.8/app-readme.md deleted file mode 100644 index db174ac142a..00000000000 --- a/incubator/baikal/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Baikal is a lightweight CalDAV+CardDAV server - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/baikal](https://truecharts.org/charts/incubator/baikal) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/baikal/2.0.8/questions.yaml b/incubator/baikal/2.0.8/questions.yaml deleted file mode 100644 index 17f2004bbbe..00000000000 --- a/incubator/baikal/2.0.8/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10293 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "config Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: specific - label: "specific Storage" - description: "specific Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/baikal/2.0.9/CHANGELOG.md b/incubator/baikal/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..3b12d153464 --- /dev/null +++ b/incubator/baikal/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [baikal-2.0.9](https://github.com/truecharts/charts/compare/baikal-2.0.8...baikal-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [baikal-2.0.8](https://github.com/truecharts/charts/compare/baikal-2.0.7...baikal-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [baikal-2.0.7](https://github.com/truecharts/charts/compare/baikal-2.0.6...baikal-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [baikal-2.0.6](https://github.com/truecharts/charts/compare/baikal-2.0.5...baikal-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [baikal-2.0.5](https://github.com/truecharts/charts/compare/baikal-2.0.4...baikal-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [baikal-2.0.4](https://github.com/truecharts/charts/compare/baikal-2.0.3...baikal-2.0.4) (2022-12-14) + +### Chore + +- update container image tccr.io/truecharts/baikal to v0.9.3 + + + + +## [baikal-2.0.3](https://github.com/truecharts/charts/compare/baikal-2.0.2...baikal-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) + + + + +## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) + + + + +## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) + + + + +## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) + + + + +## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) + + + + +## [baikal-2.0.2](https://github.com/truecharts/charts/compare/baikal-2.0.1...baikal-2.0.2) (2022-11-30) + + + + diff --git a/incubator/baikal/2.0.9/Chart.yaml b/incubator/baikal/2.0.9/Chart.yaml new file mode 100644 index 00000000000..d37f8c02481 --- /dev/null +++ b/incubator/baikal/2.0.9/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "0.9.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Baikal is a lightweight CalDAV+CardDAV server" +home: https://truecharts.org/charts/incubator/baikal +icon: https://truecharts.org/img/hotlink-ok/chart-icons/baikal.png +keywords: + - baikal +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: baikal +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/baikal + - https://hub.docker.com/ckulka/baikal + - https://github.com/ckulka/baikal-docker +type: application +version: 2.0.9 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - utilities diff --git a/incubator/baikal/2.0.8/README.md b/incubator/baikal/2.0.9/README.md similarity index 100% rename from incubator/baikal/2.0.8/README.md rename to incubator/baikal/2.0.9/README.md diff --git a/incubator/baikal/2.0.9/app-changelog.md b/incubator/baikal/2.0.9/app-changelog.md new file mode 100644 index 00000000000..8045416b80c --- /dev/null +++ b/incubator/baikal/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [baikal-2.0.9](https://github.com/truecharts/charts/compare/baikal-2.0.8...baikal-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/baikal/2.0.9/app-readme.md b/incubator/baikal/2.0.9/app-readme.md new file mode 100644 index 00000000000..9125204ac27 --- /dev/null +++ b/incubator/baikal/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +Baikal is a lightweight CalDAV+CardDAV server + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/baikal](https://truecharts.org/charts/incubator/baikal) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/bitcoin-node/2.0.9/charts/common-11.1.2.tgz b/incubator/baikal/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/bitcoin-node/2.0.9/charts/common-11.1.2.tgz rename to incubator/baikal/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/baikal/2.0.8/ix_values.yaml b/incubator/baikal/2.0.9/ix_values.yaml similarity index 100% rename from incubator/baikal/2.0.8/ix_values.yaml rename to incubator/baikal/2.0.9/ix_values.yaml diff --git a/incubator/baikal/2.0.9/questions.yaml b/incubator/baikal/2.0.9/questions.yaml new file mode 100644 index 00000000000..b25023a46b8 --- /dev/null +++ b/incubator/baikal/2.0.9/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10293 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "config Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: specific + label: "specific Storage" + description: "specific Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/baikal/2.0.8/templates/common.yaml b/incubator/baikal/2.0.9/templates/common.yaml similarity index 100% rename from incubator/baikal/2.0.8/templates/common.yaml rename to incubator/baikal/2.0.9/templates/common.yaml diff --git a/incubator/bitcoin-node/2.0.9/values.yaml b/incubator/baikal/2.0.9/values.yaml similarity index 100% rename from incubator/bitcoin-node/2.0.9/values.yaml rename to incubator/baikal/2.0.9/values.yaml diff --git a/incubator/bitcoin-node/2.0.10/CHANGELOG.md b/incubator/bitcoin-node/2.0.10/CHANGELOG.md new file mode 100644 index 00000000000..9f7d6485f47 --- /dev/null +++ b/incubator/bitcoin-node/2.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [bitcoin-node-2.0.10](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.9...bitcoin-node-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [bitcoin-node-2.0.9](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.8...bitcoin-node-2.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [bitcoin-node-2.0.8](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.7...bitcoin-node-2.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [bitcoin-node-2.0.7](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.6...bitcoin-node-2.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [bitcoin-node-2.0.6](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.5...bitcoin-node-2.0.6) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/bitcoin-node to latest + + + + +## [bitcoin-node-2.0.5](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.4...bitcoin-node-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [bitcoin-node-2.0.4](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.3...bitcoin-node-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/bitcoin-node to latest + + + + +## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/bitcoin-node to latest + + + + +## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/bitcoin-node to latest + + + + +## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) + +### Chore diff --git a/incubator/bitcoin-node/2.0.10/Chart.yaml b/incubator/bitcoin-node/2.0.10/Chart.yaml new file mode 100644 index 00000000000..0b32fcb0a99 --- /dev/null +++ b/incubator/bitcoin-node/2.0.10/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Crypto +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Chart that runs the Bitcoin bitcoind node in a Chart for easy deployment." +home: https://truecharts.org/charts/incubator/bitcoin-node +icon: https://truecharts.org/img/hotlink-ok/chart-icons/bitcoin-node.png +keywords: + - bitcoin-node + - Crypto +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: bitcoin-node +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/bitcoin-node + - https://hub.docker.com/kylemanna/bitcoind + - https://github.com/kylemanna/docker-bitcoind +type: application +version: 2.0.10 diff --git a/incubator/bitcoin-node/2.0.9/README.md b/incubator/bitcoin-node/2.0.10/README.md similarity index 100% rename from incubator/bitcoin-node/2.0.9/README.md rename to incubator/bitcoin-node/2.0.10/README.md diff --git a/incubator/bitcoin-node/2.0.10/app-changelog.md b/incubator/bitcoin-node/2.0.10/app-changelog.md new file mode 100644 index 00000000000..15f6b9f03bc --- /dev/null +++ b/incubator/bitcoin-node/2.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [bitcoin-node-2.0.10](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.9...bitcoin-node-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/bitcoin-node/2.0.10/app-readme.md b/incubator/bitcoin-node/2.0.10/app-readme.md new file mode 100644 index 00000000000..62820a9d60f --- /dev/null +++ b/incubator/bitcoin-node/2.0.10/app-readme.md @@ -0,0 +1,8 @@ +Chart that runs the Bitcoin bitcoind node in a Chart for easy deployment. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/bitcoin-node](https://truecharts.org/charts/incubator/bitcoin-node) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/bitcoinunlimited/2.0.7/charts/common-11.1.2.tgz b/incubator/bitcoin-node/2.0.10/charts/common-11.1.2.tgz similarity index 100% rename from incubator/bitcoinunlimited/2.0.7/charts/common-11.1.2.tgz rename to incubator/bitcoin-node/2.0.10/charts/common-11.1.2.tgz diff --git a/incubator/bitcoin-node/2.0.9/ix_values.yaml b/incubator/bitcoin-node/2.0.10/ix_values.yaml similarity index 100% rename from incubator/bitcoin-node/2.0.9/ix_values.yaml rename to incubator/bitcoin-node/2.0.10/ix_values.yaml diff --git a/incubator/bitcoin-node/2.0.10/questions.yaml b/incubator/bitcoin-node/2.0.10/questions.yaml new file mode 100644 index 00000000000..861befd5e81 --- /dev/null +++ b/incubator/bitcoin-node/2.0.10/questions.yaml @@ -0,0 +1,1920 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8332 + required: true + - variable: port2 + label: 'port2 service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port2 + label: "port2 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8333 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: blockhainstorage + label: "blockhainstorage Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/bitcoin-node/2.0.9/templates/common.yaml b/incubator/bitcoin-node/2.0.10/templates/common.yaml similarity index 100% rename from incubator/bitcoin-node/2.0.9/templates/common.yaml rename to incubator/bitcoin-node/2.0.10/templates/common.yaml diff --git a/incubator/bitcoinunlimited/2.0.7/values.yaml b/incubator/bitcoin-node/2.0.10/values.yaml similarity index 100% rename from incubator/bitcoinunlimited/2.0.7/values.yaml rename to incubator/bitcoin-node/2.0.10/values.yaml diff --git a/incubator/bitcoin-node/2.0.9/CHANGELOG.md b/incubator/bitcoin-node/2.0.9/CHANGELOG.md deleted file mode 100644 index 6172e7617ff..00000000000 --- a/incubator/bitcoin-node/2.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [bitcoin-node-2.0.9](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.8...bitcoin-node-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [bitcoin-node-2.0.8](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.7...bitcoin-node-2.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [bitcoin-node-2.0.7](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.6...bitcoin-node-2.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [bitcoin-node-2.0.6](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.5...bitcoin-node-2.0.6) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/bitcoin-node to latest - - - - -## [bitcoin-node-2.0.5](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.4...bitcoin-node-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [bitcoin-node-2.0.4](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.3...bitcoin-node-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/bitcoin-node to latest - - - - -## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/bitcoin-node to latest - - - - -## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/bitcoin-node to latest - - - - -## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/bitcoin-node to latest - - - - -## [bitcoin-node-2.0.3](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.1...bitcoin-node-2.0.3) (2022-11-30) - -### Chore diff --git a/incubator/bitcoin-node/2.0.9/Chart.yaml b/incubator/bitcoin-node/2.0.9/Chart.yaml deleted file mode 100644 index 5636d348397..00000000000 --- a/incubator/bitcoin-node/2.0.9/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Crypto -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Chart that runs the Bitcoin bitcoind node in a Chart for easy deployment." -home: https://truecharts.org/charts/incubator/bitcoin-node -icon: https://truecharts.org/img/hotlink-ok/chart-icons/bitcoin-node.png -keywords: - - bitcoin-node - - Crypto -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: bitcoin-node -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/bitcoin-node - - https://github.com/kylemanna/docker-bitcoind - - https://hub.docker.com/r/kylemanna/bitcoind -type: application -version: 2.0.9 diff --git a/incubator/bitcoin-node/2.0.9/app-changelog.md b/incubator/bitcoin-node/2.0.9/app-changelog.md deleted file mode 100644 index 87dc52ed885..00000000000 --- a/incubator/bitcoin-node/2.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [bitcoin-node-2.0.9](https://github.com/truecharts/charts/compare/bitcoin-node-2.0.8...bitcoin-node-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/bitcoin-node/2.0.9/app-readme.md b/incubator/bitcoin-node/2.0.9/app-readme.md deleted file mode 100644 index b5270fb16c8..00000000000 --- a/incubator/bitcoin-node/2.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Chart that runs the Bitcoin bitcoind node in a Chart for easy deployment. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/bitcoin-node](https://truecharts.org/charts/incubator/bitcoin-node) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/bitcoin-node/2.0.9/questions.yaml b/incubator/bitcoin-node/2.0.9/questions.yaml deleted file mode 100644 index df56617cc66..00000000000 --- a/incubator/bitcoin-node/2.0.9/questions.yaml +++ /dev/null @@ -1,1879 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8332 - required: true - - variable: port2 - label: 'port2 service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port2 - label: "port2 Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8333 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: blockhainstorage - label: "blockhainstorage Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/bitcoinunlimited/2.0.7/CHANGELOG.md b/incubator/bitcoinunlimited/2.0.7/CHANGELOG.md deleted file mode 100644 index 05dcbb0223c..00000000000 --- a/incubator/bitcoinunlimited/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [bitcoinunlimited-2.0.7](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.6...bitcoinunlimited-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [bitcoinunlimited-2.0.6](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.5...bitcoinunlimited-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [bitcoinunlimited-2.0.5](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.4...bitcoinunlimited-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [bitcoinunlimited-2.0.4](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.3...bitcoinunlimited-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [bitcoinunlimited-2.0.3](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.2...bitcoinunlimited-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - - - -## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) - - diff --git a/incubator/bitcoinunlimited/2.0.7/Chart.yaml b/incubator/bitcoinunlimited/2.0.7/Chart.yaml deleted file mode 100644 index 4f0ed0b6c60..00000000000 --- a/incubator/bitcoinunlimited/2.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Network-Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "The Bitcoin Unlimited project seeks to provide a voice to all stakeholders in the Bitcoin ecosystem." -home: https://truecharts.org/charts/incubator/bitcoinunlimited -icon: https://truecharts.org/img/hotlink-ok/chart-icons/bitcoinunlimited.png -keywords: - - bitcoinunlimited - - Network-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: bitcoinunlimited -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/bitcoinunlimited - - https://hub.docker.com/r/amacneil/bitcoinunlimited/~/dockerfile/ -type: application -version: 2.0.7 diff --git a/incubator/bitcoinunlimited/2.0.7/app-changelog.md b/incubator/bitcoinunlimited/2.0.7/app-changelog.md deleted file mode 100644 index dd2fbe19568..00000000000 --- a/incubator/bitcoinunlimited/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [bitcoinunlimited-2.0.7](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.6...bitcoinunlimited-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/bitcoinunlimited/2.0.7/app-readme.md b/incubator/bitcoinunlimited/2.0.7/app-readme.md deleted file mode 100644 index 2784d0d2694..00000000000 --- a/incubator/bitcoinunlimited/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -The Bitcoin Unlimited project seeks to provide a voice to all stakeholders in the Bitcoin ecosystem. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/bitcoinunlimited](https://truecharts.org/charts/incubator/bitcoinunlimited) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/bitcoinunlimited/2.0.7/questions.yaml b/incubator/bitcoinunlimited/2.0.7/questions.yaml deleted file mode 100644 index 33733cc3d04..00000000000 --- a/incubator/bitcoinunlimited/2.0.7/questions.yaml +++ /dev/null @@ -1,1985 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8332 - required: true - - variable: communicationp - label: 'communicationp service' - description: "Main Port Used" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: communicationp - label: "communicationp Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8333 - required: true - - variable: testnetrpcport - label: 'testnetrpcport service' - description: "Testnet RPC Port" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: testnetrpcport - label: "testnetrpcport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 18332 - required: true - - variable: testnetcommuni - label: 'testnetcommuni service' - description: "Testnet Communication Port" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: testnetcommuni - label: "testnetcommuni Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 18333 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Mount data for the blockchain" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/bitcoinunlimited/2.0.8/CHANGELOG.md b/incubator/bitcoinunlimited/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..b784b9033e3 --- /dev/null +++ b/incubator/bitcoinunlimited/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [bitcoinunlimited-2.0.8](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.7...bitcoinunlimited-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [bitcoinunlimited-2.0.7](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.6...bitcoinunlimited-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [bitcoinunlimited-2.0.6](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.5...bitcoinunlimited-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [bitcoinunlimited-2.0.5](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.4...bitcoinunlimited-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [bitcoinunlimited-2.0.4](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.3...bitcoinunlimited-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [bitcoinunlimited-2.0.3](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.2...bitcoinunlimited-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) + + + + +## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) + + + + +## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) + + + + +## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) + + + + +## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) + + + + +## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) + + + + +## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) + + + + +## [bitcoinunlimited-2.0.2](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.1...bitcoinunlimited-2.0.2) (2022-11-30) + + + diff --git a/incubator/bitcoinunlimited/2.0.8/Chart.yaml b/incubator/bitcoinunlimited/2.0.8/Chart.yaml new file mode 100644 index 00000000000..5fdfdfee2bd --- /dev/null +++ b/incubator/bitcoinunlimited/2.0.8/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Network-Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "The Bitcoin Unlimited project seeks to provide a voice to all stakeholders in the Bitcoin ecosystem." +home: https://truecharts.org/charts/incubator/bitcoinunlimited +icon: https://truecharts.org/img/hotlink-ok/chart-icons/bitcoinunlimited.png +keywords: + - bitcoinunlimited + - Network-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: bitcoinunlimited +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/bitcoinunlimited + - https://hub.docker.com/amacneil/bitcoinunlimited +type: application +version: 2.0.8 diff --git a/incubator/bitcoinunlimited/2.0.7/README.md b/incubator/bitcoinunlimited/2.0.8/README.md similarity index 100% rename from incubator/bitcoinunlimited/2.0.7/README.md rename to incubator/bitcoinunlimited/2.0.8/README.md diff --git a/incubator/bitcoinunlimited/2.0.8/app-changelog.md b/incubator/bitcoinunlimited/2.0.8/app-changelog.md new file mode 100644 index 00000000000..3334b032c6d --- /dev/null +++ b/incubator/bitcoinunlimited/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [bitcoinunlimited-2.0.8](https://github.com/truecharts/charts/compare/bitcoinunlimited-2.0.7...bitcoinunlimited-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/bitcoinunlimited/2.0.8/app-readme.md b/incubator/bitcoinunlimited/2.0.8/app-readme.md new file mode 100644 index 00000000000..fb525a3cded --- /dev/null +++ b/incubator/bitcoinunlimited/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +The Bitcoin Unlimited project seeks to provide a voice to all stakeholders in the Bitcoin ecosystem. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/bitcoinunlimited](https://truecharts.org/charts/incubator/bitcoinunlimited) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/bwapp/2.0.7/charts/common-11.1.2.tgz b/incubator/bitcoinunlimited/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/bwapp/2.0.7/charts/common-11.1.2.tgz rename to incubator/bitcoinunlimited/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/bitcoinunlimited/2.0.7/ix_values.yaml b/incubator/bitcoinunlimited/2.0.8/ix_values.yaml similarity index 100% rename from incubator/bitcoinunlimited/2.0.7/ix_values.yaml rename to incubator/bitcoinunlimited/2.0.8/ix_values.yaml diff --git a/incubator/bitcoinunlimited/2.0.8/questions.yaml b/incubator/bitcoinunlimited/2.0.8/questions.yaml new file mode 100644 index 00000000000..4822e343384 --- /dev/null +++ b/incubator/bitcoinunlimited/2.0.8/questions.yaml @@ -0,0 +1,2026 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8332 + required: true + - variable: communicationp + label: 'communicationp service' + description: "Main Port Used" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: communicationp + label: "communicationp Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8333 + required: true + - variable: testnetrpcport + label: 'testnetrpcport service' + description: "Testnet RPC Port" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: testnetrpcport + label: "testnetrpcport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 18332 + required: true + - variable: testnetcommuni + label: 'testnetcommuni service' + description: "Testnet Communication Port" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: testnetcommuni + label: "testnetcommuni Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 18333 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Mount data for the blockchain" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/bitcoinunlimited/2.0.7/templates/common.yaml b/incubator/bitcoinunlimited/2.0.8/templates/common.yaml similarity index 100% rename from incubator/bitcoinunlimited/2.0.7/templates/common.yaml rename to incubator/bitcoinunlimited/2.0.8/templates/common.yaml diff --git a/incubator/bwapp/2.0.7/values.yaml b/incubator/bitcoinunlimited/2.0.8/values.yaml similarity index 100% rename from incubator/bwapp/2.0.7/values.yaml rename to incubator/bitcoinunlimited/2.0.8/values.yaml diff --git a/incubator/bwapp/2.0.7/CHANGELOG.md b/incubator/bwapp/2.0.7/CHANGELOG.md deleted file mode 100644 index 9213c674be7..00000000000 --- a/incubator/bwapp/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [bwapp-2.0.7](https://github.com/truecharts/charts/compare/bwapp-2.0.6...bwapp-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [bwapp-2.0.6](https://github.com/truecharts/charts/compare/bwapp-2.0.5...bwapp-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [bwapp-2.0.5](https://github.com/truecharts/charts/compare/bwapp-2.0.4...bwapp-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [bwapp-2.0.4](https://github.com/truecharts/charts/compare/bwapp-2.0.3...bwapp-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [bwapp-2.0.3](https://github.com/truecharts/charts/compare/bwapp-2.0.2...bwapp-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - - - -## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) - - diff --git a/incubator/bwapp/2.0.7/Chart.yaml b/incubator/bwapp/2.0.7/Chart.yaml deleted file mode 100644 index f5211701c8a..00000000000 --- a/incubator/bwapp/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities - - Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "bWAPP, or a buggy web application, is a free and open source deliberately insecure web application." -home: https://truecharts.org/charts/incubator/bwapp -icon: https://truecharts.org/img/hotlink-ok/chart-icons/bwapp.png -keywords: - - bwapp - - Tools-Utilities - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: bwapp -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/bwapp - - https://sourceforge.net/projects/bwapp/ - - https://hub.docker.com/r/raesene/bwapp/ -type: application -version: 2.0.7 diff --git a/incubator/bwapp/2.0.7/app-changelog.md b/incubator/bwapp/2.0.7/app-changelog.md deleted file mode 100644 index 4cdb77354ed..00000000000 --- a/incubator/bwapp/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [bwapp-2.0.7](https://github.com/truecharts/charts/compare/bwapp-2.0.6...bwapp-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/bwapp/2.0.7/app-readme.md b/incubator/bwapp/2.0.7/app-readme.md deleted file mode 100644 index 483a5ccfdee..00000000000 --- a/incubator/bwapp/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -bWAPP, or a buggy web application, is a free and open source deliberately insecure web application. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/bwapp](https://truecharts.org/charts/incubator/bwapp) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/bwapp/2.0.7/questions.yaml b/incubator/bwapp/2.0.7/questions.yaml deleted file mode 100644 index c688869148e..00000000000 --- a/incubator/bwapp/2.0.7/questions.yaml +++ /dev/null @@ -1,1402 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/bwapp/2.0.8/CHANGELOG.md b/incubator/bwapp/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..ceb1194ffba --- /dev/null +++ b/incubator/bwapp/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [bwapp-2.0.8](https://github.com/truecharts/charts/compare/bwapp-2.0.7...bwapp-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [bwapp-2.0.7](https://github.com/truecharts/charts/compare/bwapp-2.0.6...bwapp-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [bwapp-2.0.6](https://github.com/truecharts/charts/compare/bwapp-2.0.5...bwapp-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [bwapp-2.0.5](https://github.com/truecharts/charts/compare/bwapp-2.0.4...bwapp-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [bwapp-2.0.4](https://github.com/truecharts/charts/compare/bwapp-2.0.3...bwapp-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [bwapp-2.0.3](https://github.com/truecharts/charts/compare/bwapp-2.0.2...bwapp-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) + + + + +## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) + + + + +## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) + + + + +## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) + + + + +## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) + + + + +## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) + + + + +## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) + + + + +## [bwapp-2.0.2](https://github.com/truecharts/charts/compare/bwapp-2.0.1...bwapp-2.0.2) (2022-11-30) + + + diff --git a/incubator/bwapp/2.0.8/Chart.yaml b/incubator/bwapp/2.0.8/Chart.yaml new file mode 100644 index 00000000000..d199f069ef1 --- /dev/null +++ b/incubator/bwapp/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "bWAPP, or a buggy web application, is a free and open source deliberately insecure web application." +home: https://truecharts.org/charts/incubator/bwapp +icon: https://truecharts.org/img/hotlink-ok/chart-icons/bwapp.png +keywords: + - bwapp + - Tools-Utilities + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: bwapp +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/bwapp + - https://hub.docker.com/raesene/bwapp + - https://sourceforge.net/projects/bwapp/ +type: application +version: 2.0.8 diff --git a/incubator/bwapp/2.0.7/README.md b/incubator/bwapp/2.0.8/README.md similarity index 100% rename from incubator/bwapp/2.0.7/README.md rename to incubator/bwapp/2.0.8/README.md diff --git a/incubator/bwapp/2.0.8/app-changelog.md b/incubator/bwapp/2.0.8/app-changelog.md new file mode 100644 index 00000000000..4af98f5be8d --- /dev/null +++ b/incubator/bwapp/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [bwapp-2.0.8](https://github.com/truecharts/charts/compare/bwapp-2.0.7...bwapp-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/bwapp/2.0.8/app-readme.md b/incubator/bwapp/2.0.8/app-readme.md new file mode 100644 index 00000000000..75329bf32a4 --- /dev/null +++ b/incubator/bwapp/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +bWAPP, or a buggy web application, is a free and open source deliberately insecure web application. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/bwapp](https://truecharts.org/charts/incubator/bwapp) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/cherry/2.0.7/charts/common-11.1.2.tgz b/incubator/bwapp/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/cherry/2.0.7/charts/common-11.1.2.tgz rename to incubator/bwapp/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/bwapp/2.0.7/ix_values.yaml b/incubator/bwapp/2.0.8/ix_values.yaml similarity index 100% rename from incubator/bwapp/2.0.7/ix_values.yaml rename to incubator/bwapp/2.0.8/ix_values.yaml diff --git a/incubator/fileshelter/2.0.8/questions.yaml b/incubator/bwapp/2.0.8/questions.yaml similarity index 100% rename from incubator/fileshelter/2.0.8/questions.yaml rename to incubator/bwapp/2.0.8/questions.yaml diff --git a/incubator/bwapp/2.0.7/templates/common.yaml b/incubator/bwapp/2.0.8/templates/common.yaml similarity index 100% rename from incubator/bwapp/2.0.7/templates/common.yaml rename to incubator/bwapp/2.0.8/templates/common.yaml diff --git a/incubator/cherry/2.0.7/values.yaml b/incubator/bwapp/2.0.8/values.yaml similarity index 100% rename from incubator/cherry/2.0.7/values.yaml rename to incubator/bwapp/2.0.8/values.yaml diff --git a/incubator/cherry/2.0.7/CHANGELOG.md b/incubator/cherry/2.0.7/CHANGELOG.md deleted file mode 100644 index eab37717703..00000000000 --- a/incubator/cherry/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cherry-2.0.7](https://github.com/truecharts/charts/compare/cherry-2.0.6...cherry-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cherry-2.0.6](https://github.com/truecharts/charts/compare/cherry-2.0.5...cherry-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cherry-2.0.5](https://github.com/truecharts/charts/compare/cherry-2.0.4...cherry-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cherry-2.0.4](https://github.com/truecharts/charts/compare/cherry-2.0.3...cherry-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cherry-2.0.3](https://github.com/truecharts/charts/compare/cherry-2.0.2...cherry-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - - - -## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) - - diff --git a/incubator/cherry/2.0.7/Chart.yaml b/incubator/cherry/2.0.7/Chart.yaml deleted file mode 100644 index a4782fe796a..00000000000 --- a/incubator/cherry/2.0.7/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "0.0.6" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: An open source self-hosted bookmark service -home: https://truecharts.org/charts/incubator/cherry -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cherry.png -keywords: - - bookmark -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cherry -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/cherry - - https://cherry.haishan.me/ - - https://github.com/haishanh/cherry -version: 2.0.7 -annotations: - truecharts.org/catagories: | - - bookmark - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/cherry/2.0.7/app-changelog.md b/incubator/cherry/2.0.7/app-changelog.md deleted file mode 100644 index 78c5ea4fe8f..00000000000 --- a/incubator/cherry/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cherry-2.0.7](https://github.com/truecharts/charts/compare/cherry-2.0.6...cherry-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/cherry/2.0.7/app-readme.md b/incubator/cherry/2.0.7/app-readme.md deleted file mode 100644 index 6d0b0fad8f1..00000000000 --- a/incubator/cherry/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -An open source self-hosted bookmark service - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/cherry](https://truecharts.org/charts/incubator/cherry) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/cherry/2.0.7/questions.yaml b/incubator/cherry/2.0.7/questions.yaml deleted file mode 100644 index c1c8f59bc38..00000000000 --- a/incubator/cherry/2.0.7/questions.yaml +++ /dev/null @@ -1,1868 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: cherry - group: App Configuration - label: Cherry Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: insecure_cookie - label: Insecure Cookie - schema: - type: boolean - default: false - - variable: public_registration - label: Public Registration - schema: - type: boolean - default: true - - variable: page_bookmark_limit - label: Page Bookmark Limit - schema: - type: int - default: 60 - - variable: google_oauth_uri - label: Google OAuth URI - schema: - type: string - default: "" - - variable: google_oauth_id - label: Google OAuth ID - schema: - type: string - private: true - default: "" - - variable: google_oauth_secret - label: Google OAuth Secret - schema: - type: string - private: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10303 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: App Data Storage - description: Stores the Application Data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/cherry/2.0.8/CHANGELOG.md b/incubator/cherry/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..45589268f49 --- /dev/null +++ b/incubator/cherry/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cherry-2.0.8](https://github.com/truecharts/charts/compare/cherry-2.0.7...cherry-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cherry-2.0.7](https://github.com/truecharts/charts/compare/cherry-2.0.6...cherry-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cherry-2.0.6](https://github.com/truecharts/charts/compare/cherry-2.0.5...cherry-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cherry-2.0.5](https://github.com/truecharts/charts/compare/cherry-2.0.4...cherry-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cherry-2.0.4](https://github.com/truecharts/charts/compare/cherry-2.0.3...cherry-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cherry-2.0.3](https://github.com/truecharts/charts/compare/cherry-2.0.2...cherry-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) + + + + +## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) + + + + +## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) + + + + +## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) + + + + +## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) + + + + +## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) + + + + +## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) + + + + +## [cherry-2.0.2](https://github.com/truecharts/charts/compare/cherry-2.0.1...cherry-2.0.2) (2022-11-30) + + + diff --git a/incubator/cherry/2.0.8/Chart.yaml b/incubator/cherry/2.0.8/Chart.yaml new file mode 100644 index 00000000000..a1b0650b3ca --- /dev/null +++ b/incubator/cherry/2.0.8/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "0.0.6" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: An open source self-hosted bookmark service +home: https://truecharts.org/charts/incubator/cherry +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cherry.png +keywords: + - bookmark +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cherry +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/cherry + - https://hub.docker.com/haishanh/cherry + - https://cherry.haishan.me/ + - https://github.com/haishanh/cherry +version: 2.0.8 +annotations: + truecharts.org/catagories: | + - bookmark + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/cherry/2.0.7/README.md b/incubator/cherry/2.0.8/README.md similarity index 100% rename from incubator/cherry/2.0.7/README.md rename to incubator/cherry/2.0.8/README.md diff --git a/incubator/cherry/2.0.8/app-changelog.md b/incubator/cherry/2.0.8/app-changelog.md new file mode 100644 index 00000000000..b0c42fe3890 --- /dev/null +++ b/incubator/cherry/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cherry-2.0.8](https://github.com/truecharts/charts/compare/cherry-2.0.7...cherry-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/cherry/2.0.8/app-readme.md b/incubator/cherry/2.0.8/app-readme.md new file mode 100644 index 00000000000..bdb9143fd13 --- /dev/null +++ b/incubator/cherry/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +An open source self-hosted bookmark service + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/cherry](https://truecharts.org/charts/incubator/cherry) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/chowdown/2.0.7/charts/common-11.1.2.tgz b/incubator/cherry/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/chowdown/2.0.7/charts/common-11.1.2.tgz rename to incubator/cherry/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/cherry/2.0.7/ix_values.yaml b/incubator/cherry/2.0.8/ix_values.yaml similarity index 100% rename from incubator/cherry/2.0.7/ix_values.yaml rename to incubator/cherry/2.0.8/ix_values.yaml diff --git a/incubator/cherry/2.0.8/questions.yaml b/incubator/cherry/2.0.8/questions.yaml new file mode 100644 index 00000000000..80b3747cd11 --- /dev/null +++ b/incubator/cherry/2.0.8/questions.yaml @@ -0,0 +1,1909 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: cherry + group: App Configuration + label: Cherry Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: insecure_cookie + label: Insecure Cookie + schema: + type: boolean + default: false + - variable: public_registration + label: Public Registration + schema: + type: boolean + default: true + - variable: page_bookmark_limit + label: Page Bookmark Limit + schema: + type: int + default: 60 + - variable: google_oauth_uri + label: Google OAuth URI + schema: + type: string + default: "" + - variable: google_oauth_id + label: Google OAuth ID + schema: + type: string + private: true + default: "" + - variable: google_oauth_secret + label: Google OAuth Secret + schema: + type: string + private: true + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10303 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: App Data Storage + description: Stores the Application Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/cherry/2.0.7/templates/_config.tpl b/incubator/cherry/2.0.8/templates/_config.tpl similarity index 100% rename from incubator/cherry/2.0.7/templates/_config.tpl rename to incubator/cherry/2.0.8/templates/_config.tpl diff --git a/incubator/cherry/2.0.7/templates/_secrets.tpl b/incubator/cherry/2.0.8/templates/_secrets.tpl similarity index 100% rename from incubator/cherry/2.0.7/templates/_secrets.tpl rename to incubator/cherry/2.0.8/templates/_secrets.tpl diff --git a/incubator/cherry/2.0.7/templates/common.yaml b/incubator/cherry/2.0.8/templates/common.yaml similarity index 100% rename from incubator/cherry/2.0.7/templates/common.yaml rename to incubator/cherry/2.0.8/templates/common.yaml diff --git a/incubator/chowdown/2.0.7/values.yaml b/incubator/cherry/2.0.8/values.yaml similarity index 100% rename from incubator/chowdown/2.0.7/values.yaml rename to incubator/cherry/2.0.8/values.yaml diff --git a/incubator/chowdown/2.0.7/CHANGELOG.md b/incubator/chowdown/2.0.7/CHANGELOG.md deleted file mode 100644 index 589f3b6f6b3..00000000000 --- a/incubator/chowdown/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [chowdown-2.0.7](https://github.com/truecharts/charts/compare/chowdown-2.0.6...chowdown-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [chowdown-2.0.6](https://github.com/truecharts/charts/compare/chowdown-2.0.5...chowdown-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [chowdown-2.0.5](https://github.com/truecharts/charts/compare/chowdown-2.0.4...chowdown-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [chowdown-2.0.4](https://github.com/truecharts/charts/compare/chowdown-2.0.3...chowdown-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [chowdown-2.0.3](https://github.com/truecharts/charts/compare/chowdown-2.0.2...chowdown-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - - - -## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) - - diff --git a/incubator/chowdown/2.0.7/Chart.yaml b/incubator/chowdown/2.0.7/Chart.yaml deleted file mode 100644 index 39a14f90b62..00000000000 --- a/incubator/chowdown/2.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Simple recipes in Markdown format. -home: https://truecharts.org/charts/incubator/chowdown -icon: https://truecharts.org/img/hotlink-ok/chart-icons/chowdown.png -keywords: - - chowdown - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: chowdown -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/chowdown - - https://hub.docker.com/r/gregyankovoy/chowdown/Dockerfile/ -type: application -version: 2.0.7 diff --git a/incubator/chowdown/2.0.7/app-changelog.md b/incubator/chowdown/2.0.7/app-changelog.md deleted file mode 100644 index 30a021a0155..00000000000 --- a/incubator/chowdown/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [chowdown-2.0.7](https://github.com/truecharts/charts/compare/chowdown-2.0.6...chowdown-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/chowdown/2.0.7/app-readme.md b/incubator/chowdown/2.0.7/app-readme.md deleted file mode 100644 index aefdc8aa786..00000000000 --- a/incubator/chowdown/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Simple recipes in Markdown format. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/chowdown](https://truecharts.org/charts/incubator/chowdown) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/chowdown/2.0.7/questions.yaml b/incubator/chowdown/2.0.7/questions.yaml deleted file mode 100644 index 80e4d55dbb0..00000000000 --- a/incubator/chowdown/2.0.7/questions.yaml +++ /dev/null @@ -1,1828 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 4000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/chowdown/2.0.8/CHANGELOG.md b/incubator/chowdown/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..64c42bd6cf0 --- /dev/null +++ b/incubator/chowdown/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [chowdown-2.0.8](https://github.com/truecharts/charts/compare/chowdown-2.0.7...chowdown-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [chowdown-2.0.7](https://github.com/truecharts/charts/compare/chowdown-2.0.6...chowdown-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [chowdown-2.0.6](https://github.com/truecharts/charts/compare/chowdown-2.0.5...chowdown-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [chowdown-2.0.5](https://github.com/truecharts/charts/compare/chowdown-2.0.4...chowdown-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [chowdown-2.0.4](https://github.com/truecharts/charts/compare/chowdown-2.0.3...chowdown-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [chowdown-2.0.3](https://github.com/truecharts/charts/compare/chowdown-2.0.2...chowdown-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) + + + + +## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) + + + + +## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) + + + + +## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) + + + + +## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) + + + + +## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) + + + + +## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) + + + + +## [chowdown-2.0.2](https://github.com/truecharts/charts/compare/chowdown-2.0.1...chowdown-2.0.2) (2022-11-30) + + + diff --git a/incubator/chowdown/2.0.8/Chart.yaml b/incubator/chowdown/2.0.8/Chart.yaml new file mode 100644 index 00000000000..70416ed64aa --- /dev/null +++ b/incubator/chowdown/2.0.8/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Simple recipes in Markdown format. +home: https://truecharts.org/charts/incubator/chowdown +icon: https://truecharts.org/img/hotlink-ok/chart-icons/chowdown.png +keywords: + - chowdown + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: chowdown +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/chowdown + - https://hub.docker.com/gregyankovoy/chowdown +type: application +version: 2.0.8 diff --git a/incubator/chowdown/2.0.7/README.md b/incubator/chowdown/2.0.8/README.md similarity index 100% rename from incubator/chowdown/2.0.7/README.md rename to incubator/chowdown/2.0.8/README.md diff --git a/incubator/chowdown/2.0.8/app-changelog.md b/incubator/chowdown/2.0.8/app-changelog.md new file mode 100644 index 00000000000..ad64ff9e62b --- /dev/null +++ b/incubator/chowdown/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [chowdown-2.0.8](https://github.com/truecharts/charts/compare/chowdown-2.0.7...chowdown-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/chowdown/2.0.8/app-readme.md b/incubator/chowdown/2.0.8/app-readme.md new file mode 100644 index 00000000000..2c3de692447 --- /dev/null +++ b/incubator/chowdown/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Simple recipes in Markdown format. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/chowdown](https://truecharts.org/charts/incubator/chowdown) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ciao/2.0.10/charts/common-11.1.2.tgz b/incubator/chowdown/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/ciao/2.0.10/charts/common-11.1.2.tgz rename to incubator/chowdown/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/chowdown/2.0.7/ix_values.yaml b/incubator/chowdown/2.0.8/ix_values.yaml similarity index 100% rename from incubator/chowdown/2.0.7/ix_values.yaml rename to incubator/chowdown/2.0.8/ix_values.yaml diff --git a/incubator/chowdown/2.0.8/questions.yaml b/incubator/chowdown/2.0.8/questions.yaml new file mode 100644 index 00000000000..7f50b2753fc --- /dev/null +++ b/incubator/chowdown/2.0.8/questions.yaml @@ -0,0 +1,1869 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 4000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/chowdown/2.0.7/templates/common.yaml b/incubator/chowdown/2.0.8/templates/common.yaml similarity index 100% rename from incubator/chowdown/2.0.7/templates/common.yaml rename to incubator/chowdown/2.0.8/templates/common.yaml diff --git a/incubator/ciao/2.0.10/values.yaml b/incubator/chowdown/2.0.8/values.yaml similarity index 100% rename from incubator/ciao/2.0.10/values.yaml rename to incubator/chowdown/2.0.8/values.yaml diff --git a/incubator/ciao/2.0.10/CHANGELOG.md b/incubator/ciao/2.0.10/CHANGELOG.md deleted file mode 100644 index 7cc4c98f405..00000000000 --- a/incubator/ciao/2.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ciao-2.0.10](https://github.com/truecharts/charts/compare/ciao-2.0.9...ciao-2.0.10) (2023-01-20) - -### Chore - -- update container image tccr.io/truecharts/ciao to latest - - - - -## [ciao-2.0.9](https://github.com/truecharts/charts/compare/ciao-2.0.8...ciao-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [ciao-2.0.8](https://github.com/truecharts/charts/compare/ciao-2.0.7...ciao-2.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [ciao-2.0.7](https://github.com/truecharts/charts/compare/ciao-2.0.6...ciao-2.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [ciao-2.0.6](https://github.com/truecharts/charts/compare/ciao-2.0.5...ciao-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [ciao-2.0.5](https://github.com/truecharts/charts/compare/ciao-2.0.4...ciao-2.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [ciao-2.0.4](https://github.com/truecharts/charts/compare/ciao-2.0.3...ciao-2.0.4) (2022-12-10) - - - - -## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) - - - - -## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) - - - - -## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) - - - - -## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) - - - - -## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) - - - - -## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) - - - - -## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) - - - diff --git a/incubator/ciao/2.0.10/Chart.yaml b/incubator/ciao/2.0.10/Chart.yaml deleted file mode 100644 index e5f0a09b405..00000000000 --- a/incubator/ciao/2.0.10/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Network-Other - - Productivity - - Tools-System -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "ciao checks HTTP(S) URL endpoints for a HTTP status code (or errors on the lower TCP stack) and sends a notification on status change via E-Mail or Webhooks." -home: https://truecharts.org/charts/incubator/ciao -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ciao.png -keywords: - - ciao - - Network-Other - - Productivity - - Tools-System -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ciao -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/ciao - - https://brotandgames.com/ciao/ - - https://hub.docker.com/r/brotandgames/ciao -type: application -version: 2.0.10 diff --git a/incubator/ciao/2.0.10/app-changelog.md b/incubator/ciao/2.0.10/app-changelog.md deleted file mode 100644 index d514e8842d0..00000000000 --- a/incubator/ciao/2.0.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ciao-2.0.10](https://github.com/truecharts/charts/compare/ciao-2.0.9...ciao-2.0.10) (2023-01-20) - -### Chore - -- update container image tccr.io/truecharts/ciao to latest - - \ No newline at end of file diff --git a/incubator/ciao/2.0.10/questions.yaml b/incubator/ciao/2.0.10/questions.yaml deleted file mode 100644 index d8327ebee89..00000000000 --- a/incubator/ciao/2.0.10/questions.yaml +++ /dev/null @@ -1,1896 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: SECRET_KEY_BASE - label: "SECRET_KEY_BASE" - description: "Container Variable SECRETKEYBASE" - schema: - type: string - default: "sensitive_secret_key_base" - - variable: SMTP_ADDRESS - label: "SMTP_ADDRESS" - description: "Container Variable SMTPADDRESS" - schema: - type: string - default: "smtp.yourhost.com" - - variable: SMTP_EMAIL_FROM - label: "SMTP_EMAIL_FROM" - description: "Container Variable SMTPEMAILFROM" - schema: - type: string - default: "ciao@yourhost.com" - - variable: SMTP_EMAIL_TO - label: "SMTP_EMAIL_TO" - description: "Container Variable SMTPEMAILTO" - schema: - type: string - default: "you@yourhost.com" - - variable: SMTP_PORT - label: "SMTP_PORT" - description: "Container Variable SMTPPORT" - schema: - type: string - default: "587" - - variable: SMTP_DOMAIN - label: "SMTP_DOMAIN" - description: "Container Variable SMTPDOMAIN" - schema: - type: string - default: "smtp.yourhost.com" - - variable: SMTP_AUTHENTICATION - label: "SMTP_AUTHENTICATION" - description: "Container Variable SMTPAUTHENTICATION" - schema: - type: string - default: "plain" - - variable: SMTP_ENABLE_STARTTLS_AUTO - label: "SMTP_ENABLE_STARTTLS_AUTO" - description: "Container Variable SMTPENABLESTARTTLSAUTO" - schema: - type: string - default: "true" - - variable: SMTP_USERNAME - label: "SMTP_USERNAME" - description: "Container Variable SMTPUSERNAME" - schema: - type: string - default: "ciao" - - variable: SMTP_PASSWORD - label: "SMTP_PASSWORD" - description: "Container Variable SMTPPASSWORD" - schema: - type: string - default: "sensitive_password" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8090 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: databaselocation - label: "databaselocation Storage" - description: "Container Path appdbsqlite" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/ciao/2.0.11/CHANGELOG.md b/incubator/ciao/2.0.11/CHANGELOG.md new file mode 100644 index 00000000000..b0dab632dd9 --- /dev/null +++ b/incubator/ciao/2.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ciao-2.0.11](https://github.com/truecharts/charts/compare/ciao-2.0.10...ciao-2.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ciao-2.0.10](https://github.com/truecharts/charts/compare/ciao-2.0.9...ciao-2.0.10) (2023-01-20) + +### Chore + +- update container image tccr.io/truecharts/ciao to latest + + + + +## [ciao-2.0.9](https://github.com/truecharts/charts/compare/ciao-2.0.8...ciao-2.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [ciao-2.0.8](https://github.com/truecharts/charts/compare/ciao-2.0.7...ciao-2.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [ciao-2.0.7](https://github.com/truecharts/charts/compare/ciao-2.0.6...ciao-2.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [ciao-2.0.6](https://github.com/truecharts/charts/compare/ciao-2.0.5...ciao-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [ciao-2.0.5](https://github.com/truecharts/charts/compare/ciao-2.0.4...ciao-2.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [ciao-2.0.4](https://github.com/truecharts/charts/compare/ciao-2.0.3...ciao-2.0.4) (2022-12-10) + + + + +## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) + + + + +## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) + + + + +## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) + + + + +## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) + + + + +## [ciao-2.0.3](https://github.com/truecharts/charts/compare/ciao-2.0.2...ciao-2.0.3) (2022-11-30) + + + + diff --git a/incubator/ciao/2.0.11/Chart.yaml b/incubator/ciao/2.0.11/Chart.yaml new file mode 100644 index 00000000000..c74c5af2786 --- /dev/null +++ b/incubator/ciao/2.0.11/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Network-Other + - Productivity + - Tools-System +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "ciao checks HTTP(S) URL endpoints for a HTTP status code (or errors on the lower TCP stack) and sends a notification on status change via E-Mail or Webhooks." +home: https://truecharts.org/charts/incubator/ciao +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ciao.png +keywords: + - ciao + - Network-Other + - Productivity + - Tools-System +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ciao +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/ciao + - https://hub.docker.com/brotandgames/ciao + - https://brotandgames.com/ciao/ +type: application +version: 2.0.11 diff --git a/incubator/ciao/2.0.10/README.md b/incubator/ciao/2.0.11/README.md similarity index 100% rename from incubator/ciao/2.0.10/README.md rename to incubator/ciao/2.0.11/README.md diff --git a/incubator/ciao/2.0.11/app-changelog.md b/incubator/ciao/2.0.11/app-changelog.md new file mode 100644 index 00000000000..f182b399a43 --- /dev/null +++ b/incubator/ciao/2.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ciao-2.0.11](https://github.com/truecharts/charts/compare/ciao-2.0.10...ciao-2.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/ciao/2.0.10/app-readme.md b/incubator/ciao/2.0.11/app-readme.md similarity index 100% rename from incubator/ciao/2.0.10/app-readme.md rename to incubator/ciao/2.0.11/app-readme.md diff --git a/incubator/cleanarr/2.0.8/charts/common-11.1.2.tgz b/incubator/ciao/2.0.11/charts/common-11.1.2.tgz similarity index 100% rename from incubator/cleanarr/2.0.8/charts/common-11.1.2.tgz rename to incubator/ciao/2.0.11/charts/common-11.1.2.tgz diff --git a/incubator/ciao/2.0.10/ix_values.yaml b/incubator/ciao/2.0.11/ix_values.yaml similarity index 100% rename from incubator/ciao/2.0.10/ix_values.yaml rename to incubator/ciao/2.0.11/ix_values.yaml diff --git a/incubator/ciao/2.0.11/questions.yaml b/incubator/ciao/2.0.11/questions.yaml new file mode 100644 index 00000000000..ee938f098e2 --- /dev/null +++ b/incubator/ciao/2.0.11/questions.yaml @@ -0,0 +1,1937 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: SECRET_KEY_BASE + label: "SECRET_KEY_BASE" + description: "Container Variable SECRETKEYBASE" + schema: + type: string + default: "sensitive_secret_key_base" + - variable: SMTP_ADDRESS + label: "SMTP_ADDRESS" + description: "Container Variable SMTPADDRESS" + schema: + type: string + default: "smtp.yourhost.com" + - variable: SMTP_EMAIL_FROM + label: "SMTP_EMAIL_FROM" + description: "Container Variable SMTPEMAILFROM" + schema: + type: string + default: "ciao@yourhost.com" + - variable: SMTP_EMAIL_TO + label: "SMTP_EMAIL_TO" + description: "Container Variable SMTPEMAILTO" + schema: + type: string + default: "you@yourhost.com" + - variable: SMTP_PORT + label: "SMTP_PORT" + description: "Container Variable SMTPPORT" + schema: + type: string + default: "587" + - variable: SMTP_DOMAIN + label: "SMTP_DOMAIN" + description: "Container Variable SMTPDOMAIN" + schema: + type: string + default: "smtp.yourhost.com" + - variable: SMTP_AUTHENTICATION + label: "SMTP_AUTHENTICATION" + description: "Container Variable SMTPAUTHENTICATION" + schema: + type: string + default: "plain" + - variable: SMTP_ENABLE_STARTTLS_AUTO + label: "SMTP_ENABLE_STARTTLS_AUTO" + description: "Container Variable SMTPENABLESTARTTLSAUTO" + schema: + type: string + default: "true" + - variable: SMTP_USERNAME + label: "SMTP_USERNAME" + description: "Container Variable SMTPUSERNAME" + schema: + type: string + default: "ciao" + - variable: SMTP_PASSWORD + label: "SMTP_PASSWORD" + description: "Container Variable SMTPPASSWORD" + schema: + type: string + default: "sensitive_password" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8090 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: databaselocation + label: "databaselocation Storage" + description: "Container Path appdbsqlite" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/ciao/2.0.10/templates/common.yaml b/incubator/ciao/2.0.11/templates/common.yaml similarity index 100% rename from incubator/ciao/2.0.10/templates/common.yaml rename to incubator/ciao/2.0.11/templates/common.yaml diff --git a/incubator/cleanarr/2.0.8/values.yaml b/incubator/ciao/2.0.11/values.yaml similarity index 100% rename from incubator/cleanarr/2.0.8/values.yaml rename to incubator/ciao/2.0.11/values.yaml diff --git a/incubator/cleanarr/2.0.8/CHANGELOG.md b/incubator/cleanarr/2.0.8/CHANGELOG.md deleted file mode 100644 index 2c995954ea3..00000000000 --- a/incubator/cleanarr/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cleanarr-2.0.8](https://github.com/truecharts/charts/compare/cleanarr-2.0.7...cleanarr-2.0.8) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/cleanarr to v2.1.4 - - - - -## [cleanarr-2.0.7](https://github.com/truecharts/charts/compare/cleanarr-2.0.6...cleanarr-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cleanarr-2.0.6](https://github.com/truecharts/charts/compare/cleanarr-2.0.5...cleanarr-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cleanarr-2.0.5](https://github.com/truecharts/charts/compare/cleanarr-2.0.4...cleanarr-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cleanarr-2.0.4](https://github.com/truecharts/charts/compare/cleanarr-2.0.3...cleanarr-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cleanarr-2.0.3](https://github.com/truecharts/charts/compare/cleanarr-2.0.2...cleanarr-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) - - - - -## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) - - - - -## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) - - - - -## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) - - - - -## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) - - - - -## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) - - - - -## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) - - - - -## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) - - - diff --git a/incubator/cleanarr/2.0.8/Chart.yaml b/incubator/cleanarr/2.0.8/Chart.yaml deleted file mode 100644 index 75dd71ee09b..00000000000 --- a/incubator/cleanarr/2.0.8/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "2.1.4" -version: 2.0.8 -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A simple UI to help find and delete duplicate and sample files from your Plex server. -home: https://truecharts.org/charts/incubator/cleanarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cleanarr.png -keywords: - - cleanarr -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cleanarr -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/cleanarr - - https://github.com/se1exin/cleanarr - - https://hub.docker.com/r/selexin/cleanarr/ -type: application -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Media diff --git a/incubator/cleanarr/2.0.8/app-changelog.md b/incubator/cleanarr/2.0.8/app-changelog.md deleted file mode 100644 index 618514d0f5b..00000000000 --- a/incubator/cleanarr/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cleanarr-2.0.8](https://github.com/truecharts/charts/compare/cleanarr-2.0.7...cleanarr-2.0.8) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/cleanarr to v2.1.4 - - \ No newline at end of file diff --git a/incubator/cleanarr/2.0.8/questions.yaml b/incubator/cleanarr/2.0.8/questions.yaml deleted file mode 100644 index 6e931c9ad33..00000000000 --- a/incubator/cleanarr/2.0.8/questions.yaml +++ /dev/null @@ -1,1867 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PLEX_BASE_URL - label: "PLEX_BASE_URL" - description: "Plex Server Address (e.g. http://192.169.1.100:32400)" - schema: - type: string - default: "" - - variable: PLEX_TOKEN - label: "PLEX_TOKEN" - description: "A valid Plex token for your Plex Server " - schema: - type: string - private: true - default: "" - - variable: LIBRARY_NAMES - label: "LIBRARY_NAMES" - description: "Name(s) of your Plex Libraries to search. Separate multiple library names with semi-colon *;*" - schema: - type: string - default: "" - - variable: PAGE_SIZE - label: "PAGE_SIZE" - description: "To avoid plex timeouts, results are loaded in pages (or chunks)" - schema: - type: int - default: 50 - - variable: BYPASS_SSL_VERIFY_BOOL - label: "BYPASS_SSL_VERIFY" - description: "Disable SSL certificate verification." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10247 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Container Path frontend" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/cleanarr/2.0.9/CHANGELOG.md b/incubator/cleanarr/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..4994eb9df3e --- /dev/null +++ b/incubator/cleanarr/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cleanarr-2.0.9](https://github.com/truecharts/charts/compare/cleanarr-2.0.8...cleanarr-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cleanarr-2.0.8](https://github.com/truecharts/charts/compare/cleanarr-2.0.7...cleanarr-2.0.8) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/cleanarr to v2.1.4 + + + + +## [cleanarr-2.0.7](https://github.com/truecharts/charts/compare/cleanarr-2.0.6...cleanarr-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cleanarr-2.0.6](https://github.com/truecharts/charts/compare/cleanarr-2.0.5...cleanarr-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cleanarr-2.0.5](https://github.com/truecharts/charts/compare/cleanarr-2.0.4...cleanarr-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cleanarr-2.0.4](https://github.com/truecharts/charts/compare/cleanarr-2.0.3...cleanarr-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cleanarr-2.0.3](https://github.com/truecharts/charts/compare/cleanarr-2.0.2...cleanarr-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) + + + + +## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) + + + + +## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) + + + + +## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) + + + + +## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) + + + + +## [cleanarr-2.0.2](https://github.com/truecharts/charts/compare/cleanarr-2.0.1...cleanarr-2.0.2) (2022-11-30) + + + + diff --git a/incubator/cleanarr/2.0.9/Chart.yaml b/incubator/cleanarr/2.0.9/Chart.yaml new file mode 100644 index 00000000000..7c0a8735db6 --- /dev/null +++ b/incubator/cleanarr/2.0.9/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "2.1.4" +version: 2.0.9 +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A simple UI to help find and delete duplicate and sample files from your Plex server. +home: https://truecharts.org/charts/incubator/cleanarr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cleanarr.png +keywords: + - cleanarr +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cleanarr +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/cleanarr + - https://hub.docker.com/selexin/cleanarr + - https://github.com/se1exin/cleanarr +type: application +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Media diff --git a/incubator/cleanarr/2.0.8/README.md b/incubator/cleanarr/2.0.9/README.md similarity index 100% rename from incubator/cleanarr/2.0.8/README.md rename to incubator/cleanarr/2.0.9/README.md diff --git a/incubator/cleanarr/2.0.9/app-changelog.md b/incubator/cleanarr/2.0.9/app-changelog.md new file mode 100644 index 00000000000..d78c1c5b829 --- /dev/null +++ b/incubator/cleanarr/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cleanarr-2.0.9](https://github.com/truecharts/charts/compare/cleanarr-2.0.8...cleanarr-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/cleanarr/2.0.8/app-readme.md b/incubator/cleanarr/2.0.9/app-readme.md similarity index 100% rename from incubator/cleanarr/2.0.8/app-readme.md rename to incubator/cleanarr/2.0.9/app-readme.md diff --git a/incubator/clipplex/0.0.4/charts/common-11.1.2.tgz b/incubator/cleanarr/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/clipplex/0.0.4/charts/common-11.1.2.tgz rename to incubator/cleanarr/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/cleanarr/2.0.8/ix_values.yaml b/incubator/cleanarr/2.0.9/ix_values.yaml similarity index 100% rename from incubator/cleanarr/2.0.8/ix_values.yaml rename to incubator/cleanarr/2.0.9/ix_values.yaml diff --git a/incubator/cleanarr/2.0.9/questions.yaml b/incubator/cleanarr/2.0.9/questions.yaml new file mode 100644 index 00000000000..e9e5d7d59b2 --- /dev/null +++ b/incubator/cleanarr/2.0.9/questions.yaml @@ -0,0 +1,1908 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PLEX_BASE_URL + label: "PLEX_BASE_URL" + description: "Plex Server Address (e.g. http://192.169.1.100:32400)" + schema: + type: string + default: "" + - variable: PLEX_TOKEN + label: "PLEX_TOKEN" + description: "A valid Plex token for your Plex Server " + schema: + type: string + private: true + default: "" + - variable: LIBRARY_NAMES + label: "LIBRARY_NAMES" + description: "Name(s) of your Plex Libraries to search. Separate multiple library names with semi-colon *;*" + schema: + type: string + default: "" + - variable: PAGE_SIZE + label: "PAGE_SIZE" + description: "To avoid plex timeouts, results are loaded in pages (or chunks)" + schema: + type: int + default: 50 + - variable: BYPASS_SSL_VERIFY_BOOL + label: "BYPASS_SSL_VERIFY" + description: "Disable SSL certificate verification." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10247 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "Container Path frontend" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/cleanarr/2.0.8/templates/common.yaml b/incubator/cleanarr/2.0.9/templates/common.yaml similarity index 100% rename from incubator/cleanarr/2.0.8/templates/common.yaml rename to incubator/cleanarr/2.0.9/templates/common.yaml diff --git a/incubator/clipplex/0.0.4/values.yaml b/incubator/cleanarr/2.0.9/values.yaml similarity index 100% rename from incubator/clipplex/0.0.4/values.yaml rename to incubator/cleanarr/2.0.9/values.yaml diff --git a/incubator/clipplex/0.0.4/CHANGELOG.md b/incubator/clipplex/0.0.4/CHANGELOG.md deleted file mode 100644 index 192656dca29..00000000000 --- a/incubator/clipplex/0.0.4/CHANGELOG.md +++ /dev/null @@ -1,35 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [clipplex-0.0.4](https://github.com/truecharts/charts/compare/clipplex-0.0.3...clipplex-0.0.4) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [clipplex-0.0.3](https://github.com/truecharts/charts/compare/clipplex-0.0.2...clipplex-0.0.3) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [clipplex-0.0.2](https://github.com/truecharts/charts/compare/clipplex-0.0.1...clipplex-0.0.2) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [clipplex-0.0.1]clipplex-0.0.1 (2022-12-25) - diff --git a/incubator/clipplex/0.0.4/Chart.yaml b/incubator/clipplex/0.0.4/Chart.yaml deleted file mode 100644 index 5633890fb21..00000000000 --- a/incubator/clipplex/0.0.4/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Clip your plex media to share. -home: https://truecharts.org/charts/incubator/clipplex -icon: https://truecharts.org/img/hotlink-ok/chart-icons/clipplex.png -keywords: - - clipplex - - media -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: clipplex -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/clipplex - - https://github.com/jo-nike/clipplex -type: application -version: 0.0.4 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/clipplex/0.0.4/app-changelog.md b/incubator/clipplex/0.0.4/app-changelog.md deleted file mode 100644 index 99e6a7c3537..00000000000 --- a/incubator/clipplex/0.0.4/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [clipplex-0.0.4](https://github.com/truecharts/charts/compare/clipplex-0.0.3...clipplex-0.0.4) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/clipplex/0.0.4/app-readme.md b/incubator/clipplex/0.0.4/app-readme.md deleted file mode 100644 index f4685e76456..00000000000 --- a/incubator/clipplex/0.0.4/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Clip your plex media to share. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/clipplex](https://truecharts.org/charts/incubator/clipplex) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/clipplex/0.0.4/questions.yaml b/incubator/clipplex/0.0.4/questions.yaml deleted file mode 100644 index 8e1922ceddd..00000000000 --- a/incubator/clipplex/0.0.4/questions.yaml +++ /dev/null @@ -1,1870 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PLEX_TOKEN - label: "Plex Token" - schema: - type: string - required: true - private: true - default: "" - - variable: STREAMABLE_LOGIN - label: "Streamable Login" - description: "Optionally set the streamable login" - schema: - type: string - default: "" - - variable: STREAMABLE_PASSWORD - label: "Streamable Password" - description: "Optionally streamable Password" - schema: - type: string - private: true - default: "" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PLEX_URL - label: "Plex URL" - schema: - type: string - required: true - default: "" - - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10602 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: clips - label: App Clips Storage - description: Stores the Application Clips. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/clipplex/0.0.5/CHANGELOG.md b/incubator/clipplex/0.0.5/CHANGELOG.md new file mode 100644 index 00000000000..c686291317b --- /dev/null +++ b/incubator/clipplex/0.0.5/CHANGELOG.md @@ -0,0 +1,44 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [clipplex-0.0.5](https://github.com/truecharts/charts/compare/clipplex-0.0.4...clipplex-0.0.5) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [clipplex-0.0.4](https://github.com/truecharts/charts/compare/clipplex-0.0.3...clipplex-0.0.4) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [clipplex-0.0.3](https://github.com/truecharts/charts/compare/clipplex-0.0.2...clipplex-0.0.3) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [clipplex-0.0.2](https://github.com/truecharts/charts/compare/clipplex-0.0.1...clipplex-0.0.2) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [clipplex-0.0.1]clipplex-0.0.1 (2022-12-25) + diff --git a/incubator/clipplex/0.0.5/Chart.yaml b/incubator/clipplex/0.0.5/Chart.yaml new file mode 100644 index 00000000000..20033c4588f --- /dev/null +++ b/incubator/clipplex/0.0.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Clip your plex media to share. +home: https://truecharts.org/charts/incubator/clipplex +icon: https://truecharts.org/img/hotlink-ok/chart-icons/clipplex.png +keywords: + - clipplex + - media +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: clipplex +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/clipplex + - https://hub.docker.com/jonnike/clipplex + - https://github.com/jo-nike/clipplex +type: application +version: 0.0.5 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/clipplex/0.0.4/README.md b/incubator/clipplex/0.0.5/README.md similarity index 100% rename from incubator/clipplex/0.0.4/README.md rename to incubator/clipplex/0.0.5/README.md diff --git a/incubator/clipplex/0.0.5/app-changelog.md b/incubator/clipplex/0.0.5/app-changelog.md new file mode 100644 index 00000000000..2b920939dc1 --- /dev/null +++ b/incubator/clipplex/0.0.5/app-changelog.md @@ -0,0 +1,9 @@ + + +## [clipplex-0.0.5](https://github.com/truecharts/charts/compare/clipplex-0.0.4...clipplex-0.0.5) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/clipplex/0.0.5/app-readme.md b/incubator/clipplex/0.0.5/app-readme.md new file mode 100644 index 00000000000..5cc5350be6f --- /dev/null +++ b/incubator/clipplex/0.0.5/app-readme.md @@ -0,0 +1,8 @@ +Clip your plex media to share. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/clipplex](https://truecharts.org/charts/incubator/clipplex) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/cloudbeaver/2.0.12/charts/common-11.1.2.tgz b/incubator/clipplex/0.0.5/charts/common-11.1.2.tgz similarity index 100% rename from incubator/cloudbeaver/2.0.12/charts/common-11.1.2.tgz rename to incubator/clipplex/0.0.5/charts/common-11.1.2.tgz diff --git a/incubator/clipplex/0.0.4/ix_values.yaml b/incubator/clipplex/0.0.5/ix_values.yaml similarity index 100% rename from incubator/clipplex/0.0.4/ix_values.yaml rename to incubator/clipplex/0.0.5/ix_values.yaml diff --git a/incubator/clipplex/0.0.5/questions.yaml b/incubator/clipplex/0.0.5/questions.yaml new file mode 100644 index 00000000000..4a49f5c6738 --- /dev/null +++ b/incubator/clipplex/0.0.5/questions.yaml @@ -0,0 +1,1911 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PLEX_TOKEN + label: "Plex Token" + schema: + type: string + required: true + private: true + default: "" + - variable: STREAMABLE_LOGIN + label: "Streamable Login" + description: "Optionally set the streamable login" + schema: + type: string + default: "" + - variable: STREAMABLE_PASSWORD + label: "Streamable Password" + description: "Optionally streamable Password" + schema: + type: string + private: true + default: "" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PLEX_URL + label: "Plex URL" + schema: + type: string + required: true + default: "" + + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10602 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: clips + label: App Clips Storage + description: Stores the Application Clips. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/clipplex/0.0.4/templates/common.yaml b/incubator/clipplex/0.0.5/templates/common.yaml similarity index 100% rename from incubator/clipplex/0.0.4/templates/common.yaml rename to incubator/clipplex/0.0.5/templates/common.yaml diff --git a/incubator/cloudbeaver/2.0.12/values.yaml b/incubator/clipplex/0.0.5/values.yaml similarity index 100% rename from incubator/cloudbeaver/2.0.12/values.yaml rename to incubator/clipplex/0.0.5/values.yaml diff --git a/incubator/cloudbeaver/2.0.12/CHANGELOG.md b/incubator/cloudbeaver/2.0.12/CHANGELOG.md deleted file mode 100644 index 63f4a7a09fb..00000000000 --- a/incubator/cloudbeaver/2.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cloudbeaver-2.0.12](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.11...cloudbeaver-2.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/cloudbeaver to latest - - - - -## [cloudbeaver-2.0.11](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.10...cloudbeaver-2.0.11) (2023-01-13) - -### Chore - -- update container image tccr.io/truecharts/cloudbeaver to latest - - - - -## [cloudbeaver-2.0.10](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.9...cloudbeaver-2.0.10) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/cloudbeaver to latest - - - - -## [cloudbeaver-2.0.9](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.8...cloudbeaver-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cloudbeaver-2.0.8](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.7...cloudbeaver-2.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cloudbeaver-2.0.7](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.6...cloudbeaver-2.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cloudbeaver-2.0.6](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.5...cloudbeaver-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cloudbeaver-2.0.5](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.4...cloudbeaver-2.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cloudbeaver-2.0.4](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.3...cloudbeaver-2.0.4) (2022-12-07) - - - - -## [cloudbeaver-2.0.3](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.2...cloudbeaver-2.0.3) (2022-11-30) - - - - -## [cloudbeaver-2.0.3](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.2...cloudbeaver-2.0.3) (2022-11-30) - - - - -## [cloudbeaver-2.0.3](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.2...cloudbeaver-2.0.3) (2022-11-30) - - - - -## [cloudbeaver-2.0.3](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.2...cloudbeaver-2.0.3) (2022-11-30) diff --git a/incubator/cloudbeaver/2.0.12/Chart.yaml b/incubator/cloudbeaver/2.0.12/Chart.yaml deleted file mode 100644 index 0e68e74e61d..00000000000 --- a/incubator/cloudbeaver/2.0.12/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Cloud Database Manager (Official Chart)" -home: https://truecharts.org/charts/incubator/cloudbeaver -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cloudbeaver.png -keywords: - - cloudbeaver - - Cloud - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cloudbeaver -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/cloudbeaver - - https://github.com/dbeaver/cloudbeaver - - https://hub.docker.com/r/dbeaver/cloudbeaver/ -type: application -version: 2.0.12 diff --git a/incubator/cloudbeaver/2.0.12/app-changelog.md b/incubator/cloudbeaver/2.0.12/app-changelog.md deleted file mode 100644 index 9a8ac1c6258..00000000000 --- a/incubator/cloudbeaver/2.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cloudbeaver-2.0.12](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.11...cloudbeaver-2.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/cloudbeaver to latest - - \ No newline at end of file diff --git a/incubator/cloudbeaver/2.0.13/CHANGELOG.md b/incubator/cloudbeaver/2.0.13/CHANGELOG.md new file mode 100644 index 00000000000..857fe920186 --- /dev/null +++ b/incubator/cloudbeaver/2.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cloudbeaver-2.0.13](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.12...cloudbeaver-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cloudbeaver-2.0.12](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.11...cloudbeaver-2.0.12) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/cloudbeaver to latest + + + + +## [cloudbeaver-2.0.11](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.10...cloudbeaver-2.0.11) (2023-01-13) + +### Chore + +- update container image tccr.io/truecharts/cloudbeaver to latest + + + + +## [cloudbeaver-2.0.10](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.9...cloudbeaver-2.0.10) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/cloudbeaver to latest + + + + +## [cloudbeaver-2.0.9](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.8...cloudbeaver-2.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cloudbeaver-2.0.8](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.7...cloudbeaver-2.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cloudbeaver-2.0.7](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.6...cloudbeaver-2.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cloudbeaver-2.0.6](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.5...cloudbeaver-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cloudbeaver-2.0.5](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.4...cloudbeaver-2.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [cloudbeaver-2.0.4](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.3...cloudbeaver-2.0.4) (2022-12-07) + + + + +## [cloudbeaver-2.0.3](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.2...cloudbeaver-2.0.3) (2022-11-30) + + + + +## [cloudbeaver-2.0.3](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.2...cloudbeaver-2.0.3) (2022-11-30) + diff --git a/incubator/cloudbeaver/2.0.13/Chart.yaml b/incubator/cloudbeaver/2.0.13/Chart.yaml new file mode 100644 index 00000000000..276e7d889c1 --- /dev/null +++ b/incubator/cloudbeaver/2.0.13/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Cloud Database Manager (Official Chart)" +home: https://truecharts.org/charts/incubator/cloudbeaver +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cloudbeaver.png +keywords: + - cloudbeaver + - Cloud + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cloudbeaver +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/cloudbeaver + - https://hub.docker.com/dbeaver/cloudbeaver + - https://github.com/dbeaver/cloudbeaver +type: application +version: 2.0.13 diff --git a/incubator/cloudbeaver/2.0.12/README.md b/incubator/cloudbeaver/2.0.13/README.md similarity index 100% rename from incubator/cloudbeaver/2.0.12/README.md rename to incubator/cloudbeaver/2.0.13/README.md diff --git a/incubator/cloudbeaver/2.0.13/app-changelog.md b/incubator/cloudbeaver/2.0.13/app-changelog.md new file mode 100644 index 00000000000..12dd3e68dd5 --- /dev/null +++ b/incubator/cloudbeaver/2.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cloudbeaver-2.0.13](https://github.com/truecharts/charts/compare/cloudbeaver-2.0.12...cloudbeaver-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/cloudbeaver/2.0.12/app-readme.md b/incubator/cloudbeaver/2.0.13/app-readme.md similarity index 100% rename from incubator/cloudbeaver/2.0.12/app-readme.md rename to incubator/cloudbeaver/2.0.13/app-readme.md diff --git a/incubator/cloudcommander/2.0.9/charts/common-11.1.2.tgz b/incubator/cloudbeaver/2.0.13/charts/common-11.1.2.tgz similarity index 100% rename from incubator/cloudcommander/2.0.9/charts/common-11.1.2.tgz rename to incubator/cloudbeaver/2.0.13/charts/common-11.1.2.tgz diff --git a/incubator/cloudbeaver/2.0.12/ix_values.yaml b/incubator/cloudbeaver/2.0.13/ix_values.yaml similarity index 100% rename from incubator/cloudbeaver/2.0.12/ix_values.yaml rename to incubator/cloudbeaver/2.0.13/ix_values.yaml diff --git a/incubator/cloudbeaver/2.0.12/questions.yaml b/incubator/cloudbeaver/2.0.13/questions.yaml similarity index 100% rename from incubator/cloudbeaver/2.0.12/questions.yaml rename to incubator/cloudbeaver/2.0.13/questions.yaml diff --git a/incubator/cloudbeaver/2.0.12/templates/common.yaml b/incubator/cloudbeaver/2.0.13/templates/common.yaml similarity index 100% rename from incubator/cloudbeaver/2.0.12/templates/common.yaml rename to incubator/cloudbeaver/2.0.13/templates/common.yaml diff --git a/incubator/cloudcommander/2.0.9/values.yaml b/incubator/cloudbeaver/2.0.13/values.yaml similarity index 100% rename from incubator/cloudcommander/2.0.9/values.yaml rename to incubator/cloudbeaver/2.0.13/values.yaml diff --git a/incubator/cloudcommander/2.0.10/CHANGELOG.md b/incubator/cloudcommander/2.0.10/CHANGELOG.md new file mode 100644 index 00000000000..cbfac693d03 --- /dev/null +++ b/incubator/cloudcommander/2.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cloudcommander-2.0.10](https://github.com/truecharts/charts/compare/cloudcommander-2.0.9...cloudcommander-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cloudcommander-2.0.9](https://github.com/truecharts/charts/compare/cloudcommander-2.0.8...cloudcommander-2.0.9) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/cloudcommander to latest + + + + +## [cloudcommander-2.0.8](https://github.com/truecharts/charts/compare/cloudcommander-2.0.7...cloudcommander-2.0.8) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/cloudcommander to latest + + + + +## [cloudcommander-2.0.7](https://github.com/truecharts/charts/compare/cloudcommander-2.0.6...cloudcommander-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cloudcommander-2.0.6](https://github.com/truecharts/charts/compare/cloudcommander-2.0.5...cloudcommander-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cloudcommander-2.0.5](https://github.com/truecharts/charts/compare/cloudcommander-2.0.4...cloudcommander-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cloudcommander-2.0.4](https://github.com/truecharts/charts/compare/cloudcommander-2.0.3...cloudcommander-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cloudcommander-2.0.3](https://github.com/truecharts/charts/compare/cloudcommander-2.0.2...cloudcommander-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) + + + + +## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) + + + + +## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) + + + + +## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) + + + + +## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) diff --git a/incubator/cloudcommander/2.0.10/Chart.yaml b/incubator/cloudcommander/2.0.10/Chart.yaml new file mode 100644 index 00000000000..0758f3b5de1 --- /dev/null +++ b/incubator/cloudcommander/2.0.10/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "[b]CloudCommander[/b] is a simple web file browser with a built in text editor and archive compress/extract abilities.[br/]\n" +home: https://truecharts.org/charts/incubator/cloudcommander +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cloudcommander.png +keywords: + - cloudcommander + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cloudcommander +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/cloudcommander + - https://hub.docker.com/coderaiser/cloudcmd +type: application +version: 2.0.10 diff --git a/incubator/cloudcommander/2.0.9/README.md b/incubator/cloudcommander/2.0.10/README.md similarity index 100% rename from incubator/cloudcommander/2.0.9/README.md rename to incubator/cloudcommander/2.0.10/README.md diff --git a/incubator/cloudcommander/2.0.10/app-changelog.md b/incubator/cloudcommander/2.0.10/app-changelog.md new file mode 100644 index 00000000000..02f7d6ca91f --- /dev/null +++ b/incubator/cloudcommander/2.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cloudcommander-2.0.10](https://github.com/truecharts/charts/compare/cloudcommander-2.0.9...cloudcommander-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/cloudcommander/2.0.9/app-readme.md b/incubator/cloudcommander/2.0.10/app-readme.md similarity index 100% rename from incubator/cloudcommander/2.0.9/app-readme.md rename to incubator/cloudcommander/2.0.10/app-readme.md diff --git a/incubator/cloudreve/2.0.7/charts/common-11.1.2.tgz b/incubator/cloudcommander/2.0.10/charts/common-11.1.2.tgz similarity index 100% rename from incubator/cloudreve/2.0.7/charts/common-11.1.2.tgz rename to incubator/cloudcommander/2.0.10/charts/common-11.1.2.tgz diff --git a/incubator/cloudcommander/2.0.9/ix_values.yaml b/incubator/cloudcommander/2.0.10/ix_values.yaml similarity index 100% rename from incubator/cloudcommander/2.0.9/ix_values.yaml rename to incubator/cloudcommander/2.0.10/ix_values.yaml diff --git a/incubator/cloudcommander/2.0.9/questions.yaml b/incubator/cloudcommander/2.0.10/questions.yaml similarity index 100% rename from incubator/cloudcommander/2.0.9/questions.yaml rename to incubator/cloudcommander/2.0.10/questions.yaml diff --git a/incubator/cloudcommander/2.0.9/templates/common.yaml b/incubator/cloudcommander/2.0.10/templates/common.yaml similarity index 100% rename from incubator/cloudcommander/2.0.9/templates/common.yaml rename to incubator/cloudcommander/2.0.10/templates/common.yaml diff --git a/incubator/cloudreve/2.0.7/values.yaml b/incubator/cloudcommander/2.0.10/values.yaml similarity index 100% rename from incubator/cloudreve/2.0.7/values.yaml rename to incubator/cloudcommander/2.0.10/values.yaml diff --git a/incubator/cloudcommander/2.0.9/CHANGELOG.md b/incubator/cloudcommander/2.0.9/CHANGELOG.md deleted file mode 100644 index 46873133fdb..00000000000 --- a/incubator/cloudcommander/2.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cloudcommander-2.0.9](https://github.com/truecharts/charts/compare/cloudcommander-2.0.8...cloudcommander-2.0.9) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/cloudcommander to latest - - - - -## [cloudcommander-2.0.8](https://github.com/truecharts/charts/compare/cloudcommander-2.0.7...cloudcommander-2.0.8) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/cloudcommander to latest - - - - -## [cloudcommander-2.0.7](https://github.com/truecharts/charts/compare/cloudcommander-2.0.6...cloudcommander-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cloudcommander-2.0.6](https://github.com/truecharts/charts/compare/cloudcommander-2.0.5...cloudcommander-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cloudcommander-2.0.5](https://github.com/truecharts/charts/compare/cloudcommander-2.0.4...cloudcommander-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cloudcommander-2.0.4](https://github.com/truecharts/charts/compare/cloudcommander-2.0.3...cloudcommander-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cloudcommander-2.0.3](https://github.com/truecharts/charts/compare/cloudcommander-2.0.2...cloudcommander-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) - - - - -## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) - - - - -## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) - - - - -## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) - - - - -## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) - - - - -## [cloudcommander-2.0.2](https://github.com/truecharts/charts/compare/cloudcommander-2.0.1...cloudcommander-2.0.2) (2022-11-30) - - - - diff --git a/incubator/cloudcommander/2.0.9/Chart.yaml b/incubator/cloudcommander/2.0.9/Chart.yaml deleted file mode 100644 index ea322195565..00000000000 --- a/incubator/cloudcommander/2.0.9/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "[b]CloudCommander[/b] is a simple web file browser with a built in text editor and archive compress/extract abilities.[br/]\n" -home: https://truecharts.org/charts/incubator/cloudcommander -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cloudcommander.png -keywords: - - cloudcommander - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cloudcommander -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/cloudcommander - - https://hub.docker.com/r/coderaiser/cloudcmd/ -type: application -version: 2.0.9 diff --git a/incubator/cloudcommander/2.0.9/app-changelog.md b/incubator/cloudcommander/2.0.9/app-changelog.md deleted file mode 100644 index 2bf01eac50b..00000000000 --- a/incubator/cloudcommander/2.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cloudcommander-2.0.9](https://github.com/truecharts/charts/compare/cloudcommander-2.0.8...cloudcommander-2.0.9) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/cloudcommander to latest - - \ No newline at end of file diff --git a/incubator/cloudreve/2.0.7/CHANGELOG.md b/incubator/cloudreve/2.0.7/CHANGELOG.md deleted file mode 100644 index 3c759406350..00000000000 --- a/incubator/cloudreve/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cloudreve-2.0.7](https://github.com/truecharts/charts/compare/cloudreve-2.0.6...cloudreve-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cloudreve-2.0.6](https://github.com/truecharts/charts/compare/cloudreve-2.0.5...cloudreve-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cloudreve-2.0.5](https://github.com/truecharts/charts/compare/cloudreve-2.0.4...cloudreve-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cloudreve-2.0.4](https://github.com/truecharts/charts/compare/cloudreve-2.0.3...cloudreve-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cloudreve-2.0.3](https://github.com/truecharts/charts/compare/cloudreve-2.0.2...cloudreve-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - - - -## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) - - diff --git a/incubator/cloudreve/2.0.7/Chart.yaml b/incubator/cloudreve/2.0.7/Chart.yaml deleted file mode 100644 index 38db5c8923e..00000000000 --- a/incubator/cloudreve/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Network-Web -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Self-hosted file management and sharing system, supports multiple storage providers" -home: https://truecharts.org/charts/incubator/cloudreve -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cloudreve.png -keywords: - - cloudreve - - Cloud - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cloudreve -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/cloudreve - - https://github.com/cloudreve/Cloudreve - - https://hub.docker.com/r/xavierniu/cloudreve -type: application -version: 2.0.7 diff --git a/incubator/cloudreve/2.0.7/app-changelog.md b/incubator/cloudreve/2.0.7/app-changelog.md deleted file mode 100644 index 0ca0745f634..00000000000 --- a/incubator/cloudreve/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cloudreve-2.0.7](https://github.com/truecharts/charts/compare/cloudreve-2.0.6...cloudreve-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/cloudreve/2.0.7/app-readme.md b/incubator/cloudreve/2.0.7/app-readme.md deleted file mode 100644 index 1f9025706b8..00000000000 --- a/incubator/cloudreve/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Self-hosted file management and sharing system, supports multiple storage providers - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/cloudreve](https://truecharts.org/charts/incubator/cloudreve) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/cloudreve/2.0.7/questions.yaml b/incubator/cloudreve/2.0.7/questions.yaml deleted file mode 100644 index b8070bb0a2b..00000000000 --- a/incubator/cloudreve/2.0.7/questions.yaml +++ /dev/null @@ -1,2039 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5212 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: uploadpath - label: "uploadpath Storage" - description: "Container Path cloudreveuploads" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: databasepath - label: "databasepath Storage" - description: "Container Path cloudrevedb" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: avatarpath - label: "avatarpath Storage" - description: "Container Path cloudreveavatar" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: config - label: "config Storage" - description: "Container Path cloudreveconfig" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/cloudreve/2.0.8/CHANGELOG.md b/incubator/cloudreve/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..119b7239cba --- /dev/null +++ b/incubator/cloudreve/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cloudreve-2.0.8](https://github.com/truecharts/charts/compare/cloudreve-2.0.7...cloudreve-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cloudreve-2.0.7](https://github.com/truecharts/charts/compare/cloudreve-2.0.6...cloudreve-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cloudreve-2.0.6](https://github.com/truecharts/charts/compare/cloudreve-2.0.5...cloudreve-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cloudreve-2.0.5](https://github.com/truecharts/charts/compare/cloudreve-2.0.4...cloudreve-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cloudreve-2.0.4](https://github.com/truecharts/charts/compare/cloudreve-2.0.3...cloudreve-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cloudreve-2.0.3](https://github.com/truecharts/charts/compare/cloudreve-2.0.2...cloudreve-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) + + + + +## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) + + + + +## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) + + + + +## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) + + + + +## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) + + + + +## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) + + + + +## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) + + + + +## [cloudreve-2.0.2](https://github.com/truecharts/charts/compare/cloudreve-2.0.1...cloudreve-2.0.2) (2022-11-30) + + + diff --git a/incubator/cloudreve/2.0.8/Chart.yaml b/incubator/cloudreve/2.0.8/Chart.yaml new file mode 100644 index 00000000000..f467ffcc401 --- /dev/null +++ b/incubator/cloudreve/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Self-hosted file management and sharing system, supports multiple storage providers" +home: https://truecharts.org/charts/incubator/cloudreve +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cloudreve.png +keywords: + - cloudreve + - Cloud + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cloudreve +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/cloudreve + - https://hub.docker.com/xavierniu/cloudreve + - https://github.com/cloudreve/Cloudreve +type: application +version: 2.0.8 diff --git a/incubator/cloudreve/2.0.7/README.md b/incubator/cloudreve/2.0.8/README.md similarity index 100% rename from incubator/cloudreve/2.0.7/README.md rename to incubator/cloudreve/2.0.8/README.md diff --git a/incubator/cloudreve/2.0.8/app-changelog.md b/incubator/cloudreve/2.0.8/app-changelog.md new file mode 100644 index 00000000000..d48809ddaa0 --- /dev/null +++ b/incubator/cloudreve/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cloudreve-2.0.8](https://github.com/truecharts/charts/compare/cloudreve-2.0.7...cloudreve-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/cloudreve/2.0.8/app-readme.md b/incubator/cloudreve/2.0.8/app-readme.md new file mode 100644 index 00000000000..001ddbaafe7 --- /dev/null +++ b/incubator/cloudreve/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Self-hosted file management and sharing system, supports multiple storage providers + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/cloudreve](https://truecharts.org/charts/incubator/cloudreve) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/convos/2.0.8/charts/common-11.1.2.tgz b/incubator/cloudreve/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/convos/2.0.8/charts/common-11.1.2.tgz rename to incubator/cloudreve/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/cloudreve/2.0.7/ix_values.yaml b/incubator/cloudreve/2.0.8/ix_values.yaml similarity index 100% rename from incubator/cloudreve/2.0.7/ix_values.yaml rename to incubator/cloudreve/2.0.8/ix_values.yaml diff --git a/incubator/cloudreve/2.0.8/questions.yaml b/incubator/cloudreve/2.0.8/questions.yaml new file mode 100644 index 00000000000..d682509d442 --- /dev/null +++ b/incubator/cloudreve/2.0.8/questions.yaml @@ -0,0 +1,2080 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5212 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: uploadpath + label: "uploadpath Storage" + description: "Container Path cloudreveuploads" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: databasepath + label: "databasepath Storage" + description: "Container Path cloudrevedb" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: avatarpath + label: "avatarpath Storage" + description: "Container Path cloudreveavatar" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: config + label: "config Storage" + description: "Container Path cloudreveconfig" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/cloudreve/2.0.7/templates/common.yaml b/incubator/cloudreve/2.0.8/templates/common.yaml similarity index 100% rename from incubator/cloudreve/2.0.7/templates/common.yaml rename to incubator/cloudreve/2.0.8/templates/common.yaml diff --git a/incubator/convos/2.0.8/values.yaml b/incubator/cloudreve/2.0.8/values.yaml similarity index 100% rename from incubator/convos/2.0.8/values.yaml rename to incubator/cloudreve/2.0.8/values.yaml diff --git a/incubator/convos/2.0.8/CHANGELOG.md b/incubator/convos/2.0.8/CHANGELOG.md deleted file mode 100644 index b38c500fe0f..00000000000 --- a/incubator/convos/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [convos-2.0.8](https://github.com/truecharts/charts/compare/convos-2.0.7...convos-2.0.8) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/convos to vstable - - - - -## [convos-2.0.7](https://github.com/truecharts/charts/compare/convos-2.0.6...convos-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [convos-2.0.6](https://github.com/truecharts/charts/compare/convos-2.0.5...convos-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [convos-2.0.5](https://github.com/truecharts/charts/compare/convos-2.0.4...convos-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [convos-2.0.4](https://github.com/truecharts/charts/compare/convos-2.0.3...convos-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [convos-2.0.3](https://github.com/truecharts/charts/compare/convos-2.0.2...convos-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) - - - - -## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) - - - - -## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) - - - - -## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) - - - - -## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) - - - - -## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) - - - - -## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) - - - - -## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) - - - diff --git a/incubator/convos/2.0.8/Chart.yaml b/incubator/convos/2.0.8/Chart.yaml deleted file mode 100644 index 69352a0eccb..00000000000 --- a/incubator/convos/2.0.8/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Network-Messenger -apiVersion: v2 -appVersion: "stable" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Convos is the simplest way to use IRC and it is always online -home: https://truecharts.org/charts/incubator/convos -icon: https://truecharts.org/img/hotlink-ok/chart-icons/convos.png -keywords: - - convos - - Network-Messenger -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: convos -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/convos - - https://convos.chat/ - - https://hub.docker.com/r/convos/convos/ -type: application -version: 2.0.8 diff --git a/incubator/convos/2.0.8/app-changelog.md b/incubator/convos/2.0.8/app-changelog.md deleted file mode 100644 index 047cbe9e90b..00000000000 --- a/incubator/convos/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [convos-2.0.8](https://github.com/truecharts/charts/compare/convos-2.0.7...convos-2.0.8) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/convos to vstable - - \ No newline at end of file diff --git a/incubator/convos/2.0.8/app-readme.md b/incubator/convos/2.0.8/app-readme.md deleted file mode 100644 index 12ad2552939..00000000000 --- a/incubator/convos/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Convos is the simplest way to use IRC and it is always online - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/convos](https://truecharts.org/charts/incubator/convos) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/convos/2.0.8/questions.yaml b/incubator/convos/2.0.8/questions.yaml deleted file mode 100644 index 69ac139e2db..00000000000 --- a/incubator/convos/2.0.8/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3520 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Data Path" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/convos/2.0.9/CHANGELOG.md b/incubator/convos/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..21ac495d35a --- /dev/null +++ b/incubator/convos/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [convos-2.0.9](https://github.com/truecharts/charts/compare/convos-2.0.8...convos-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [convos-2.0.8](https://github.com/truecharts/charts/compare/convos-2.0.7...convos-2.0.8) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/convos to vstable + + + + +## [convos-2.0.7](https://github.com/truecharts/charts/compare/convos-2.0.6...convos-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [convos-2.0.6](https://github.com/truecharts/charts/compare/convos-2.0.5...convos-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [convos-2.0.5](https://github.com/truecharts/charts/compare/convos-2.0.4...convos-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [convos-2.0.4](https://github.com/truecharts/charts/compare/convos-2.0.3...convos-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [convos-2.0.3](https://github.com/truecharts/charts/compare/convos-2.0.2...convos-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) + + + + +## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) + + + + +## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) + + + + +## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) + + + + +## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) + + + + +## [convos-2.0.2](https://github.com/truecharts/charts/compare/convos-2.0.1...convos-2.0.2) (2022-11-30) + + + + diff --git a/incubator/convos/2.0.9/Chart.yaml b/incubator/convos/2.0.9/Chart.yaml new file mode 100644 index 00000000000..38a9f0bcf36 --- /dev/null +++ b/incubator/convos/2.0.9/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Network-Messenger +apiVersion: v2 +appVersion: "stable" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Convos is the simplest way to use IRC and it is always online +home: https://truecharts.org/charts/incubator/convos +icon: https://truecharts.org/img/hotlink-ok/chart-icons/convos.png +keywords: + - convos + - Network-Messenger +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: convos +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/convos + - https://hub.docker.com/convos/convos + - https://convos.chat/ +type: application +version: 2.0.9 diff --git a/incubator/convos/2.0.8/README.md b/incubator/convos/2.0.9/README.md similarity index 100% rename from incubator/convos/2.0.8/README.md rename to incubator/convos/2.0.9/README.md diff --git a/incubator/convos/2.0.9/app-changelog.md b/incubator/convos/2.0.9/app-changelog.md new file mode 100644 index 00000000000..b5608e0f314 --- /dev/null +++ b/incubator/convos/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [convos-2.0.9](https://github.com/truecharts/charts/compare/convos-2.0.8...convos-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/convos/2.0.9/app-readme.md b/incubator/convos/2.0.9/app-readme.md new file mode 100644 index 00000000000..2b91923bf80 --- /dev/null +++ b/incubator/convos/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +Convos is the simplest way to use IRC and it is always online + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/convos](https://truecharts.org/charts/incubator/convos) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/cowyo/2.0.7/charts/common-11.1.2.tgz b/incubator/convos/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/cowyo/2.0.7/charts/common-11.1.2.tgz rename to incubator/convos/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/convos/2.0.8/ix_values.yaml b/incubator/convos/2.0.9/ix_values.yaml similarity index 100% rename from incubator/convos/2.0.8/ix_values.yaml rename to incubator/convos/2.0.9/ix_values.yaml diff --git a/incubator/convos/2.0.9/questions.yaml b/incubator/convos/2.0.9/questions.yaml new file mode 100644 index 00000000000..054a101eb31 --- /dev/null +++ b/incubator/convos/2.0.9/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3520 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Data Path" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/convos/2.0.8/templates/common.yaml b/incubator/convos/2.0.9/templates/common.yaml similarity index 100% rename from incubator/convos/2.0.8/templates/common.yaml rename to incubator/convos/2.0.9/templates/common.yaml diff --git a/incubator/cowyo/2.0.7/values.yaml b/incubator/convos/2.0.9/values.yaml similarity index 100% rename from incubator/cowyo/2.0.7/values.yaml rename to incubator/convos/2.0.9/values.yaml diff --git a/incubator/cowyo/2.0.7/CHANGELOG.md b/incubator/cowyo/2.0.7/CHANGELOG.md deleted file mode 100644 index 619bdf6c824..00000000000 --- a/incubator/cowyo/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cowyo-2.0.7](https://github.com/truecharts/charts/compare/cowyo-2.0.6...cowyo-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cowyo-2.0.6](https://github.com/truecharts/charts/compare/cowyo-2.0.5...cowyo-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cowyo-2.0.5](https://github.com/truecharts/charts/compare/cowyo-2.0.4...cowyo-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cowyo-2.0.4](https://github.com/truecharts/charts/compare/cowyo-2.0.3...cowyo-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cowyo-2.0.3](https://github.com/truecharts/charts/compare/cowyo-2.0.2...cowyo-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - - - -## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) - - diff --git a/incubator/cowyo/2.0.7/Chart.yaml b/incubator/cowyo/2.0.7/Chart.yaml deleted file mode 100644 index f4bd786a6e1..00000000000 --- a/incubator/cowyo/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "cowyo is a self-contained wiki server that makes jotting notes easy and fast. The most important feature here is simplicity. Other features include versioning, page locking, self-destructing messages, encryption, and listifying." -home: https://truecharts.org/charts/incubator/cowyo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cowyo.png -keywords: - - cowyo - - Cloud - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cowyo -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/cowyo - - https://github.com/schollz/cowyo - - https://hub.docker.com/r/schollz/cowyo -type: application -version: 2.0.7 diff --git a/incubator/cowyo/2.0.7/app-changelog.md b/incubator/cowyo/2.0.7/app-changelog.md deleted file mode 100644 index d6f2e57d26e..00000000000 --- a/incubator/cowyo/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cowyo-2.0.7](https://github.com/truecharts/charts/compare/cowyo-2.0.6...cowyo-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/cowyo/2.0.7/app-readme.md b/incubator/cowyo/2.0.7/app-readme.md deleted file mode 100644 index 01dfbdc5fb9..00000000000 --- a/incubator/cowyo/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -cowyo is a self-contained wiki server that makes jotting notes easy and fast. The most important feature here is simplicity. Other features include versioning, page locking, self-destructing messages, encryption, and listifying. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/cowyo](https://truecharts.org/charts/incubator/cowyo) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/cowyo/2.0.7/questions.yaml b/incubator/cowyo/2.0.7/questions.yaml deleted file mode 100644 index 30f608878fb..00000000000 --- a/incubator/cowyo/2.0.7/questions.yaml +++ /dev/null @@ -1,1828 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8050 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/cowyo/2.0.8/CHANGELOG.md b/incubator/cowyo/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..83a9a0031eb --- /dev/null +++ b/incubator/cowyo/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cowyo-2.0.8](https://github.com/truecharts/charts/compare/cowyo-2.0.7...cowyo-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cowyo-2.0.7](https://github.com/truecharts/charts/compare/cowyo-2.0.6...cowyo-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cowyo-2.0.6](https://github.com/truecharts/charts/compare/cowyo-2.0.5...cowyo-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cowyo-2.0.5](https://github.com/truecharts/charts/compare/cowyo-2.0.4...cowyo-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cowyo-2.0.4](https://github.com/truecharts/charts/compare/cowyo-2.0.3...cowyo-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cowyo-2.0.3](https://github.com/truecharts/charts/compare/cowyo-2.0.2...cowyo-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) + + + + +## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) + + + + +## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) + + + + +## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) + + + + +## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) + + + + +## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) + + + + +## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) + + + + +## [cowyo-2.0.2](https://github.com/truecharts/charts/compare/cowyo-2.0.1...cowyo-2.0.2) (2022-11-30) + + + diff --git a/incubator/cowyo/2.0.8/Chart.yaml b/incubator/cowyo/2.0.8/Chart.yaml new file mode 100644 index 00000000000..07acfbd3090 --- /dev/null +++ b/incubator/cowyo/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "cowyo is a self-contained wiki server that makes jotting notes easy and fast. The most important feature here is simplicity. Other features include versioning, page locking, self-destructing messages, encryption, and listifying." +home: https://truecharts.org/charts/incubator/cowyo +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cowyo.png +keywords: + - cowyo + - Cloud + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cowyo +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/cowyo + - https://hub.docker.com/schollz/cowyo + - https://github.com/schollz/cowyo +type: application +version: 2.0.8 diff --git a/incubator/cowyo/2.0.7/README.md b/incubator/cowyo/2.0.8/README.md similarity index 100% rename from incubator/cowyo/2.0.7/README.md rename to incubator/cowyo/2.0.8/README.md diff --git a/incubator/cowyo/2.0.8/app-changelog.md b/incubator/cowyo/2.0.8/app-changelog.md new file mode 100644 index 00000000000..d6efd12c5f5 --- /dev/null +++ b/incubator/cowyo/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cowyo-2.0.8](https://github.com/truecharts/charts/compare/cowyo-2.0.7...cowyo-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/cowyo/2.0.8/app-readme.md b/incubator/cowyo/2.0.8/app-readme.md new file mode 100644 index 00000000000..293cee1d4ff --- /dev/null +++ b/incubator/cowyo/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +cowyo is a self-contained wiki server that makes jotting notes easy and fast. The most important feature here is simplicity. Other features include versioning, page locking, self-destructing messages, encryption, and listifying. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/cowyo](https://truecharts.org/charts/incubator/cowyo) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/cryptpad/2.0.18/charts/common-11.1.2.tgz b/incubator/cowyo/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/cryptpad/2.0.18/charts/common-11.1.2.tgz rename to incubator/cowyo/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/cowyo/2.0.7/ix_values.yaml b/incubator/cowyo/2.0.8/ix_values.yaml similarity index 100% rename from incubator/cowyo/2.0.7/ix_values.yaml rename to incubator/cowyo/2.0.8/ix_values.yaml diff --git a/incubator/cowyo/2.0.8/questions.yaml b/incubator/cowyo/2.0.8/questions.yaml new file mode 100644 index 00000000000..865e18e2f64 --- /dev/null +++ b/incubator/cowyo/2.0.8/questions.yaml @@ -0,0 +1,1869 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8050 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/cowyo/2.0.7/templates/common.yaml b/incubator/cowyo/2.0.8/templates/common.yaml similarity index 100% rename from incubator/cowyo/2.0.7/templates/common.yaml rename to incubator/cowyo/2.0.8/templates/common.yaml diff --git a/incubator/cryptpad/2.0.18/values.yaml b/incubator/cowyo/2.0.8/values.yaml similarity index 100% rename from incubator/cryptpad/2.0.18/values.yaml rename to incubator/cowyo/2.0.8/values.yaml diff --git a/incubator/cryptpad/2.0.18/CHANGELOG.md b/incubator/cryptpad/2.0.18/CHANGELOG.md deleted file mode 100644 index 1a0010e8675..00000000000 --- a/incubator/cryptpad/2.0.18/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cryptpad-2.0.18](https://github.com/truecharts/charts/compare/cryptpad-2.0.17...cryptpad-2.0.18) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/cryptpad to latest - - - - -## [cryptpad-2.0.17](https://github.com/truecharts/charts/compare/cryptpad-2.0.16...cryptpad-2.0.17) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/cryptpad to latest - - - - -## [cryptpad-2.0.16](https://github.com/truecharts/charts/compare/cryptpad-2.0.15...cryptpad-2.0.16) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/cryptpad to latest - - - - -## [cryptpad-2.0.15](https://github.com/truecharts/charts/compare/cryptpad-2.0.14...cryptpad-2.0.15) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/cryptpad to latest - - - - -## [cryptpad-2.0.14](https://github.com/truecharts/charts/compare/cryptpad-2.0.13...cryptpad-2.0.14) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cryptpad-2.0.13](https://github.com/truecharts/charts/compare/cryptpad-2.0.12...cryptpad-2.0.13) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cryptpad-2.0.12](https://github.com/truecharts/charts/compare/cryptpad-2.0.11...cryptpad-2.0.12) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cryptpad-2.0.11](https://github.com/truecharts/charts/compare/cryptpad-2.0.10...cryptpad-2.0.11) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/cryptpad to latest - - - - -## [cryptpad-2.0.10](https://github.com/truecharts/charts/compare/cryptpad-2.0.9...cryptpad-2.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cryptpad-2.0.9](https://github.com/truecharts/charts/compare/cryptpad-2.0.8...cryptpad-2.0.9) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cryptpad-2.0.8](https://github.com/truecharts/charts/compare/cryptpad-2.0.7...cryptpad-2.0.8) (2022-12-12) - -### Chore diff --git a/incubator/cryptpad/2.0.18/Chart.yaml b/incubator/cryptpad/2.0.18/Chart.yaml deleted file mode 100644 index cada8cecff6..00000000000 --- a/incubator/cryptpad/2.0.18/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - - Security -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: CryptPad is the Zero Knowledge realtime collaborative editor.[br]mkdir -p /mnt/user/appdata/cryptpad/config [/br]wget -O /mnt/user/appdata/cryptpad/config/config.js https://raw.githubusercontent.com/xwiki-labs/cryptpad/main/config/config.example.js -home: https://truecharts.org/charts/incubator/cryptpad -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cryptpad.png -keywords: - - cryptpad - - Productivity - - Security -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cryptpad -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/cryptpad - - https://cryptpad.fr/ - - https://hub.docker.com/r/promasu/cryptpad/ -type: application -version: 2.0.18 diff --git a/incubator/cryptpad/2.0.18/app-changelog.md b/incubator/cryptpad/2.0.18/app-changelog.md deleted file mode 100644 index 7d56a195ac8..00000000000 --- a/incubator/cryptpad/2.0.18/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cryptpad-2.0.18](https://github.com/truecharts/charts/compare/cryptpad-2.0.17...cryptpad-2.0.18) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/cryptpad to latest - - \ No newline at end of file diff --git a/incubator/cryptpad/2.0.19/CHANGELOG.md b/incubator/cryptpad/2.0.19/CHANGELOG.md new file mode 100644 index 00000000000..4f1815e92c8 --- /dev/null +++ b/incubator/cryptpad/2.0.19/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cryptpad-2.0.19](https://github.com/truecharts/charts/compare/cryptpad-2.0.18...cryptpad-2.0.19) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cryptpad-2.0.18](https://github.com/truecharts/charts/compare/cryptpad-2.0.17...cryptpad-2.0.18) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/cryptpad to latest + + + + +## [cryptpad-2.0.17](https://github.com/truecharts/charts/compare/cryptpad-2.0.16...cryptpad-2.0.17) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/cryptpad to latest + + + + +## [cryptpad-2.0.16](https://github.com/truecharts/charts/compare/cryptpad-2.0.15...cryptpad-2.0.16) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/cryptpad to latest + + + + +## [cryptpad-2.0.15](https://github.com/truecharts/charts/compare/cryptpad-2.0.14...cryptpad-2.0.15) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/cryptpad to latest + + + + +## [cryptpad-2.0.14](https://github.com/truecharts/charts/compare/cryptpad-2.0.13...cryptpad-2.0.14) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cryptpad-2.0.13](https://github.com/truecharts/charts/compare/cryptpad-2.0.12...cryptpad-2.0.13) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cryptpad-2.0.12](https://github.com/truecharts/charts/compare/cryptpad-2.0.11...cryptpad-2.0.12) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cryptpad-2.0.11](https://github.com/truecharts/charts/compare/cryptpad-2.0.10...cryptpad-2.0.11) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/cryptpad to latest + + + + +## [cryptpad-2.0.10](https://github.com/truecharts/charts/compare/cryptpad-2.0.9...cryptpad-2.0.10) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cryptpad-2.0.9](https://github.com/truecharts/charts/compare/cryptpad-2.0.8...cryptpad-2.0.9) (2022-12-13) + +### Chore diff --git a/incubator/cryptpad/2.0.19/Chart.yaml b/incubator/cryptpad/2.0.19/Chart.yaml new file mode 100644 index 00000000000..dba911f300e --- /dev/null +++ b/incubator/cryptpad/2.0.19/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + - Security +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: CryptPad is the Zero Knowledge realtime collaborative editor.[br]mkdir -p /mnt/user/appdata/cryptpad/config [/br]wget -O /mnt/user/appdata/cryptpad/config/config.js https://raw.githubusercontent.com/xwiki-labs/cryptpad/main/config/config.example.js +home: https://truecharts.org/charts/incubator/cryptpad +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cryptpad.png +keywords: + - cryptpad + - Productivity + - Security +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cryptpad +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/cryptpad + - https://hub.docker.com/promasu/cryptpad + - https://cryptpad.fr/ +type: application +version: 2.0.19 diff --git a/incubator/cryptpad/2.0.18/README.md b/incubator/cryptpad/2.0.19/README.md similarity index 100% rename from incubator/cryptpad/2.0.18/README.md rename to incubator/cryptpad/2.0.19/README.md diff --git a/incubator/cryptpad/2.0.19/app-changelog.md b/incubator/cryptpad/2.0.19/app-changelog.md new file mode 100644 index 00000000000..c5b9d03b9d9 --- /dev/null +++ b/incubator/cryptpad/2.0.19/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cryptpad-2.0.19](https://github.com/truecharts/charts/compare/cryptpad-2.0.18...cryptpad-2.0.19) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/cryptpad/2.0.18/app-readme.md b/incubator/cryptpad/2.0.19/app-readme.md similarity index 100% rename from incubator/cryptpad/2.0.18/app-readme.md rename to incubator/cryptpad/2.0.19/app-readme.md diff --git a/incubator/cups-server/3.0.15/charts/common-11.1.2.tgz b/incubator/cryptpad/2.0.19/charts/common-11.1.2.tgz similarity index 100% rename from incubator/cups-server/3.0.15/charts/common-11.1.2.tgz rename to incubator/cryptpad/2.0.19/charts/common-11.1.2.tgz diff --git a/incubator/cryptpad/2.0.18/ix_values.yaml b/incubator/cryptpad/2.0.19/ix_values.yaml similarity index 100% rename from incubator/cryptpad/2.0.18/ix_values.yaml rename to incubator/cryptpad/2.0.19/ix_values.yaml diff --git a/incubator/cryptpad/2.0.18/questions.yaml b/incubator/cryptpad/2.0.19/questions.yaml similarity index 100% rename from incubator/cryptpad/2.0.18/questions.yaml rename to incubator/cryptpad/2.0.19/questions.yaml diff --git a/incubator/cryptpad/2.0.18/templates/common.yaml b/incubator/cryptpad/2.0.19/templates/common.yaml similarity index 100% rename from incubator/cryptpad/2.0.18/templates/common.yaml rename to incubator/cryptpad/2.0.19/templates/common.yaml diff --git a/incubator/cups-server/3.0.15/values.yaml b/incubator/cryptpad/2.0.19/values.yaml similarity index 100% rename from incubator/cups-server/3.0.15/values.yaml rename to incubator/cryptpad/2.0.19/values.yaml diff --git a/incubator/cups-server/3.0.15/CHANGELOG.md b/incubator/cups-server/3.0.15/CHANGELOG.md deleted file mode 100644 index 5aa501ed59e..00000000000 --- a/incubator/cups-server/3.0.15/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cups-server-3.0.15](https://github.com/truecharts/charts/compare/cups-server-3.0.14...cups-server-3.0.15) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/cups-server to latest - - - - -## [cups-server-3.0.14](https://github.com/truecharts/charts/compare/cups-server-3.0.13...cups-server-3.0.14) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/cups-server to latest - - - - -## [cups-server-3.0.13](https://github.com/truecharts/charts/compare/cups-server-3.0.12...cups-server-3.0.13) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/cups-server to latest ([#6020](https://github.com/truecharts/charts/issues/6020)) - - - - -## [cups-server-3.0.12](https://github.com/truecharts/charts/compare/cups-server-3.0.11...cups-server-3.0.12) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cups-server-3.0.11](https://github.com/truecharts/charts/compare/cups-server-3.0.10...cups-server-3.0.11) (2022-12-26) - -### Chore - -- update container image tccr.io/truecharts/cups-server to latest - - - - -## [cups-server-3.0.10](https://github.com/truecharts/charts/compare/cups-server-3.0.9...cups-server-3.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cups-server-3.0.9](https://github.com/truecharts/charts/compare/cups-server-3.0.8...cups-server-3.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cups-server-3.0.8](https://github.com/truecharts/charts/compare/cups-server-3.0.7...cups-server-3.0.8) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/cups-server to latest - - - - -## [cups-server-3.0.7](https://github.com/truecharts/charts/compare/cups-server-3.0.6...cups-server-3.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cups-server-3.0.6](https://github.com/truecharts/charts/compare/cups-server-3.0.5...cups-server-3.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cups-server-3.0.5](https://github.com/truecharts/charts/compare/cups-server-3.0.4...cups-server-3.0.5) (2022-12-12) - -### Chore diff --git a/incubator/cups-server/3.0.15/Chart.yaml b/incubator/cups-server/3.0.15/Chart.yaml deleted file mode 100644 index bd4e947ea87..00000000000 --- a/incubator/cups-server/3.0.15/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: CUPS printing server -home: https://truecharts.org/charts/incubator/cups-server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cups-server.png -keywords: - - print - - cups -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cups-server -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/cups-server - - https://hub.docker.com/r/ydkn/cups -version: 3.0.15 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/cups-server/3.0.15/app-changelog.md b/incubator/cups-server/3.0.15/app-changelog.md deleted file mode 100644 index bd974c3fe5f..00000000000 --- a/incubator/cups-server/3.0.15/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cups-server-3.0.15](https://github.com/truecharts/charts/compare/cups-server-3.0.14...cups-server-3.0.15) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/cups-server to latest - - \ No newline at end of file diff --git a/incubator/cups-server/3.0.15/questions.yaml b/incubator/cups-server/3.0.15/questions.yaml deleted file mode 100644 index 7c25934f18c..00000000000 --- a/incubator/cups-server/3.0.15/questions.yaml +++ /dev/null @@ -1,1843 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ADMIN_PASSWORD - label: "ADMIN_PASSWORD" - schema: - type: string - private: true - required: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 631 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/cups-server/3.0.16/CHANGELOG.md b/incubator/cups-server/3.0.16/CHANGELOG.md new file mode 100644 index 00000000000..ae739350b21 --- /dev/null +++ b/incubator/cups-server/3.0.16/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cups-server-3.0.16](https://github.com/truecharts/charts/compare/cups-server-3.0.15...cups-server-3.0.16) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cups-server-3.0.15](https://github.com/truecharts/charts/compare/cups-server-3.0.14...cups-server-3.0.15) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/cups-server to latest + + + + +## [cups-server-3.0.14](https://github.com/truecharts/charts/compare/cups-server-3.0.13...cups-server-3.0.14) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/cups-server to latest + + + + +## [cups-server-3.0.13](https://github.com/truecharts/charts/compare/cups-server-3.0.12...cups-server-3.0.13) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/cups-server to latest ([#6020](https://github.com/truecharts/charts/issues/6020)) + + + + +## [cups-server-3.0.12](https://github.com/truecharts/charts/compare/cups-server-3.0.11...cups-server-3.0.12) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cups-server-3.0.11](https://github.com/truecharts/charts/compare/cups-server-3.0.10...cups-server-3.0.11) (2022-12-26) + +### Chore + +- update container image tccr.io/truecharts/cups-server to latest + + + + +## [cups-server-3.0.10](https://github.com/truecharts/charts/compare/cups-server-3.0.9...cups-server-3.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cups-server-3.0.9](https://github.com/truecharts/charts/compare/cups-server-3.0.8...cups-server-3.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cups-server-3.0.8](https://github.com/truecharts/charts/compare/cups-server-3.0.7...cups-server-3.0.8) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/cups-server to latest + + + + +## [cups-server-3.0.7](https://github.com/truecharts/charts/compare/cups-server-3.0.6...cups-server-3.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cups-server-3.0.6](https://github.com/truecharts/charts/compare/cups-server-3.0.5...cups-server-3.0.6) (2022-12-13) + +### Chore diff --git a/incubator/cups-server/3.0.16/Chart.yaml b/incubator/cups-server/3.0.16/Chart.yaml new file mode 100644 index 00000000000..a355d898aa4 --- /dev/null +++ b/incubator/cups-server/3.0.16/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: CUPS printing server +home: https://truecharts.org/charts/incubator/cups-server +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cups-server.png +keywords: + - print + - cups +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cups-server +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/cups-server + - https://hub.docker.com/ydkn/cups +version: 3.0.16 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/cups-server/3.0.15/README.md b/incubator/cups-server/3.0.16/README.md similarity index 100% rename from incubator/cups-server/3.0.15/README.md rename to incubator/cups-server/3.0.16/README.md diff --git a/incubator/cups-server/3.0.16/app-changelog.md b/incubator/cups-server/3.0.16/app-changelog.md new file mode 100644 index 00000000000..3051fe4db23 --- /dev/null +++ b/incubator/cups-server/3.0.16/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cups-server-3.0.16](https://github.com/truecharts/charts/compare/cups-server-3.0.15...cups-server-3.0.16) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/cups-server/3.0.15/app-readme.md b/incubator/cups-server/3.0.16/app-readme.md similarity index 100% rename from incubator/cups-server/3.0.15/app-readme.md rename to incubator/cups-server/3.0.16/app-readme.md diff --git a/incubator/damselfly/2.0.11/charts/common-11.1.2.tgz b/incubator/cups-server/3.0.16/charts/common-11.1.2.tgz similarity index 100% rename from incubator/damselfly/2.0.11/charts/common-11.1.2.tgz rename to incubator/cups-server/3.0.16/charts/common-11.1.2.tgz diff --git a/incubator/cups-server/3.0.15/ix_values.yaml b/incubator/cups-server/3.0.16/ix_values.yaml similarity index 100% rename from incubator/cups-server/3.0.15/ix_values.yaml rename to incubator/cups-server/3.0.16/ix_values.yaml diff --git a/incubator/cups-server/3.0.16/questions.yaml b/incubator/cups-server/3.0.16/questions.yaml new file mode 100644 index 00000000000..034e4b56c2b --- /dev/null +++ b/incubator/cups-server/3.0.16/questions.yaml @@ -0,0 +1,1884 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ADMIN_PASSWORD + label: "ADMIN_PASSWORD" + schema: + type: string + private: true + required: true + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 631 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/cups-server/3.0.15/templates/common.yaml b/incubator/cups-server/3.0.16/templates/common.yaml similarity index 100% rename from incubator/cups-server/3.0.15/templates/common.yaml rename to incubator/cups-server/3.0.16/templates/common.yaml diff --git a/incubator/damselfly/2.0.11/values.yaml b/incubator/cups-server/3.0.16/values.yaml similarity index 100% rename from incubator/damselfly/2.0.11/values.yaml rename to incubator/cups-server/3.0.16/values.yaml diff --git a/incubator/damselfly/2.0.11/CHANGELOG.md b/incubator/damselfly/2.0.11/CHANGELOG.md deleted file mode 100644 index 134d4b54b7a..00000000000 --- a/incubator/damselfly/2.0.11/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [damselfly-2.0.11](https://github.com/truecharts/charts/compare/damselfly-2.0.10...damselfly-2.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [damselfly-2.0.10](https://github.com/truecharts/charts/compare/damselfly-2.0.9...damselfly-2.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [damselfly-2.0.9](https://github.com/truecharts/charts/compare/damselfly-2.0.8...damselfly-2.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [damselfly-2.0.8](https://github.com/truecharts/charts/compare/damselfly-2.0.7...damselfly-2.0.8) (2022-12-25) - -### Chore - -- update container image tccr.io/truecharts/damselfly to latest ([#5711](https://github.com/truecharts/charts/issues/5711)) - - - - -## [damselfly-2.0.7](https://github.com/truecharts/charts/compare/damselfly-2.0.6...damselfly-2.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [damselfly-2.0.6](https://github.com/truecharts/charts/compare/damselfly-2.0.5...damselfly-2.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [damselfly-2.0.5](https://github.com/truecharts/charts/compare/damselfly-2.0.4...damselfly-2.0.5) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/damselfly to latest - - - - -## [damselfly-2.0.4](https://github.com/truecharts/charts/compare/damselfly-2.0.3...damselfly-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/damselfly to latest - - - - -## [damselfly-2.0.3](https://github.com/truecharts/charts/compare/damselfly-2.0.1...damselfly-2.0.3) (2022-11-30) - - - - -## [damselfly-2.0.3](https://github.com/truecharts/charts/compare/damselfly-2.0.1...damselfly-2.0.3) (2022-11-30) - - - - -## [damselfly-2.0.3](https://github.com/truecharts/charts/compare/damselfly-2.0.1...damselfly-2.0.3) (2022-11-30) - - - - -## [damselfly-2.0.3](https://github.com/truecharts/charts/compare/damselfly-2.0.1...damselfly-2.0.3) (2022-11-30) - - - - -## [damselfly-2.0.3](https://github.com/truecharts/charts/compare/damselfly-2.0.1...damselfly-2.0.3) (2022-11-30) diff --git a/incubator/damselfly/2.0.11/Chart.yaml b/incubator/damselfly/2.0.11/Chart.yaml deleted file mode 100644 index 2d66724f355..00000000000 --- a/incubator/damselfly/2.0.11/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Photos -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Damselfly is a server-based Digital Asset Management system. The goal of Damselfly is to index an extremely large collection of images, and allow easy search and retrieval of those images, using metadata such as the IPTC keyword tags, as well as the folder and file names. See https://damselfly.info for more details. -home: https://truecharts.org/charts/incubator/damselfly -icon: https://truecharts.org/img/hotlink-ok/chart-icons/damselfly.png -keywords: - - damselfly - - MediaApp-Photos -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: damselfly -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/damselfly - - https://github.com/Webreaper/Damselfly - - https://hub.docker.com/r/webreaper/damselfly/ -type: application -version: 2.0.11 diff --git a/incubator/damselfly/2.0.11/app-changelog.md b/incubator/damselfly/2.0.11/app-changelog.md deleted file mode 100644 index c72dadc01f8..00000000000 --- a/incubator/damselfly/2.0.11/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [damselfly-2.0.11](https://github.com/truecharts/charts/compare/damselfly-2.0.10...damselfly-2.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/damselfly/2.0.11/app-readme.md b/incubator/damselfly/2.0.11/app-readme.md deleted file mode 100644 index ca0eb3542d9..00000000000 --- a/incubator/damselfly/2.0.11/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Damselfly is a server-based Digital Asset Management system. The goal of Damselfly is to index an extremely large collection of images, and allow easy search and retrieval of those images, using metadata such as the IPTC keyword tags, as well as the folder and file names. See https://damselfly.info for more details. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/damselfly](https://truecharts.org/charts/incubator/damselfly) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/damselfly/2.0.11/questions.yaml b/incubator/damselfly/2.0.11/questions.yaml deleted file mode 100644 index ecca056df2e..00000000000 --- a/incubator/damselfly/2.0.11/questions.yaml +++ /dev/null @@ -1,1969 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 6363 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Container Path configStandard location for docker configs." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: pictures - label: "pictures Storage" - description: "Container Path picturesLocation of your pictures." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: thumbs - label: "thumbs Storage" - description: "Container Path thumbsLocation for Damselfly to store thumbs of your pictures." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/damselfly/2.0.12/CHANGELOG.md b/incubator/damselfly/2.0.12/CHANGELOG.md new file mode 100644 index 00000000000..301e36754bd --- /dev/null +++ b/incubator/damselfly/2.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [damselfly-2.0.12](https://github.com/truecharts/charts/compare/damselfly-2.0.11...damselfly-2.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [damselfly-2.0.11](https://github.com/truecharts/charts/compare/damselfly-2.0.10...damselfly-2.0.11) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [damselfly-2.0.10](https://github.com/truecharts/charts/compare/damselfly-2.0.9...damselfly-2.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [damselfly-2.0.9](https://github.com/truecharts/charts/compare/damselfly-2.0.8...damselfly-2.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [damselfly-2.0.8](https://github.com/truecharts/charts/compare/damselfly-2.0.7...damselfly-2.0.8) (2022-12-25) + +### Chore + +- update container image tccr.io/truecharts/damselfly to latest ([#5711](https://github.com/truecharts/charts/issues/5711)) + + + + +## [damselfly-2.0.7](https://github.com/truecharts/charts/compare/damselfly-2.0.6...damselfly-2.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [damselfly-2.0.6](https://github.com/truecharts/charts/compare/damselfly-2.0.5...damselfly-2.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [damselfly-2.0.5](https://github.com/truecharts/charts/compare/damselfly-2.0.4...damselfly-2.0.5) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/damselfly to latest + + + + +## [damselfly-2.0.4](https://github.com/truecharts/charts/compare/damselfly-2.0.3...damselfly-2.0.4) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/damselfly to latest + + + + +## [damselfly-2.0.3](https://github.com/truecharts/charts/compare/damselfly-2.0.1...damselfly-2.0.3) (2022-11-30) + + + + +## [damselfly-2.0.3](https://github.com/truecharts/charts/compare/damselfly-2.0.1...damselfly-2.0.3) (2022-11-30) + + + + +## [damselfly-2.0.3](https://github.com/truecharts/charts/compare/damselfly-2.0.1...damselfly-2.0.3) (2022-11-30) + diff --git a/incubator/damselfly/2.0.12/Chart.yaml b/incubator/damselfly/2.0.12/Chart.yaml new file mode 100644 index 00000000000..96164d43c30 --- /dev/null +++ b/incubator/damselfly/2.0.12/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Photos +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Damselfly is a server-based Digital Asset Management system. The goal of Damselfly is to index an extremely large collection of images, and allow easy search and retrieval of those images, using metadata such as the IPTC keyword tags, as well as the folder and file names. See https://damselfly.info for more details. +home: https://truecharts.org/charts/incubator/damselfly +icon: https://truecharts.org/img/hotlink-ok/chart-icons/damselfly.png +keywords: + - damselfly + - MediaApp-Photos +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: damselfly +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/damselfly + - https://hub.docker.com/webreaper/damselfly + - https://github.com/Webreaper/Damselfly +type: application +version: 2.0.12 diff --git a/incubator/damselfly/2.0.11/README.md b/incubator/damselfly/2.0.12/README.md similarity index 100% rename from incubator/damselfly/2.0.11/README.md rename to incubator/damselfly/2.0.12/README.md diff --git a/incubator/damselfly/2.0.12/app-changelog.md b/incubator/damselfly/2.0.12/app-changelog.md new file mode 100644 index 00000000000..a8886d775b5 --- /dev/null +++ b/incubator/damselfly/2.0.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [damselfly-2.0.12](https://github.com/truecharts/charts/compare/damselfly-2.0.11...damselfly-2.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/damselfly/2.0.12/app-readme.md b/incubator/damselfly/2.0.12/app-readme.md new file mode 100644 index 00000000000..c0803faa7ab --- /dev/null +++ b/incubator/damselfly/2.0.12/app-readme.md @@ -0,0 +1,8 @@ +Damselfly is a server-based Digital Asset Management system. The goal of Damselfly is to index an extremely large collection of images, and allow easy search and retrieval of those images, using metadata such as the IPTC keyword tags, as well as the folder and file names. See https://damselfly.info for more details. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/damselfly](https://truecharts.org/charts/incubator/damselfly) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dashmachine/2.0.7/charts/common-11.1.2.tgz b/incubator/damselfly/2.0.12/charts/common-11.1.2.tgz similarity index 100% rename from incubator/dashmachine/2.0.7/charts/common-11.1.2.tgz rename to incubator/damselfly/2.0.12/charts/common-11.1.2.tgz diff --git a/incubator/damselfly/2.0.11/ix_values.yaml b/incubator/damselfly/2.0.12/ix_values.yaml similarity index 100% rename from incubator/damselfly/2.0.11/ix_values.yaml rename to incubator/damselfly/2.0.12/ix_values.yaml diff --git a/incubator/damselfly/2.0.12/questions.yaml b/incubator/damselfly/2.0.12/questions.yaml new file mode 100644 index 00000000000..58364b302f0 --- /dev/null +++ b/incubator/damselfly/2.0.12/questions.yaml @@ -0,0 +1,2010 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6363 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "Container Path configStandard location for docker configs." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: pictures + label: "pictures Storage" + description: "Container Path picturesLocation of your pictures." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: thumbs + label: "thumbs Storage" + description: "Container Path thumbsLocation for Damselfly to store thumbs of your pictures." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/damselfly/2.0.11/templates/common.yaml b/incubator/damselfly/2.0.12/templates/common.yaml similarity index 100% rename from incubator/damselfly/2.0.11/templates/common.yaml rename to incubator/damselfly/2.0.12/templates/common.yaml diff --git a/incubator/dashmachine/2.0.7/values.yaml b/incubator/damselfly/2.0.12/values.yaml similarity index 100% rename from incubator/dashmachine/2.0.7/values.yaml rename to incubator/damselfly/2.0.12/values.yaml diff --git a/incubator/dashmachine/2.0.7/CHANGELOG.md b/incubator/dashmachine/2.0.7/CHANGELOG.md deleted file mode 100644 index 473abb500d7..00000000000 --- a/incubator/dashmachine/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [dashmachine-2.0.7](https://github.com/truecharts/charts/compare/dashmachine-2.0.6...dashmachine-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [dashmachine-2.0.6](https://github.com/truecharts/charts/compare/dashmachine-2.0.5...dashmachine-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [dashmachine-2.0.5](https://github.com/truecharts/charts/compare/dashmachine-2.0.4...dashmachine-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [dashmachine-2.0.4](https://github.com/truecharts/charts/compare/dashmachine-2.0.3...dashmachine-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [dashmachine-2.0.3](https://github.com/truecharts/charts/compare/dashmachine-2.0.2...dashmachine-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - - - -## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) - - diff --git a/incubator/dashmachine/2.0.7/Chart.yaml b/incubator/dashmachine/2.0.7/Chart.yaml deleted file mode 100644 index 8a85cbcbd33..00000000000 --- a/incubator/dashmachine/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - - Network-Web -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Another web application bookmark dashboard, with fun features.[br][br][b][u][span style='color: #ff9900;']Default user/password[/span][/u][/b][br]User: [B][u]admin[/B][/u][br]Password: [B][u]admin[/B][/u][/b]" -home: https://truecharts.org/charts/incubator/dashmachine -icon: https://truecharts.org/img/hotlink-ok/chart-icons/dashmachine.png -keywords: - - dashmachine - - Productivity - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: dashmachine -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/dashmachine - - https://hub.docker.com/r/rmountjoy/dashmachine/ - - https://hub.docker.com/r/rmountjoy/dashmachine/ -type: application -version: 2.0.7 diff --git a/incubator/dashmachine/2.0.7/app-changelog.md b/incubator/dashmachine/2.0.7/app-changelog.md deleted file mode 100644 index 5627f762457..00000000000 --- a/incubator/dashmachine/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [dashmachine-2.0.7](https://github.com/truecharts/charts/compare/dashmachine-2.0.6...dashmachine-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/dashmachine/2.0.7/app-readme.md b/incubator/dashmachine/2.0.7/app-readme.md deleted file mode 100644 index a1aa6cfa10e..00000000000 --- a/incubator/dashmachine/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Another web application bookmark dashboard, with fun features.[br][br][b][u][span style='color: #ff9900;']Default user/password[/span][/u][/b][br]User: [B][u]admin[/B][/u][br]Password: [B][u]admin[/B][/u][/b] - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/dashmachine](https://truecharts.org/charts/incubator/dashmachine) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dashmachine/2.0.7/questions.yaml b/incubator/dashmachine/2.0.7/questions.yaml deleted file mode 100644 index fa6bab6c2f3..00000000000 --- a/incubator/dashmachine/2.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: appdata - label: "appdata Storage" - description: "Container Path dashmachinedashmachineuserdata" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/dashmachine/2.0.8/CHANGELOG.md b/incubator/dashmachine/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..28d380f3f8e --- /dev/null +++ b/incubator/dashmachine/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [dashmachine-2.0.8](https://github.com/truecharts/charts/compare/dashmachine-2.0.7...dashmachine-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [dashmachine-2.0.7](https://github.com/truecharts/charts/compare/dashmachine-2.0.6...dashmachine-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [dashmachine-2.0.6](https://github.com/truecharts/charts/compare/dashmachine-2.0.5...dashmachine-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [dashmachine-2.0.5](https://github.com/truecharts/charts/compare/dashmachine-2.0.4...dashmachine-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [dashmachine-2.0.4](https://github.com/truecharts/charts/compare/dashmachine-2.0.3...dashmachine-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [dashmachine-2.0.3](https://github.com/truecharts/charts/compare/dashmachine-2.0.2...dashmachine-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) + + + + +## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) + + + + +## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) + + + + +## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) + + + + +## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) + + + + +## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) + + + + +## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) + + + + +## [dashmachine-2.0.2](https://github.com/truecharts/charts/compare/dashmachine-2.0.1...dashmachine-2.0.2) (2022-11-30) + + + diff --git a/incubator/dashmachine/2.0.8/Chart.yaml b/incubator/dashmachine/2.0.8/Chart.yaml new file mode 100644 index 00000000000..99fd52e031b --- /dev/null +++ b/incubator/dashmachine/2.0.8/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Another web application bookmark dashboard, with fun features.[br][br][b][u][span style='color: #ff9900;']Default user/password[/span][/u][/b][br]User: [B][u]admin[/B][/u][br]Password: [B][u]admin[/B][/u][/b]" +home: https://truecharts.org/charts/incubator/dashmachine +icon: https://truecharts.org/img/hotlink-ok/chart-icons/dashmachine.png +keywords: + - dashmachine + - Productivity + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dashmachine +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/dashmachine + - https://hub.docker.com/rmountjoy/dashmachine +type: application +version: 2.0.8 diff --git a/incubator/dashmachine/2.0.7/README.md b/incubator/dashmachine/2.0.8/README.md similarity index 100% rename from incubator/dashmachine/2.0.7/README.md rename to incubator/dashmachine/2.0.8/README.md diff --git a/incubator/dashmachine/2.0.8/app-changelog.md b/incubator/dashmachine/2.0.8/app-changelog.md new file mode 100644 index 00000000000..932ecdb6b8b --- /dev/null +++ b/incubator/dashmachine/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [dashmachine-2.0.8](https://github.com/truecharts/charts/compare/dashmachine-2.0.7...dashmachine-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/dashmachine/2.0.8/app-readme.md b/incubator/dashmachine/2.0.8/app-readme.md new file mode 100644 index 00000000000..981d8cbc3af --- /dev/null +++ b/incubator/dashmachine/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Another web application bookmark dashboard, with fun features.[br][br][b][u][span style='color: #ff9900;']Default user/password[/span][/u][/b][br]User: [B][u]admin[/B][/u][br]Password: [B][u]admin[/B][/u][/b] + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/dashmachine](https://truecharts.org/charts/incubator/dashmachine) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dropbox-by-otherguy/2.0.7/charts/common-11.1.2.tgz b/incubator/dashmachine/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/dropbox-by-otherguy/2.0.7/charts/common-11.1.2.tgz rename to incubator/dashmachine/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/dashmachine/2.0.7/ix_values.yaml b/incubator/dashmachine/2.0.8/ix_values.yaml similarity index 100% rename from incubator/dashmachine/2.0.7/ix_values.yaml rename to incubator/dashmachine/2.0.8/ix_values.yaml diff --git a/incubator/dashmachine/2.0.8/questions.yaml b/incubator/dashmachine/2.0.8/questions.yaml new file mode 100644 index 00000000000..5e47e1cfa79 --- /dev/null +++ b/incubator/dashmachine/2.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: appdata + label: "appdata Storage" + description: "Container Path dashmachinedashmachineuserdata" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/dashmachine/2.0.7/templates/common.yaml b/incubator/dashmachine/2.0.8/templates/common.yaml similarity index 100% rename from incubator/dashmachine/2.0.7/templates/common.yaml rename to incubator/dashmachine/2.0.8/templates/common.yaml diff --git a/incubator/dropbox-by-otherguy/2.0.7/values.yaml b/incubator/dashmachine/2.0.8/values.yaml similarity index 100% rename from incubator/dropbox-by-otherguy/2.0.7/values.yaml rename to incubator/dashmachine/2.0.8/values.yaml diff --git a/incubator/dropbox-by-otherguy/2.0.7/CHANGELOG.md b/incubator/dropbox-by-otherguy/2.0.7/CHANGELOG.md deleted file mode 100644 index b4b3efd1987..00000000000 --- a/incubator/dropbox-by-otherguy/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [dropbox-by-otherguy-2.0.7](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.6...dropbox-by-otherguy-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [dropbox-by-otherguy-2.0.6](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.5...dropbox-by-otherguy-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [dropbox-by-otherguy-2.0.5](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.4...dropbox-by-otherguy-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [dropbox-by-otherguy-2.0.4](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.3...dropbox-by-otherguy-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [dropbox-by-otherguy-2.0.3](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.2...dropbox-by-otherguy-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - - - -## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) - - diff --git a/incubator/dropbox-by-otherguy/2.0.7/Chart.yaml b/incubator/dropbox-by-otherguy/2.0.7/Chart.yaml deleted file mode 100644 index d6959da2c93..00000000000 --- a/incubator/dropbox-by-otherguy/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Dropbox client which syncs a local path with your cloud." -home: https://truecharts.org/charts/incubator/dropbox-by-otherguy -icon: https://truecharts.org/img/hotlink-ok/chart-icons/dropbox-by-otherguy.png -keywords: - - dropbox-by-otherguy - - Cloud -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: dropbox-by-otherguy -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/dropbox-by-otherguy - - https://github.com/otherguy/docker-dropbox - - https://hub.docker.com/r/otherguy/dropbox -type: application -version: 2.0.7 diff --git a/incubator/dropbox-by-otherguy/2.0.7/app-changelog.md b/incubator/dropbox-by-otherguy/2.0.7/app-changelog.md deleted file mode 100644 index 69ba2cab4df..00000000000 --- a/incubator/dropbox-by-otherguy/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [dropbox-by-otherguy-2.0.7](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.6...dropbox-by-otherguy-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/dropbox-by-otherguy/2.0.7/app-readme.md b/incubator/dropbox-by-otherguy/2.0.7/app-readme.md deleted file mode 100644 index 6435e23bdb1..00000000000 --- a/incubator/dropbox-by-otherguy/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Dropbox client which syncs a local path with your cloud. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/dropbox-by-otherguy](https://truecharts.org/charts/incubator/dropbox-by-otherguy) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/dropbox-by-otherguy/2.0.7/questions.yaml b/incubator/dropbox-by-otherguy/2.0.7/questions.yaml deleted file mode 100644 index 3cc2959a743..00000000000 --- a/incubator/dropbox-by-otherguy/2.0.7/questions.yaml +++ /dev/null @@ -1,1569 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: DROPBOX_UID - label: "DROPBOX_UID" - description: "Container Variable DROPBOXUID" - schema: - type: string - default: "99" - - variable: DROPBOX_GID - label: "DROPBOX_GID" - description: "Container Variable DROPBOXGID" - schema: - type: string - default: "100" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: dropboxuserfiles - label: "dropboxuserfiles Storage" - description: "Read the description! Do not set this path to mntuser..." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: dropboxsettings - label: "dropboxsettings Storage" - description: "Container Path optdropbox.dropbox" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/dropbox-by-otherguy/2.0.8/CHANGELOG.md b/incubator/dropbox-by-otherguy/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..f1e8bb37b21 --- /dev/null +++ b/incubator/dropbox-by-otherguy/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [dropbox-by-otherguy-2.0.8](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.7...dropbox-by-otherguy-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [dropbox-by-otherguy-2.0.7](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.6...dropbox-by-otherguy-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [dropbox-by-otherguy-2.0.6](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.5...dropbox-by-otherguy-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [dropbox-by-otherguy-2.0.5](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.4...dropbox-by-otherguy-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [dropbox-by-otherguy-2.0.4](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.3...dropbox-by-otherguy-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [dropbox-by-otherguy-2.0.3](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.2...dropbox-by-otherguy-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) + + + + +## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) + + + + +## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) + + + + +## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) + + + + +## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) + + + + +## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) + + + + +## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) + + + + +## [dropbox-by-otherguy-2.0.2](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.1...dropbox-by-otherguy-2.0.2) (2022-11-30) + + + diff --git a/incubator/dropbox-by-otherguy/2.0.8/Chart.yaml b/incubator/dropbox-by-otherguy/2.0.8/Chart.yaml new file mode 100644 index 00000000000..c09106940da --- /dev/null +++ b/incubator/dropbox-by-otherguy/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Dropbox client which syncs a local path with your cloud." +home: https://truecharts.org/charts/incubator/dropbox-by-otherguy +icon: https://truecharts.org/img/hotlink-ok/chart-icons/dropbox-by-otherguy.png +keywords: + - dropbox-by-otherguy + - Cloud +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dropbox-by-otherguy +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/dropbox-by-otherguy + - https://hub.docker.com/otherguy/dropbox + - https://github.com/otherguy/docker-dropbox +type: application +version: 2.0.8 diff --git a/incubator/dropbox-by-otherguy/2.0.7/README.md b/incubator/dropbox-by-otherguy/2.0.8/README.md similarity index 100% rename from incubator/dropbox-by-otherguy/2.0.7/README.md rename to incubator/dropbox-by-otherguy/2.0.8/README.md diff --git a/incubator/dropbox-by-otherguy/2.0.8/app-changelog.md b/incubator/dropbox-by-otherguy/2.0.8/app-changelog.md new file mode 100644 index 00000000000..6883462ba84 --- /dev/null +++ b/incubator/dropbox-by-otherguy/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [dropbox-by-otherguy-2.0.8](https://github.com/truecharts/charts/compare/dropbox-by-otherguy-2.0.7...dropbox-by-otherguy-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/dropbox-by-otherguy/2.0.8/app-readme.md b/incubator/dropbox-by-otherguy/2.0.8/app-readme.md new file mode 100644 index 00000000000..a94776e9a92 --- /dev/null +++ b/incubator/dropbox-by-otherguy/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Dropbox client which syncs a local path with your cloud. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/dropbox-by-otherguy](https://truecharts.org/charts/incubator/dropbox-by-otherguy) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ersatztv/0.0.2/charts/common-11.1.2.tgz b/incubator/dropbox-by-otherguy/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/ersatztv/0.0.2/charts/common-11.1.2.tgz rename to incubator/dropbox-by-otherguy/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/dropbox-by-otherguy/2.0.7/ix_values.yaml b/incubator/dropbox-by-otherguy/2.0.8/ix_values.yaml similarity index 100% rename from incubator/dropbox-by-otherguy/2.0.7/ix_values.yaml rename to incubator/dropbox-by-otherguy/2.0.8/ix_values.yaml diff --git a/incubator/dropbox-by-otherguy/2.0.8/questions.yaml b/incubator/dropbox-by-otherguy/2.0.8/questions.yaml new file mode 100644 index 00000000000..c7d39c5e56e --- /dev/null +++ b/incubator/dropbox-by-otherguy/2.0.8/questions.yaml @@ -0,0 +1,1569 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DROPBOX_UID + label: "DROPBOX_UID" + description: "Container Variable DROPBOXUID" + schema: + type: string + default: "99" + - variable: DROPBOX_GID + label: "DROPBOX_GID" + description: "Container Variable DROPBOXGID" + schema: + type: string + default: "100" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: dropboxuserfiles + label: "dropboxuserfiles Storage" + description: "Read the description! Do not set this path to mntuser..." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: dropboxsettings + label: "dropboxsettings Storage" + description: "Container Path optdropbox.dropbox" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/dropbox-by-otherguy/2.0.7/templates/common.yaml b/incubator/dropbox-by-otherguy/2.0.8/templates/common.yaml similarity index 100% rename from incubator/dropbox-by-otherguy/2.0.7/templates/common.yaml rename to incubator/dropbox-by-otherguy/2.0.8/templates/common.yaml diff --git a/incubator/ersatztv/0.0.2/values.yaml b/incubator/dropbox-by-otherguy/2.0.8/values.yaml similarity index 100% rename from incubator/ersatztv/0.0.2/values.yaml rename to incubator/dropbox-by-otherguy/2.0.8/values.yaml diff --git a/incubator/ersatztv/0.0.2/CHANGELOG.md b/incubator/ersatztv/0.0.2/CHANGELOG.md deleted file mode 100644 index ff37414a554..00000000000 --- a/incubator/ersatztv/0.0.2/CHANGELOG.md +++ /dev/null @@ -1,17 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ersatztv-0.0.2](https://github.com/truecharts/charts/compare/ersatztv-0.0.1...ersatztv-0.0.2) (2023-01-30) - -### Chore - -- update ersatztv to v0.7.3 - - - - -## [ersatztv-0.0.1]ersatztv-0.0.1 (2023-01-16) - diff --git a/incubator/ersatztv/0.0.2/Chart.yaml b/incubator/ersatztv/0.0.2/Chart.yaml deleted file mode 100644 index 1666083c234..00000000000 --- a/incubator/ersatztv/0.0.2/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "0.7.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: ErsatzTV configuring and streaming custom live channels using your media library. -home: https://truecharts.org/charts/incubator/ersatztv -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ersatztv.png -keywords: - - ersatztv - - media -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ersatztv -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/ersatztv - - https://github.com/jasongdove/ErsatzTV - - https://hub.docker.com/r/jasongdove/ersatztv -type: application -version: 0.0.2 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/ersatztv/0.0.2/app-changelog.md b/incubator/ersatztv/0.0.2/app-changelog.md deleted file mode 100644 index c45e6ae7377..00000000000 --- a/incubator/ersatztv/0.0.2/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ersatztv-0.0.2](https://github.com/truecharts/charts/compare/ersatztv-0.0.1...ersatztv-0.0.2) (2023-01-30) - -### Chore - -- update ersatztv to v0.7.3 - - \ No newline at end of file diff --git a/incubator/ersatztv/0.0.3/CHANGELOG.md b/incubator/ersatztv/0.0.3/CHANGELOG.md new file mode 100644 index 00000000000..186d5476d40 --- /dev/null +++ b/incubator/ersatztv/0.0.3/CHANGELOG.md @@ -0,0 +1,26 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ersatztv-0.0.3](https://github.com/truecharts/charts/compare/ersatztv-0.0.2...ersatztv-0.0.3) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ersatztv-0.0.2](https://github.com/truecharts/charts/compare/ersatztv-0.0.1...ersatztv-0.0.2) (2023-01-30) + +### Chore + +- update ersatztv to v0.7.3 + + + + +## [ersatztv-0.0.1]ersatztv-0.0.1 (2023-01-16) + diff --git a/incubator/ersatztv/0.0.3/Chart.yaml b/incubator/ersatztv/0.0.3/Chart.yaml new file mode 100644 index 00000000000..7a98e1cfe9d --- /dev/null +++ b/incubator/ersatztv/0.0.3/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "0.7.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: ErsatzTV configuring and streaming custom live channels using your media library. +home: https://truecharts.org/charts/incubator/ersatztv +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ersatztv.png +keywords: + - ersatztv + - media +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ersatztv +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/ersatztv + - https://hub.docker.com/jasongdove/ersatztv + - https://github.com/jasongdove/ErsatzTV +type: application +version: 0.0.3 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/ersatztv/0.0.2/README.md b/incubator/ersatztv/0.0.3/README.md similarity index 100% rename from incubator/ersatztv/0.0.2/README.md rename to incubator/ersatztv/0.0.3/README.md diff --git a/incubator/ersatztv/0.0.3/app-changelog.md b/incubator/ersatztv/0.0.3/app-changelog.md new file mode 100644 index 00000000000..7ec13f5442b --- /dev/null +++ b/incubator/ersatztv/0.0.3/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ersatztv-0.0.3](https://github.com/truecharts/charts/compare/ersatztv-0.0.2...ersatztv-0.0.3) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/ersatztv/0.0.2/app-readme.md b/incubator/ersatztv/0.0.3/app-readme.md similarity index 100% rename from incubator/ersatztv/0.0.2/app-readme.md rename to incubator/ersatztv/0.0.3/app-readme.md diff --git a/incubator/etesync/3.0.21/charts/common-11.1.2.tgz b/incubator/ersatztv/0.0.3/charts/common-11.1.2.tgz similarity index 100% rename from incubator/etesync/3.0.21/charts/common-11.1.2.tgz rename to incubator/ersatztv/0.0.3/charts/common-11.1.2.tgz diff --git a/incubator/ersatztv/0.0.2/ix_values.yaml b/incubator/ersatztv/0.0.3/ix_values.yaml similarity index 100% rename from incubator/ersatztv/0.0.2/ix_values.yaml rename to incubator/ersatztv/0.0.3/ix_values.yaml diff --git a/incubator/ersatztv/0.0.2/questions.yaml b/incubator/ersatztv/0.0.3/questions.yaml similarity index 100% rename from incubator/ersatztv/0.0.2/questions.yaml rename to incubator/ersatztv/0.0.3/questions.yaml diff --git a/incubator/ersatztv/0.0.2/templates/common.yaml b/incubator/ersatztv/0.0.3/templates/common.yaml similarity index 100% rename from incubator/ersatztv/0.0.2/templates/common.yaml rename to incubator/ersatztv/0.0.3/templates/common.yaml diff --git a/incubator/etesync/3.0.21/values.yaml b/incubator/ersatztv/0.0.3/values.yaml similarity index 100% rename from incubator/etesync/3.0.21/values.yaml rename to incubator/ersatztv/0.0.3/values.yaml diff --git a/incubator/etesync/3.0.21/CHANGELOG.md b/incubator/etesync/3.0.21/CHANGELOG.md deleted file mode 100644 index ede101bebfe..00000000000 --- a/incubator/etesync/3.0.21/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [etesync-3.0.21](https://github.com/truecharts/charts/compare/etesync-3.0.20...etesync-3.0.21) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [etesync-3.0.20](https://github.com/truecharts/charts/compare/etesync-3.0.19...etesync-3.0.20) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [etesync-3.0.19](https://github.com/truecharts/charts/compare/etesync-3.0.18...etesync-3.0.19) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [etesync-3.0.18](https://github.com/truecharts/charts/compare/etesync-3.0.17...etesync-3.0.18) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [etesync-3.0.17](https://github.com/truecharts/charts/compare/etesync-3.0.16...etesync-3.0.17) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [etesync-3.0.16](https://github.com/truecharts/charts/compare/etesync-3.0.15...etesync-3.0.16) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [etesync-3.0.15](https://github.com/truecharts/charts/compare/etesync-3.0.14...etesync-3.0.15) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [etesync-3.0.14](https://github.com/truecharts/charts/compare/etesync-3.0.13...etesync-3.0.14) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [etesync-3.0.13](https://github.com/truecharts/charts/compare/etesync-3.0.12...etesync-3.0.13) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [etesync-3.0.12](https://github.com/truecharts/charts/compare/etesync-3.0.11...etesync-3.0.12) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - update helm chart redis to v5.0.16 - - - - -## [etesync-3.0.11](https://github.com/truecharts/charts/compare/etesync-3.0.10...etesync-3.0.11) (2022-12-14) - diff --git a/incubator/etesync/3.0.21/Chart.yaml b/incubator/etesync/3.0.21/Chart.yaml deleted file mode 100644 index 12217eeea53..00000000000 --- a/incubator/etesync/3.0.21/Chart.yaml +++ /dev/null @@ -1,49 +0,0 @@ -apiVersion: v2 -appVersion: "0.11.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -deprecated: false -description: Secure, end-to-end encrypted, and privacy respecting sync for your contacts, calendars, tasks and notes. -home: https://truecharts.org/charts/incubator/etesync -icon: https://truecharts.org/img/hotlink-ok/chart-icons/etesync.png -keywords: - - etesync - - sync - - contacts - - calendars - - tasks - - notes -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: etesync -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/etesync - - https://www.etesync.com/ - - https://github.com/etesync - - https://github.com/victor-rds/docker-etebase - - https://hub.docker.com/r/victorrds/etesync -type: application -version: 3.0.21 -annotations: - truecharts.org/catagories: | - - productivity - - sync - - contacts - - calendars - - tasks - - notes - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/etesync/3.0.21/app-changelog.md b/incubator/etesync/3.0.21/app-changelog.md deleted file mode 100644 index 72367023567..00000000000 --- a/incubator/etesync/3.0.21/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [etesync-3.0.21](https://github.com/truecharts/charts/compare/etesync-3.0.20...etesync-3.0.21) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/incubator/etesync/3.0.22/CHANGELOG.md b/incubator/etesync/3.0.22/CHANGELOG.md new file mode 100644 index 00000000000..b6dab064544 --- /dev/null +++ b/incubator/etesync/3.0.22/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [etesync-3.0.22](https://github.com/truecharts/charts/compare/etesync-3.0.21...etesync-3.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [etesync-3.0.21](https://github.com/truecharts/charts/compare/etesync-3.0.20...etesync-3.0.21) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [etesync-3.0.20](https://github.com/truecharts/charts/compare/etesync-3.0.19...etesync-3.0.20) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [etesync-3.0.19](https://github.com/truecharts/charts/compare/etesync-3.0.18...etesync-3.0.19) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [etesync-3.0.18](https://github.com/truecharts/charts/compare/etesync-3.0.17...etesync-3.0.18) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [etesync-3.0.17](https://github.com/truecharts/charts/compare/etesync-3.0.16...etesync-3.0.17) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [etesync-3.0.16](https://github.com/truecharts/charts/compare/etesync-3.0.15...etesync-3.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [etesync-3.0.15](https://github.com/truecharts/charts/compare/etesync-3.0.14...etesync-3.0.15) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [etesync-3.0.14](https://github.com/truecharts/charts/compare/etesync-3.0.13...etesync-3.0.14) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [etesync-3.0.13](https://github.com/truecharts/charts/compare/etesync-3.0.12...etesync-3.0.13) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [etesync-3.0.12](https://github.com/truecharts/charts/compare/etesync-3.0.11...etesync-3.0.12) (2022-12-18) + +### Chore diff --git a/incubator/etesync/3.0.22/Chart.yaml b/incubator/etesync/3.0.22/Chart.yaml new file mode 100644 index 00000000000..ac7b60eb4c8 --- /dev/null +++ b/incubator/etesync/3.0.22/Chart.yaml @@ -0,0 +1,49 @@ +apiVersion: v2 +appVersion: "0.11.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +deprecated: false +description: Secure, end-to-end encrypted, and privacy respecting sync for your contacts, calendars, tasks and notes. +home: https://truecharts.org/charts/incubator/etesync +icon: https://truecharts.org/img/hotlink-ok/chart-icons/etesync.png +keywords: + - etesync + - sync + - contacts + - calendars + - tasks + - notes +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: etesync +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/etesync + - https://hub.docker.com/victorrds/etesync + - https://www.etesync.com/ + - https://github.com/etesync + - https://github.com/victor-rds/docker-etebase +type: application +version: 3.0.22 +annotations: + truecharts.org/catagories: | + - productivity + - sync + - contacts + - calendars + - tasks + - notes + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/etesync/3.0.21/README.md b/incubator/etesync/3.0.22/README.md similarity index 100% rename from incubator/etesync/3.0.21/README.md rename to incubator/etesync/3.0.22/README.md diff --git a/incubator/etesync/3.0.22/app-changelog.md b/incubator/etesync/3.0.22/app-changelog.md new file mode 100644 index 00000000000..89925426715 --- /dev/null +++ b/incubator/etesync/3.0.22/app-changelog.md @@ -0,0 +1,9 @@ + + +## [etesync-3.0.22](https://github.com/truecharts/charts/compare/etesync-3.0.21...etesync-3.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/etesync/3.0.21/app-readme.md b/incubator/etesync/3.0.22/app-readme.md similarity index 100% rename from incubator/etesync/3.0.21/app-readme.md rename to incubator/etesync/3.0.22/app-readme.md diff --git a/incubator/ethercalc/2.0.7/charts/common-11.1.2.tgz b/incubator/etesync/3.0.22/charts/common-11.1.2.tgz similarity index 100% rename from incubator/ethercalc/2.0.7/charts/common-11.1.2.tgz rename to incubator/etesync/3.0.22/charts/common-11.1.2.tgz diff --git a/incubator/etesync/3.0.21/charts/postgresql-11.0.22.tgz b/incubator/etesync/3.0.22/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/etesync/3.0.21/charts/postgresql-11.0.22.tgz rename to incubator/etesync/3.0.22/charts/postgresql-11.0.22.tgz diff --git a/incubator/etesync/3.0.21/charts/redis-5.0.29.tgz b/incubator/etesync/3.0.22/charts/redis-5.0.29.tgz similarity index 100% rename from incubator/etesync/3.0.21/charts/redis-5.0.29.tgz rename to incubator/etesync/3.0.22/charts/redis-5.0.29.tgz diff --git a/incubator/etesync/3.0.21/ix_values.yaml b/incubator/etesync/3.0.22/ix_values.yaml similarity index 100% rename from incubator/etesync/3.0.21/ix_values.yaml rename to incubator/etesync/3.0.22/ix_values.yaml diff --git a/incubator/etesync/3.0.21/questions.yaml b/incubator/etesync/3.0.22/questions.yaml similarity index 100% rename from incubator/etesync/3.0.21/questions.yaml rename to incubator/etesync/3.0.22/questions.yaml diff --git a/incubator/etesync/3.0.21/templates/_secret.tpl b/incubator/etesync/3.0.22/templates/_secret.tpl similarity index 100% rename from incubator/etesync/3.0.21/templates/_secret.tpl rename to incubator/etesync/3.0.22/templates/_secret.tpl diff --git a/incubator/etesync/3.0.21/templates/common.yaml b/incubator/etesync/3.0.22/templates/common.yaml similarity index 100% rename from incubator/etesync/3.0.21/templates/common.yaml rename to incubator/etesync/3.0.22/templates/common.yaml diff --git a/incubator/ethercalc/2.0.7/values.yaml b/incubator/etesync/3.0.22/values.yaml similarity index 100% rename from incubator/ethercalc/2.0.7/values.yaml rename to incubator/etesync/3.0.22/values.yaml diff --git a/incubator/ethercalc/2.0.7/CHANGELOG.md b/incubator/ethercalc/2.0.7/CHANGELOG.md deleted file mode 100644 index a166684772b..00000000000 --- a/incubator/ethercalc/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ethercalc-2.0.7](https://github.com/truecharts/charts/compare/ethercalc-2.0.6...ethercalc-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [ethercalc-2.0.6](https://github.com/truecharts/charts/compare/ethercalc-2.0.5...ethercalc-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [ethercalc-2.0.5](https://github.com/truecharts/charts/compare/ethercalc-2.0.4...ethercalc-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [ethercalc-2.0.4](https://github.com/truecharts/charts/compare/ethercalc-2.0.3...ethercalc-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [ethercalc-2.0.3](https://github.com/truecharts/charts/compare/ethercalc-2.0.2...ethercalc-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - - - -## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) - - diff --git a/incubator/ethercalc/2.0.7/Chart.yaml b/incubator/ethercalc/2.0.7/Chart.yaml deleted file mode 100644 index 68b2841daf5..00000000000 --- a/incubator/ethercalc/2.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "EtherCalc is a web spreadsheet." -home: https://truecharts.org/charts/incubator/ethercalc -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ethercalc.png -keywords: - - ethercalc - - Cloud - - Productivity - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ethercalc -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/ethercalc - - https://github.com/audreyt/ethercalc - - https://hub.docker.com/r/audreyt/ethercalc -type: application -version: 2.0.7 diff --git a/incubator/ethercalc/2.0.7/app-changelog.md b/incubator/ethercalc/2.0.7/app-changelog.md deleted file mode 100644 index fb96657d399..00000000000 --- a/incubator/ethercalc/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ethercalc-2.0.7](https://github.com/truecharts/charts/compare/ethercalc-2.0.6...ethercalc-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/ethercalc/2.0.7/app-readme.md b/incubator/ethercalc/2.0.7/app-readme.md deleted file mode 100644 index 6d5a6dd6065..00000000000 --- a/incubator/ethercalc/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -EtherCalc is a web spreadsheet. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/ethercalc](https://truecharts.org/charts/incubator/ethercalc) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ethercalc/2.0.7/questions.yaml b/incubator/ethercalc/2.0.7/questions.yaml deleted file mode 100644 index 9eee0ab42b1..00000000000 --- a/incubator/ethercalc/2.0.7/questions.yaml +++ /dev/null @@ -1,1770 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: REDIS_PORT_6379_TCP_ADDR - label: "REDIS_PORT_6379_TCP_ADDR" - description: "This is the Redis server IP. Delete that entry if not used." - schema: - type: string - default: "" - - variable: REDIS_PORT_6379_TCP_PORT - label: "REDIS_PORT_6379_TCP_PORT" - description: "This is the Redis server port. Delete that entry if not used." - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8084 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/ethercalc/2.0.8/CHANGELOG.md b/incubator/ethercalc/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..d66081cbcb3 --- /dev/null +++ b/incubator/ethercalc/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ethercalc-2.0.8](https://github.com/truecharts/charts/compare/ethercalc-2.0.7...ethercalc-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ethercalc-2.0.7](https://github.com/truecharts/charts/compare/ethercalc-2.0.6...ethercalc-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [ethercalc-2.0.6](https://github.com/truecharts/charts/compare/ethercalc-2.0.5...ethercalc-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [ethercalc-2.0.5](https://github.com/truecharts/charts/compare/ethercalc-2.0.4...ethercalc-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [ethercalc-2.0.4](https://github.com/truecharts/charts/compare/ethercalc-2.0.3...ethercalc-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [ethercalc-2.0.3](https://github.com/truecharts/charts/compare/ethercalc-2.0.2...ethercalc-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) + + + + +## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) + + + + +## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) + + + + +## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) + + + + +## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) + + + + +## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) + + + + +## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) + + + + +## [ethercalc-2.0.2](https://github.com/truecharts/charts/compare/ethercalc-2.0.1...ethercalc-2.0.2) (2022-11-30) + + + diff --git a/incubator/ethercalc/2.0.8/Chart.yaml b/incubator/ethercalc/2.0.8/Chart.yaml new file mode 100644 index 00000000000..4ca167d4919 --- /dev/null +++ b/incubator/ethercalc/2.0.8/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "EtherCalc is a web spreadsheet." +home: https://truecharts.org/charts/incubator/ethercalc +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ethercalc.png +keywords: + - ethercalc + - Cloud + - Productivity + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ethercalc +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/ethercalc + - https://hub.docker.com/audreyt/ethercalc + - https://github.com/audreyt/ethercalc +type: application +version: 2.0.8 diff --git a/incubator/ethercalc/2.0.7/README.md b/incubator/ethercalc/2.0.8/README.md similarity index 100% rename from incubator/ethercalc/2.0.7/README.md rename to incubator/ethercalc/2.0.8/README.md diff --git a/incubator/ethercalc/2.0.8/app-changelog.md b/incubator/ethercalc/2.0.8/app-changelog.md new file mode 100644 index 00000000000..816a0ac1f02 --- /dev/null +++ b/incubator/ethercalc/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ethercalc-2.0.8](https://github.com/truecharts/charts/compare/ethercalc-2.0.7...ethercalc-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/ethercalc/2.0.8/app-readme.md b/incubator/ethercalc/2.0.8/app-readme.md new file mode 100644 index 00000000000..81bbfe9e9ab --- /dev/null +++ b/incubator/ethercalc/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +EtherCalc is a web spreadsheet. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/ethercalc](https://truecharts.org/charts/incubator/ethercalc) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/euterpe/3.0.8/charts/common-11.1.2.tgz b/incubator/ethercalc/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/euterpe/3.0.8/charts/common-11.1.2.tgz rename to incubator/ethercalc/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/ethercalc/2.0.7/ix_values.yaml b/incubator/ethercalc/2.0.8/ix_values.yaml similarity index 100% rename from incubator/ethercalc/2.0.7/ix_values.yaml rename to incubator/ethercalc/2.0.8/ix_values.yaml diff --git a/incubator/ethercalc/2.0.8/questions.yaml b/incubator/ethercalc/2.0.8/questions.yaml new file mode 100644 index 00000000000..4d6a561316f --- /dev/null +++ b/incubator/ethercalc/2.0.8/questions.yaml @@ -0,0 +1,1811 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: REDIS_PORT_6379_TCP_ADDR + label: "REDIS_PORT_6379_TCP_ADDR" + description: "This is the Redis server IP. Delete that entry if not used." + schema: + type: string + default: "" + - variable: REDIS_PORT_6379_TCP_PORT + label: "REDIS_PORT_6379_TCP_PORT" + description: "This is the Redis server port. Delete that entry if not used." + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8084 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/ethercalc/2.0.7/templates/common.yaml b/incubator/ethercalc/2.0.8/templates/common.yaml similarity index 100% rename from incubator/ethercalc/2.0.7/templates/common.yaml rename to incubator/ethercalc/2.0.8/templates/common.yaml diff --git a/incubator/euterpe/3.0.8/values.yaml b/incubator/ethercalc/2.0.8/values.yaml similarity index 100% rename from incubator/euterpe/3.0.8/values.yaml rename to incubator/ethercalc/2.0.8/values.yaml diff --git a/incubator/euterpe/3.0.8/CHANGELOG.md b/incubator/euterpe/3.0.8/CHANGELOG.md deleted file mode 100644 index 1eee755578f..00000000000 --- a/incubator/euterpe/3.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [euterpe-3.0.8](https://github.com/truecharts/charts/compare/euterpe-3.0.7...euterpe-3.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [euterpe-3.0.7](https://github.com/truecharts/charts/compare/euterpe-3.0.6...euterpe-3.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [euterpe-3.0.6](https://github.com/truecharts/charts/compare/euterpe-3.0.5...euterpe-3.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [euterpe-3.0.5](https://github.com/truecharts/charts/compare/euterpe-3.0.4...euterpe-3.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [euterpe-3.0.4](https://github.com/truecharts/charts/compare/euterpe-3.0.3...euterpe-3.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [euterpe-3.0.3](https://github.com/truecharts/charts/compare/euterpe-3.0.2...euterpe-3.0.3) (2022-12-11) - -### Fix - -- fix gui - - - - -## [euterpe-3.0.2](https://github.com/truecharts/charts/compare/euterpe-3.0.1...euterpe-3.0.2) (2022-12-11) - - - - -## [euterpe-3.0.1](https://github.com/truecharts/charts/compare/euterpe-3.0.0...euterpe-3.0.1) (2022-12-11) - -### Fix - -- decode keys before reencode ([#5258](https://github.com/truecharts/charts/issues/5258)) - - - - -## [euterpe-3.0.0](https://github.com/truecharts/charts/compare/euterpe-2.0.3...euterpe-3.0.0) (2022-12-08) - - - - -## [euterpe-2.0.3](https://github.com/truecharts/charts/compare/euterpe-2.0.2...euterpe-2.0.3) (2022-11-30) - - - - -## [euterpe-2.0.3](https://github.com/truecharts/charts/compare/euterpe-2.0.2...euterpe-2.0.3) (2022-11-30) - - - - -## [euterpe-2.0.3](https://github.com/truecharts/charts/compare/euterpe-2.0.2...euterpe-2.0.3) (2022-11-30) - - - - -## [euterpe-2.0.3](https://github.com/truecharts/charts/compare/euterpe-2.0.2...euterpe-2.0.3) (2022-11-30) - - - - diff --git a/incubator/euterpe/3.0.8/Chart.yaml b/incubator/euterpe/3.0.8/Chart.yaml deleted file mode 100644 index fe18a0bc090..00000000000 --- a/incubator/euterpe/3.0.8/Chart.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: v2 -appVersion: "1.5.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Self-hosted streaming service for music, formerly known as HTTP Media Server. -home: https://truecharts.org/charts/incubator/euterpe -icon: https://truecharts.org/img/hotlink-ok/chart-icons/euterpe.png -keywords: - - euterpe - - Productivity - - Tools-Utilities - - MediaApp-Music - - MediaServer-Music -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: euterpe -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/euterpe - - https://github.com/ironsmile/euterpe - - https://hub.docker.com/r/ironsmile/euterpe -type: application -version: 3.0.8 -annotations: - truecharts.org/catagories: | - - Productivity - - Tools-Utilities - - MediaApp-Music - - MediaServer-Music - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/euterpe/3.0.8/app-changelog.md b/incubator/euterpe/3.0.8/app-changelog.md deleted file mode 100644 index 6a9201ebde9..00000000000 --- a/incubator/euterpe/3.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [euterpe-3.0.8](https://github.com/truecharts/charts/compare/euterpe-3.0.7...euterpe-3.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/euterpe/3.0.8/app-readme.md b/incubator/euterpe/3.0.8/app-readme.md deleted file mode 100644 index ee595e62cca..00000000000 --- a/incubator/euterpe/3.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Self-hosted streaming service for music, formerly known as HTTP Media Server. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/euterpe](https://truecharts.org/charts/incubator/euterpe) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/euterpe/3.0.8/questions.yaml b/incubator/euterpe/3.0.8/questions.yaml deleted file mode 100644 index 59d989f77c7..00000000000 --- a/incubator/euterpe/3.0.8/questions.yaml +++ /dev/null @@ -1,1944 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: euterpe - group: App Configuration - label: Discord GSM Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: basic_authenticate - label: Enable Basic Authenticate - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: authentication - label: Authentication - schema: - additional_attrs: true - type: dict - attrs: - - variable: user - label: Basic Auth Username - schema: - type: string - required: true - default: "" - - variable: password - label: Basic Auth Password - schema: - type: string - required: true - default: "" - - variable: libraries - label: Libraries - description: The `/root/Music` library is automatically added. - schema: - type: list - default: [] - items: - - variable: libraryEntry - label: Library Entry - schema: - type: string - required: true - default: "" - - variable: library_scan - label: Library Scan - schema: - additional_attrs: true - type: dict - attrs: - - variable: initial_wait_duration - label: Initial Wait Duration - schema: - type: string - default: 1s - - variable: files_per_operation - label: Files Per Operation - schema: - type: int - default: 1500 - - variable: sleep_after_operation - label: Sleep After Operation - schema: - type: string - default: 15ms - - variable: discogs - label: Discogs Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: discogs_auth_token - label: Discogs Auth Token - schema: - type: string - default: "" - - variable: download_artwork - label: Download Artwork - schema: - type: boolean - default: false - - variable: show_danger_zone - label: Show Danger Zone Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: danger_zone - label: Danger Zone Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: gzip - label: gzip - schema: - type: boolean - default: true - - variable: read_timeout - label: Read Timeout - schema: - type: int - default: 15 - - variable: write_timeout - label: Write Timeout - schema: - type: int - default: 1200 - - variable: max_header_bytes - label: Max Header Bytes - schema: - type: int - default: 1048576 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 9996 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: music - label: App Music Storage - description: Stores the Application Music. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/euterpe/3.0.9/CHANGELOG.md b/incubator/euterpe/3.0.9/CHANGELOG.md new file mode 100644 index 00000000000..ec1a73d2a4e --- /dev/null +++ b/incubator/euterpe/3.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [euterpe-3.0.9](https://github.com/truecharts/charts/compare/euterpe-3.0.8...euterpe-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [euterpe-3.0.8](https://github.com/truecharts/charts/compare/euterpe-3.0.7...euterpe-3.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [euterpe-3.0.7](https://github.com/truecharts/charts/compare/euterpe-3.0.6...euterpe-3.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [euterpe-3.0.6](https://github.com/truecharts/charts/compare/euterpe-3.0.5...euterpe-3.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [euterpe-3.0.5](https://github.com/truecharts/charts/compare/euterpe-3.0.4...euterpe-3.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [euterpe-3.0.4](https://github.com/truecharts/charts/compare/euterpe-3.0.3...euterpe-3.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [euterpe-3.0.3](https://github.com/truecharts/charts/compare/euterpe-3.0.2...euterpe-3.0.3) (2022-12-11) + +### Fix + +- fix gui + + + + +## [euterpe-3.0.2](https://github.com/truecharts/charts/compare/euterpe-3.0.1...euterpe-3.0.2) (2022-12-11) + + + + +## [euterpe-3.0.1](https://github.com/truecharts/charts/compare/euterpe-3.0.0...euterpe-3.0.1) (2022-12-11) + +### Fix + +- decode keys before reencode ([#5258](https://github.com/truecharts/charts/issues/5258)) + + + + +## [euterpe-3.0.0](https://github.com/truecharts/charts/compare/euterpe-2.0.3...euterpe-3.0.0) (2022-12-08) + + + + +## [euterpe-2.0.3](https://github.com/truecharts/charts/compare/euterpe-2.0.2...euterpe-2.0.3) (2022-11-30) + + + + +## [euterpe-2.0.3](https://github.com/truecharts/charts/compare/euterpe-2.0.2...euterpe-2.0.3) (2022-11-30) + + + + +## [euterpe-2.0.3](https://github.com/truecharts/charts/compare/euterpe-2.0.2...euterpe-2.0.3) (2022-11-30) diff --git a/incubator/euterpe/3.0.9/Chart.yaml b/incubator/euterpe/3.0.9/Chart.yaml new file mode 100644 index 00000000000..0312e47efa4 --- /dev/null +++ b/incubator/euterpe/3.0.9/Chart.yaml @@ -0,0 +1,36 @@ +apiVersion: v2 +appVersion: "1.5.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Self-hosted streaming service for music, formerly known as HTTP Media Server. +home: https://truecharts.org/charts/incubator/euterpe +icon: https://truecharts.org/img/hotlink-ok/chart-icons/euterpe.png +keywords: + - euterpe + - Productivity + - Tools-Utilities + - MediaApp-Music + - MediaServer-Music +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: euterpe +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/euterpe + - https://hub.docker.com/ironsmile/euterpe + - https://github.com/ironsmile/euterpe +type: application +version: 3.0.9 +annotations: + truecharts.org/catagories: | + - Productivity + - Tools-Utilities + - MediaApp-Music + - MediaServer-Music + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/euterpe/3.0.8/README.md b/incubator/euterpe/3.0.9/README.md similarity index 100% rename from incubator/euterpe/3.0.8/README.md rename to incubator/euterpe/3.0.9/README.md diff --git a/incubator/euterpe/3.0.9/app-changelog.md b/incubator/euterpe/3.0.9/app-changelog.md new file mode 100644 index 00000000000..694ef91bf75 --- /dev/null +++ b/incubator/euterpe/3.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [euterpe-3.0.9](https://github.com/truecharts/charts/compare/euterpe-3.0.8...euterpe-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/euterpe/3.0.9/app-readme.md b/incubator/euterpe/3.0.9/app-readme.md new file mode 100644 index 00000000000..91822333cc0 --- /dev/null +++ b/incubator/euterpe/3.0.9/app-readme.md @@ -0,0 +1,8 @@ +Self-hosted streaming service for music, formerly known as HTTP Media Server. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/euterpe](https://truecharts.org/charts/incubator/euterpe) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/explainshell/2.0.7/charts/common-11.1.2.tgz b/incubator/euterpe/3.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/explainshell/2.0.7/charts/common-11.1.2.tgz rename to incubator/euterpe/3.0.9/charts/common-11.1.2.tgz diff --git a/incubator/euterpe/3.0.8/ix_values.yaml b/incubator/euterpe/3.0.9/ix_values.yaml similarity index 100% rename from incubator/euterpe/3.0.8/ix_values.yaml rename to incubator/euterpe/3.0.9/ix_values.yaml diff --git a/incubator/euterpe/3.0.9/questions.yaml b/incubator/euterpe/3.0.9/questions.yaml new file mode 100644 index 00000000000..8dc15249053 --- /dev/null +++ b/incubator/euterpe/3.0.9/questions.yaml @@ -0,0 +1,1985 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: euterpe + group: App Configuration + label: Discord GSM Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: basic_authenticate + label: Enable Basic Authenticate + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: authentication + label: Authentication + schema: + additional_attrs: true + type: dict + attrs: + - variable: user + label: Basic Auth Username + schema: + type: string + required: true + default: "" + - variable: password + label: Basic Auth Password + schema: + type: string + required: true + default: "" + - variable: libraries + label: Libraries + description: The `/root/Music` library is automatically added. + schema: + type: list + default: [] + items: + - variable: libraryEntry + label: Library Entry + schema: + type: string + required: true + default: "" + - variable: library_scan + label: Library Scan + schema: + additional_attrs: true + type: dict + attrs: + - variable: initial_wait_duration + label: Initial Wait Duration + schema: + type: string + default: 1s + - variable: files_per_operation + label: Files Per Operation + schema: + type: int + default: 1500 + - variable: sleep_after_operation + label: Sleep After Operation + schema: + type: string + default: 15ms + - variable: discogs + label: Discogs Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: discogs_auth_token + label: Discogs Auth Token + schema: + type: string + default: "" + - variable: download_artwork + label: Download Artwork + schema: + type: boolean + default: false + - variable: show_danger_zone + label: Show Danger Zone Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: danger_zone + label: Danger Zone Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: gzip + label: gzip + schema: + type: boolean + default: true + - variable: read_timeout + label: Read Timeout + schema: + type: int + default: 15 + - variable: write_timeout + label: Write Timeout + schema: + type: int + default: 1200 + - variable: max_header_bytes + label: Max Header Bytes + schema: + type: int + default: 1048576 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 9996 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: music + label: App Music Storage + description: Stores the Application Music. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/euterpe/3.0.8/templates/_secret.tpl b/incubator/euterpe/3.0.9/templates/_secret.tpl similarity index 100% rename from incubator/euterpe/3.0.8/templates/_secret.tpl rename to incubator/euterpe/3.0.9/templates/_secret.tpl diff --git a/incubator/euterpe/3.0.8/templates/common.yaml b/incubator/euterpe/3.0.9/templates/common.yaml similarity index 100% rename from incubator/euterpe/3.0.8/templates/common.yaml rename to incubator/euterpe/3.0.9/templates/common.yaml diff --git a/incubator/explainshell/2.0.7/values.yaml b/incubator/euterpe/3.0.9/values.yaml similarity index 100% rename from incubator/explainshell/2.0.7/values.yaml rename to incubator/euterpe/3.0.9/values.yaml diff --git a/incubator/explainshell/2.0.7/CHANGELOG.md b/incubator/explainshell/2.0.7/CHANGELOG.md deleted file mode 100644 index e6d7f3783c4..00000000000 --- a/incubator/explainshell/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [explainshell-2.0.7](https://github.com/truecharts/charts/compare/explainshell-2.0.6...explainshell-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [explainshell-2.0.6](https://github.com/truecharts/charts/compare/explainshell-2.0.5...explainshell-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [explainshell-2.0.5](https://github.com/truecharts/charts/compare/explainshell-2.0.4...explainshell-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [explainshell-2.0.4](https://github.com/truecharts/charts/compare/explainshell-2.0.3...explainshell-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [explainshell-2.0.3](https://github.com/truecharts/charts/compare/explainshell-2.0.2...explainshell-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - - - -## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) - - diff --git a/incubator/explainshell/2.0.7/Chart.yaml b/incubator/explainshell/2.0.7/Chart.yaml deleted file mode 100644 index f2f087c37ed..00000000000 --- a/incubator/explainshell/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Not everyone, especially people new to Linux and Unraid, know what a command that they type i will actually do." -home: https://truecharts.org/charts/incubator/explainshell -icon: https://truecharts.org/img/hotlink-ok/chart-icons/explainshell.png -keywords: - - explainshell - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: explainshell -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/explainshell - - https://github.com/idank/explainshell - - https://hub.docker.com/r/spaceinvaderone/explainshell -type: application -version: 2.0.7 diff --git a/incubator/explainshell/2.0.7/app-changelog.md b/incubator/explainshell/2.0.7/app-changelog.md deleted file mode 100644 index 622def60049..00000000000 --- a/incubator/explainshell/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [explainshell-2.0.7](https://github.com/truecharts/charts/compare/explainshell-2.0.6...explainshell-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/explainshell/2.0.7/app-readme.md b/incubator/explainshell/2.0.7/app-readme.md deleted file mode 100644 index a984402155f..00000000000 --- a/incubator/explainshell/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Not everyone, especially people new to Linux and Unraid, know what a command that they type i will actually do. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/explainshell](https://truecharts.org/charts/incubator/explainshell) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/explainshell/2.0.7/questions.yaml b/incubator/explainshell/2.0.7/questions.yaml deleted file mode 100644 index c688869148e..00000000000 --- a/incubator/explainshell/2.0.7/questions.yaml +++ /dev/null @@ -1,1402 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/explainshell/2.0.8/CHANGELOG.md b/incubator/explainshell/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..15b92a78acb --- /dev/null +++ b/incubator/explainshell/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [explainshell-2.0.8](https://github.com/truecharts/charts/compare/explainshell-2.0.7...explainshell-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [explainshell-2.0.7](https://github.com/truecharts/charts/compare/explainshell-2.0.6...explainshell-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [explainshell-2.0.6](https://github.com/truecharts/charts/compare/explainshell-2.0.5...explainshell-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [explainshell-2.0.5](https://github.com/truecharts/charts/compare/explainshell-2.0.4...explainshell-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [explainshell-2.0.4](https://github.com/truecharts/charts/compare/explainshell-2.0.3...explainshell-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [explainshell-2.0.3](https://github.com/truecharts/charts/compare/explainshell-2.0.2...explainshell-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) + + + + +## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) + + + + +## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) + + + + +## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) + + + + +## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) + + + + +## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) + + + + +## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) + + + + +## [explainshell-2.0.2](https://github.com/truecharts/charts/compare/explainshell-2.0.1...explainshell-2.0.2) (2022-11-30) + + + diff --git a/incubator/explainshell/2.0.8/Chart.yaml b/incubator/explainshell/2.0.8/Chart.yaml new file mode 100644 index 00000000000..9291a2050be --- /dev/null +++ b/incubator/explainshell/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Not everyone, especially people new to Linux and Unraid, know what a command that they type i will actually do." +home: https://truecharts.org/charts/incubator/explainshell +icon: https://truecharts.org/img/hotlink-ok/chart-icons/explainshell.png +keywords: + - explainshell + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: explainshell +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/explainshell + - https://hub.docker.com/spaceinvaderone/explainshell + - https://github.com/idank/explainshell +type: application +version: 2.0.8 diff --git a/incubator/explainshell/2.0.7/README.md b/incubator/explainshell/2.0.8/README.md similarity index 100% rename from incubator/explainshell/2.0.7/README.md rename to incubator/explainshell/2.0.8/README.md diff --git a/incubator/explainshell/2.0.8/app-changelog.md b/incubator/explainshell/2.0.8/app-changelog.md new file mode 100644 index 00000000000..edc1ea95d03 --- /dev/null +++ b/incubator/explainshell/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [explainshell-2.0.8](https://github.com/truecharts/charts/compare/explainshell-2.0.7...explainshell-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/explainshell/2.0.8/app-readme.md b/incubator/explainshell/2.0.8/app-readme.md new file mode 100644 index 00000000000..0e2c8e75632 --- /dev/null +++ b/incubator/explainshell/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Not everyone, especially people new to Linux and Unraid, know what a command that they type i will actually do. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/explainshell](https://truecharts.org/charts/incubator/explainshell) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/factorioservermanager/2.0.7/charts/common-11.1.2.tgz b/incubator/explainshell/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/factorioservermanager/2.0.7/charts/common-11.1.2.tgz rename to incubator/explainshell/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/explainshell/2.0.7/ix_values.yaml b/incubator/explainshell/2.0.8/ix_values.yaml similarity index 100% rename from incubator/explainshell/2.0.7/ix_values.yaml rename to incubator/explainshell/2.0.8/ix_values.yaml diff --git a/incubator/explainshell/2.0.8/questions.yaml b/incubator/explainshell/2.0.8/questions.yaml new file mode 100644 index 00000000000..7a0e5c3cf49 --- /dev/null +++ b/incubator/explainshell/2.0.8/questions.yaml @@ -0,0 +1,1402 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/explainshell/2.0.7/templates/common.yaml b/incubator/explainshell/2.0.8/templates/common.yaml similarity index 100% rename from incubator/explainshell/2.0.7/templates/common.yaml rename to incubator/explainshell/2.0.8/templates/common.yaml diff --git a/incubator/factorioservermanager/2.0.7/values.yaml b/incubator/explainshell/2.0.8/values.yaml similarity index 100% rename from incubator/factorioservermanager/2.0.7/values.yaml rename to incubator/explainshell/2.0.8/values.yaml diff --git a/incubator/factorioservermanager/2.0.7/CHANGELOG.md b/incubator/factorioservermanager/2.0.7/CHANGELOG.md deleted file mode 100644 index 9a00e89cfc6..00000000000 --- a/incubator/factorioservermanager/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [factorioservermanager-2.0.7](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.6...factorioservermanager-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [factorioservermanager-2.0.6](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.5...factorioservermanager-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [factorioservermanager-2.0.5](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.4...factorioservermanager-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [factorioservermanager-2.0.4](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.3...factorioservermanager-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [factorioservermanager-2.0.3](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.2...factorioservermanager-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - - - -## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) - - diff --git a/incubator/factorioservermanager/2.0.7/Chart.yaml b/incubator/factorioservermanager/2.0.7/Chart.yaml deleted file mode 100644 index 7f0c0510ff0..00000000000 --- a/incubator/factorioservermanager/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - GameServers -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "A tool for managing Factorio servers " -home: https://truecharts.org/charts/incubator/factorioservermanager -icon: https://truecharts.org/img/hotlink-ok/chart-icons/factorioservermanager.png -keywords: - - factorioservermanager - - GameServers -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: factorioservermanager -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/factorioservermanager - - https://github.com/OpenFactorioServerManager/factorio-server-manager - - https://hub.docker.com/r/ofsm/ofsm -type: application -version: 2.0.7 diff --git a/incubator/factorioservermanager/2.0.7/app-changelog.md b/incubator/factorioservermanager/2.0.7/app-changelog.md deleted file mode 100644 index c5e2faad809..00000000000 --- a/incubator/factorioservermanager/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [factorioservermanager-2.0.7](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.6...factorioservermanager-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/factorioservermanager/2.0.7/app-readme.md b/incubator/factorioservermanager/2.0.7/app-readme.md deleted file mode 100644 index 2e37a32c920..00000000000 --- a/incubator/factorioservermanager/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A tool for managing Factorio servers - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/factorioservermanager](https://truecharts.org/charts/incubator/factorioservermanager) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/factorioservermanager/2.0.7/questions.yaml b/incubator/factorioservermanager/2.0.7/questions.yaml deleted file mode 100644 index a687b47e544..00000000000 --- a/incubator/factorioservermanager/2.0.7/questions.yaml +++ /dev/null @@ -1,2019 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8888 - required: true - - variable: factorioport - label: 'factorioport service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: factorioport - label: "factorioport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 34197 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: fsmsaves - label: "fsmsaves Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: fsmmods - label: "fsmmods Storage" - description: "(can be left as it is)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: config - label: "config Storage" - description: "(can be left as it is)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/factorioservermanager/2.0.8/CHANGELOG.md b/incubator/factorioservermanager/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..37ac5f8ef26 --- /dev/null +++ b/incubator/factorioservermanager/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [factorioservermanager-2.0.8](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.7...factorioservermanager-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [factorioservermanager-2.0.7](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.6...factorioservermanager-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [factorioservermanager-2.0.6](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.5...factorioservermanager-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [factorioservermanager-2.0.5](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.4...factorioservermanager-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [factorioservermanager-2.0.4](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.3...factorioservermanager-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [factorioservermanager-2.0.3](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.2...factorioservermanager-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) + + + + +## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) + + + + +## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) + + + + +## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) + + + + +## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) + + + + +## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) + + + + +## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) + + + + +## [factorioservermanager-2.0.2](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.1...factorioservermanager-2.0.2) (2022-11-30) + + + diff --git a/incubator/factorioservermanager/2.0.8/Chart.yaml b/incubator/factorioservermanager/2.0.8/Chart.yaml new file mode 100644 index 00000000000..35a82798829 --- /dev/null +++ b/incubator/factorioservermanager/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - GameServers +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "A tool for managing Factorio servers " +home: https://truecharts.org/charts/incubator/factorioservermanager +icon: https://truecharts.org/img/hotlink-ok/chart-icons/factorioservermanager.png +keywords: + - factorioservermanager + - GameServers +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: factorioservermanager +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/factorioservermanager + - https://hub.docker.com/ofsm/ofsm + - https://github.com/OpenFactorioServerManager/factorio-server-manager +type: application +version: 2.0.8 diff --git a/incubator/factorioservermanager/2.0.7/README.md b/incubator/factorioservermanager/2.0.8/README.md similarity index 100% rename from incubator/factorioservermanager/2.0.7/README.md rename to incubator/factorioservermanager/2.0.8/README.md diff --git a/incubator/factorioservermanager/2.0.8/app-changelog.md b/incubator/factorioservermanager/2.0.8/app-changelog.md new file mode 100644 index 00000000000..24b4c304120 --- /dev/null +++ b/incubator/factorioservermanager/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [factorioservermanager-2.0.8](https://github.com/truecharts/charts/compare/factorioservermanager-2.0.7...factorioservermanager-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/factorioservermanager/2.0.8/app-readme.md b/incubator/factorioservermanager/2.0.8/app-readme.md new file mode 100644 index 00000000000..f99f6d25a3e --- /dev/null +++ b/incubator/factorioservermanager/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +A tool for managing Factorio servers + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/factorioservermanager](https://truecharts.org/charts/incubator/factorioservermanager) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/facturascripts/2.0.7/charts/common-11.1.2.tgz b/incubator/factorioservermanager/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/facturascripts/2.0.7/charts/common-11.1.2.tgz rename to incubator/factorioservermanager/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/factorioservermanager/2.0.7/ix_values.yaml b/incubator/factorioservermanager/2.0.8/ix_values.yaml similarity index 100% rename from incubator/factorioservermanager/2.0.7/ix_values.yaml rename to incubator/factorioservermanager/2.0.8/ix_values.yaml diff --git a/incubator/factorioservermanager/2.0.8/questions.yaml b/incubator/factorioservermanager/2.0.8/questions.yaml new file mode 100644 index 00000000000..a0b8fe798b3 --- /dev/null +++ b/incubator/factorioservermanager/2.0.8/questions.yaml @@ -0,0 +1,2060 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8888 + required: true + - variable: factorioport + label: 'factorioport service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: factorioport + label: "factorioport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 34197 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsmsaves + label: "fsmsaves Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: fsmmods + label: "fsmmods Storage" + description: "(can be left as it is)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: config + label: "config Storage" + description: "(can be left as it is)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/factorioservermanager/2.0.7/templates/common.yaml b/incubator/factorioservermanager/2.0.8/templates/common.yaml similarity index 100% rename from incubator/factorioservermanager/2.0.7/templates/common.yaml rename to incubator/factorioservermanager/2.0.8/templates/common.yaml diff --git a/incubator/facturascripts/2.0.7/values.yaml b/incubator/factorioservermanager/2.0.8/values.yaml similarity index 100% rename from incubator/facturascripts/2.0.7/values.yaml rename to incubator/factorioservermanager/2.0.8/values.yaml diff --git a/incubator/facturascripts/2.0.7/CHANGELOG.md b/incubator/facturascripts/2.0.7/CHANGELOG.md deleted file mode 100644 index 42c11497b23..00000000000 --- a/incubator/facturascripts/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [facturascripts-2.0.7](https://github.com/truecharts/charts/compare/facturascripts-2.0.6...facturascripts-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [facturascripts-2.0.6](https://github.com/truecharts/charts/compare/facturascripts-2.0.5...facturascripts-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [facturascripts-2.0.5](https://github.com/truecharts/charts/compare/facturascripts-2.0.4...facturascripts-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [facturascripts-2.0.4](https://github.com/truecharts/charts/compare/facturascripts-2.0.3...facturascripts-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [facturascripts-2.0.3](https://github.com/truecharts/charts/compare/facturascripts-2.0.2...facturascripts-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - - - -## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) - - diff --git a/incubator/facturascripts/2.0.7/Chart.yaml b/incubator/facturascripts/2.0.7/Chart.yaml deleted file mode 100644 index ddae48fa52e..00000000000 --- a/incubator/facturascripts/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "FacturaScripts is an accounting, billing and CRM program with it you can manage the day to day of your company: invoices, receipts, expenses, budgets, orders, delivery notes, inventory..." -home: https://truecharts.org/charts/incubator/facturascripts -icon: https://truecharts.org/img/hotlink-ok/chart-icons/facturascripts.png -keywords: - - facturascripts - - Cloud - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: facturascripts -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/facturascripts - - https://facturascripts.com/ - - https://hub.docker.com/r/unraides/facturascripts -type: application -version: 2.0.7 diff --git a/incubator/facturascripts/2.0.7/app-changelog.md b/incubator/facturascripts/2.0.7/app-changelog.md deleted file mode 100644 index 83485d03b7d..00000000000 --- a/incubator/facturascripts/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [facturascripts-2.0.7](https://github.com/truecharts/charts/compare/facturascripts-2.0.6...facturascripts-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/facturascripts/2.0.7/app-readme.md b/incubator/facturascripts/2.0.7/app-readme.md deleted file mode 100644 index 42efcbe5b8a..00000000000 --- a/incubator/facturascripts/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -FacturaScripts is an accounting, billing and CRM program with it you can manage the day to day of your company: invoices, receipts, expenses, budgets, orders, delivery notes, inventory... - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/facturascripts](https://truecharts.org/charts/incubator/facturascripts) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/facturascripts/2.0.7/questions.yaml b/incubator/facturascripts/2.0.7/questions.yaml deleted file mode 100644 index 48e95c3b001..00000000000 --- a/incubator/facturascripts/2.0.7/questions.yaml +++ /dev/null @@ -1,1828 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 31000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: appdata - label: "appdata Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/facturascripts/2.0.8/CHANGELOG.md b/incubator/facturascripts/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..d504f4032cb --- /dev/null +++ b/incubator/facturascripts/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [facturascripts-2.0.8](https://github.com/truecharts/charts/compare/facturascripts-2.0.7...facturascripts-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [facturascripts-2.0.7](https://github.com/truecharts/charts/compare/facturascripts-2.0.6...facturascripts-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [facturascripts-2.0.6](https://github.com/truecharts/charts/compare/facturascripts-2.0.5...facturascripts-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [facturascripts-2.0.5](https://github.com/truecharts/charts/compare/facturascripts-2.0.4...facturascripts-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [facturascripts-2.0.4](https://github.com/truecharts/charts/compare/facturascripts-2.0.3...facturascripts-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [facturascripts-2.0.3](https://github.com/truecharts/charts/compare/facturascripts-2.0.2...facturascripts-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) + + + + +## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) + + + + +## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) + + + + +## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) + + + + +## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) + + + + +## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) + + + + +## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) + + + + +## [facturascripts-2.0.2](https://github.com/truecharts/charts/compare/facturascripts-2.0.1...facturascripts-2.0.2) (2022-11-30) + + + diff --git a/incubator/facturascripts/2.0.8/Chart.yaml b/incubator/facturascripts/2.0.8/Chart.yaml new file mode 100644 index 00000000000..ceb048c8670 --- /dev/null +++ b/incubator/facturascripts/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "FacturaScripts is an accounting, billing and CRM program with it you can manage the day to day of your company: invoices, receipts, expenses, budgets, orders, delivery notes, inventory..." +home: https://truecharts.org/charts/incubator/facturascripts +icon: https://truecharts.org/img/hotlink-ok/chart-icons/facturascripts.png +keywords: + - facturascripts + - Cloud + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: facturascripts +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/facturascripts + - https://hub.docker.com/unraides/facturascripts + - https://facturascripts.com/ +type: application +version: 2.0.8 diff --git a/incubator/facturascripts/2.0.7/README.md b/incubator/facturascripts/2.0.8/README.md similarity index 100% rename from incubator/facturascripts/2.0.7/README.md rename to incubator/facturascripts/2.0.8/README.md diff --git a/incubator/facturascripts/2.0.8/app-changelog.md b/incubator/facturascripts/2.0.8/app-changelog.md new file mode 100644 index 00000000000..491aca4cb7a --- /dev/null +++ b/incubator/facturascripts/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [facturascripts-2.0.8](https://github.com/truecharts/charts/compare/facturascripts-2.0.7...facturascripts-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/facturascripts/2.0.8/app-readme.md b/incubator/facturascripts/2.0.8/app-readme.md new file mode 100644 index 00000000000..6fd2dceebaf --- /dev/null +++ b/incubator/facturascripts/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +FacturaScripts is an accounting, billing and CRM program with it you can manage the day to day of your company: invoices, receipts, expenses, budgets, orders, delivery notes, inventory... + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/facturascripts](https://truecharts.org/charts/incubator/facturascripts) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/farmos/2.0.11/charts/common-11.1.2.tgz b/incubator/facturascripts/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/farmos/2.0.11/charts/common-11.1.2.tgz rename to incubator/facturascripts/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/facturascripts/2.0.7/ix_values.yaml b/incubator/facturascripts/2.0.8/ix_values.yaml similarity index 100% rename from incubator/facturascripts/2.0.7/ix_values.yaml rename to incubator/facturascripts/2.0.8/ix_values.yaml diff --git a/incubator/facturascripts/2.0.8/questions.yaml b/incubator/facturascripts/2.0.8/questions.yaml new file mode 100644 index 00000000000..72ccb59205c --- /dev/null +++ b/incubator/facturascripts/2.0.8/questions.yaml @@ -0,0 +1,1869 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 31000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: appdata + label: "appdata Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/facturascripts/2.0.7/templates/common.yaml b/incubator/facturascripts/2.0.8/templates/common.yaml similarity index 100% rename from incubator/facturascripts/2.0.7/templates/common.yaml rename to incubator/facturascripts/2.0.8/templates/common.yaml diff --git a/incubator/farmos/2.0.11/values.yaml b/incubator/facturascripts/2.0.8/values.yaml similarity index 100% rename from incubator/farmos/2.0.11/values.yaml rename to incubator/facturascripts/2.0.8/values.yaml diff --git a/incubator/farmos/2.0.11/CHANGELOG.md b/incubator/farmos/2.0.11/CHANGELOG.md deleted file mode 100644 index c50ddc24383..00000000000 --- a/incubator/farmos/2.0.11/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [farmos-2.0.11](https://github.com/truecharts/charts/compare/farmos-2.0.10...farmos-2.0.11) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/farmos to latest - - - - -## [farmos-2.0.10](https://github.com/truecharts/charts/compare/farmos-2.0.9...farmos-2.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [farmos-2.0.9](https://github.com/truecharts/charts/compare/farmos-2.0.8...farmos-2.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [farmos-2.0.8](https://github.com/truecharts/charts/compare/farmos-2.0.7...farmos-2.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [farmos-2.0.7](https://github.com/truecharts/charts/compare/farmos-2.0.6...farmos-2.0.7) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/farmos to latest - - - - -## [farmos-2.0.6](https://github.com/truecharts/charts/compare/farmos-2.0.5...farmos-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [farmos-2.0.5](https://github.com/truecharts/charts/compare/farmos-2.0.4...farmos-2.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) - - - - -## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) - - - - -## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) - - - - -## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) - - - - -## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) - - - - -## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) - - - - diff --git a/incubator/farmos/2.0.11/Chart.yaml b/incubator/farmos/2.0.11/Chart.yaml deleted file mode 100644 index d25a0ab2527..00000000000 --- a/incubator/farmos/2.0.11/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "farmOS is a web-based application for farm management, planning, and record keeping. It is developed by a community of volunteers and aims to provide a standard platform for farmers, developers, and researchers to build upon.\r" -home: https://truecharts.org/charts/incubator/farmos -icon: https://truecharts.org/img/hotlink-ok/chart-icons/farmos.png -keywords: - - farmos - - Productivity - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: farmos -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/farmos - - https://github.com/farmOS/farmOS - - https://hub.docker.com/r/farmos/farmos/ -type: application -version: 2.0.11 diff --git a/incubator/farmos/2.0.11/app-changelog.md b/incubator/farmos/2.0.11/app-changelog.md deleted file mode 100644 index 0e243639fe8..00000000000 --- a/incubator/farmos/2.0.11/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [farmos-2.0.11](https://github.com/truecharts/charts/compare/farmos-2.0.10...farmos-2.0.11) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/farmos to latest - - \ No newline at end of file diff --git a/incubator/farmos/2.0.11/app-readme.md b/incubator/farmos/2.0.11/app-readme.md deleted file mode 100644 index 301b14134f2..00000000000 --- a/incubator/farmos/2.0.11/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -farmOS is a web-based application for farm management, planning, and record keeping. It is developed by a community of volunteers and aims to provide a standard platform for farmers, developers, and researchers to build upon. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/farmos](https://truecharts.org/charts/incubator/farmos) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/farmos/2.0.11/questions.yaml b/incubator/farmos/2.0.11/questions.yaml deleted file mode 100644 index 0acfc1558ac..00000000000 --- a/incubator/farmos/2.0.11/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 80 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: sitesdirectory - label: "sitesdirectory Storage" - description: "Contains the site-specific settings and uploaded files" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/farmos/2.0.12/CHANGELOG.md b/incubator/farmos/2.0.12/CHANGELOG.md new file mode 100644 index 00000000000..d987516c111 --- /dev/null +++ b/incubator/farmos/2.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [farmos-2.0.12](https://github.com/truecharts/charts/compare/farmos-2.0.11...farmos-2.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [farmos-2.0.11](https://github.com/truecharts/charts/compare/farmos-2.0.10...farmos-2.0.11) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/farmos to latest + + + + +## [farmos-2.0.10](https://github.com/truecharts/charts/compare/farmos-2.0.9...farmos-2.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [farmos-2.0.9](https://github.com/truecharts/charts/compare/farmos-2.0.8...farmos-2.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [farmos-2.0.8](https://github.com/truecharts/charts/compare/farmos-2.0.7...farmos-2.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [farmos-2.0.7](https://github.com/truecharts/charts/compare/farmos-2.0.6...farmos-2.0.7) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/farmos to latest + + + + +## [farmos-2.0.6](https://github.com/truecharts/charts/compare/farmos-2.0.5...farmos-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [farmos-2.0.5](https://github.com/truecharts/charts/compare/farmos-2.0.4...farmos-2.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) + + + + +## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) + + + + +## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) + + + + +## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) + + + + +## [farmos-2.0.4](https://github.com/truecharts/charts/compare/farmos-2.0.3...farmos-2.0.4) (2022-11-30) diff --git a/incubator/farmos/2.0.12/Chart.yaml b/incubator/farmos/2.0.12/Chart.yaml new file mode 100644 index 00000000000..77651313da3 --- /dev/null +++ b/incubator/farmos/2.0.12/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "farmOS is a web-based application for farm management, planning, and record keeping. It is developed by a community of volunteers and aims to provide a standard platform for farmers, developers, and researchers to build upon.\r" +home: https://truecharts.org/charts/incubator/farmos +icon: https://truecharts.org/img/hotlink-ok/chart-icons/farmos.png +keywords: + - farmos + - Productivity + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: farmos +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/farmos + - https://hub.docker.com/farmos/farmos + - https://github.com/farmOS/farmOS +type: application +version: 2.0.12 diff --git a/incubator/farmos/2.0.11/README.md b/incubator/farmos/2.0.12/README.md similarity index 100% rename from incubator/farmos/2.0.11/README.md rename to incubator/farmos/2.0.12/README.md diff --git a/incubator/farmos/2.0.12/app-changelog.md b/incubator/farmos/2.0.12/app-changelog.md new file mode 100644 index 00000000000..0a8a9e3646e --- /dev/null +++ b/incubator/farmos/2.0.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [farmos-2.0.12](https://github.com/truecharts/charts/compare/farmos-2.0.11...farmos-2.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/farmos/2.0.12/app-readme.md b/incubator/farmos/2.0.12/app-readme.md new file mode 100644 index 00000000000..693cf2769aa --- /dev/null +++ b/incubator/farmos/2.0.12/app-readme.md @@ -0,0 +1,8 @@ +farmOS is a web-based application for farm management, planning, and record keeping. It is developed by a community of volunteers and aims to provide a standard platform for farmers, developers, and researchers to build upon. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/farmos](https://truecharts.org/charts/incubator/farmos) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fenrus/2.0.7/charts/common-11.1.2.tgz b/incubator/farmos/2.0.12/charts/common-11.1.2.tgz similarity index 100% rename from incubator/fenrus/2.0.7/charts/common-11.1.2.tgz rename to incubator/farmos/2.0.12/charts/common-11.1.2.tgz diff --git a/incubator/farmos/2.0.11/ix_values.yaml b/incubator/farmos/2.0.12/ix_values.yaml similarity index 100% rename from incubator/farmos/2.0.11/ix_values.yaml rename to incubator/farmos/2.0.12/ix_values.yaml diff --git a/incubator/farmos/2.0.12/questions.yaml b/incubator/farmos/2.0.12/questions.yaml new file mode 100644 index 00000000000..70314c6f937 --- /dev/null +++ b/incubator/farmos/2.0.12/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 80 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: sitesdirectory + label: "sitesdirectory Storage" + description: "Contains the site-specific settings and uploaded files" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/farmos/2.0.11/templates/common.yaml b/incubator/farmos/2.0.12/templates/common.yaml similarity index 100% rename from incubator/farmos/2.0.11/templates/common.yaml rename to incubator/farmos/2.0.12/templates/common.yaml diff --git a/incubator/fenrus/2.0.7/values.yaml b/incubator/farmos/2.0.12/values.yaml similarity index 100% rename from incubator/fenrus/2.0.7/values.yaml rename to incubator/farmos/2.0.12/values.yaml diff --git a/incubator/fenrus/2.0.7/CHANGELOG.md b/incubator/fenrus/2.0.7/CHANGELOG.md deleted file mode 100644 index a20e33efb31..00000000000 --- a/incubator/fenrus/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [fenrus-2.0.7](https://github.com/truecharts/charts/compare/fenrus-2.0.6...fenrus-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [fenrus-2.0.6](https://github.com/truecharts/charts/compare/fenrus-2.0.5...fenrus-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [fenrus-2.0.5](https://github.com/truecharts/charts/compare/fenrus-2.0.4...fenrus-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [fenrus-2.0.4](https://github.com/truecharts/charts/compare/fenrus-2.0.3...fenrus-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [fenrus-2.0.3](https://github.com/truecharts/charts/compare/fenrus-2.0.2...fenrus-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - - - -## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) - - diff --git a/incubator/fenrus/2.0.7/Chart.yaml b/incubator/fenrus/2.0.7/Chart.yaml deleted file mode 100644 index 511161d224b..00000000000 --- a/incubator/fenrus/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Fenrus is a home page / personal dashboard with smart apps. \n" -home: https://truecharts.org/charts/incubator/fenrus -icon: https://truecharts.org/img/hotlink-ok/chart-icons/fenrus.png -keywords: - - fenrus - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: fenrus -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/fenrus - - http://fenrus.io - - https://hub.docker.com/r/revenz/fenrus/ -type: application -version: 2.0.7 diff --git a/incubator/fenrus/2.0.7/app-changelog.md b/incubator/fenrus/2.0.7/app-changelog.md deleted file mode 100644 index 26d36369b47..00000000000 --- a/incubator/fenrus/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [fenrus-2.0.7](https://github.com/truecharts/charts/compare/fenrus-2.0.6...fenrus-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/fenrus/2.0.7/app-readme.md b/incubator/fenrus/2.0.7/app-readme.md deleted file mode 100644 index 3ca4ab8ec7e..00000000000 --- a/incubator/fenrus/2.0.7/app-readme.md +++ /dev/null @@ -1,9 +0,0 @@ -Fenrus is a home page / personal dashboard with smart apps. - - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/fenrus](https://truecharts.org/charts/incubator/fenrus) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fenrus/2.0.7/questions.yaml b/incubator/fenrus/2.0.7/questions.yaml deleted file mode 100644 index 2f1f0e8d9e9..00000000000 --- a/incubator/fenrus/2.0.7/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Location of user configuration files" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: images - label: "images Storage" - description: "Location to store user images" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/fenrus/2.0.8/CHANGELOG.md b/incubator/fenrus/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..fe31d78b22c --- /dev/null +++ b/incubator/fenrus/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [fenrus-2.0.8](https://github.com/truecharts/charts/compare/fenrus-2.0.7...fenrus-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [fenrus-2.0.7](https://github.com/truecharts/charts/compare/fenrus-2.0.6...fenrus-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [fenrus-2.0.6](https://github.com/truecharts/charts/compare/fenrus-2.0.5...fenrus-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [fenrus-2.0.5](https://github.com/truecharts/charts/compare/fenrus-2.0.4...fenrus-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [fenrus-2.0.4](https://github.com/truecharts/charts/compare/fenrus-2.0.3...fenrus-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [fenrus-2.0.3](https://github.com/truecharts/charts/compare/fenrus-2.0.2...fenrus-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) + + + + +## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) + + + + +## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) + + + + +## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) + + + + +## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) + + + + +## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) + + + + +## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) + + + + +## [fenrus-2.0.2](https://github.com/truecharts/charts/compare/fenrus-2.0.1...fenrus-2.0.2) (2022-11-30) + + + diff --git a/incubator/fenrus/2.0.8/Chart.yaml b/incubator/fenrus/2.0.8/Chart.yaml new file mode 100644 index 00000000000..02f2c335f92 --- /dev/null +++ b/incubator/fenrus/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Fenrus is a home page / personal dashboard with smart apps. \n" +home: https://truecharts.org/charts/incubator/fenrus +icon: https://truecharts.org/img/hotlink-ok/chart-icons/fenrus.png +keywords: + - fenrus + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fenrus +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/fenrus + - https://hub.docker.com/revenz/fenrus + - http://fenrus.io +type: application +version: 2.0.8 diff --git a/incubator/fenrus/2.0.7/README.md b/incubator/fenrus/2.0.8/README.md similarity index 100% rename from incubator/fenrus/2.0.7/README.md rename to incubator/fenrus/2.0.8/README.md diff --git a/incubator/fenrus/2.0.8/app-changelog.md b/incubator/fenrus/2.0.8/app-changelog.md new file mode 100644 index 00000000000..3d0297a0176 --- /dev/null +++ b/incubator/fenrus/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [fenrus-2.0.8](https://github.com/truecharts/charts/compare/fenrus-2.0.7...fenrus-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/fenrus/2.0.8/app-readme.md b/incubator/fenrus/2.0.8/app-readme.md new file mode 100644 index 00000000000..35b02e07adb --- /dev/null +++ b/incubator/fenrus/2.0.8/app-readme.md @@ -0,0 +1,9 @@ +Fenrus is a home page / personal dashboard with smart apps. + + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/fenrus](https://truecharts.org/charts/incubator/fenrus) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fileshelter/2.0.8/charts/common-11.1.2.tgz b/incubator/fenrus/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/fileshelter/2.0.8/charts/common-11.1.2.tgz rename to incubator/fenrus/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/fenrus/2.0.7/ix_values.yaml b/incubator/fenrus/2.0.8/ix_values.yaml similarity index 100% rename from incubator/fenrus/2.0.7/ix_values.yaml rename to incubator/fenrus/2.0.8/ix_values.yaml diff --git a/incubator/fenrus/2.0.8/questions.yaml b/incubator/fenrus/2.0.8/questions.yaml new file mode 100644 index 00000000000..53a3faeec6c --- /dev/null +++ b/incubator/fenrus/2.0.8/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Location of user configuration files" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: images + label: "images Storage" + description: "Location to store user images" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/fenrus/2.0.7/templates/common.yaml b/incubator/fenrus/2.0.8/templates/common.yaml similarity index 100% rename from incubator/fenrus/2.0.7/templates/common.yaml rename to incubator/fenrus/2.0.8/templates/common.yaml diff --git a/incubator/fileshelter/2.0.8/values.yaml b/incubator/fenrus/2.0.8/values.yaml similarity index 100% rename from incubator/fileshelter/2.0.8/values.yaml rename to incubator/fenrus/2.0.8/values.yaml diff --git a/incubator/fileshelter/2.0.8/CHANGELOG.md b/incubator/fileshelter/2.0.8/CHANGELOG.md deleted file mode 100644 index 6df7f9e39e9..00000000000 --- a/incubator/fileshelter/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [fileshelter-2.0.8](https://github.com/truecharts/charts/compare/fileshelter-2.0.7...fileshelter-2.0.8) (2023-01-29) - -### Chore - -- update container image tccr.io/truecharts/fileshelter to latest - - - - -## [fileshelter-2.0.7](https://github.com/truecharts/charts/compare/fileshelter-2.0.6...fileshelter-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [fileshelter-2.0.6](https://github.com/truecharts/charts/compare/fileshelter-2.0.5...fileshelter-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [fileshelter-2.0.5](https://github.com/truecharts/charts/compare/fileshelter-2.0.4...fileshelter-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [fileshelter-2.0.4](https://github.com/truecharts/charts/compare/fileshelter-2.0.3...fileshelter-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [fileshelter-2.0.3](https://github.com/truecharts/charts/compare/fileshelter-2.0.2...fileshelter-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) - - - - -## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) - - - - -## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) - - - - -## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) - - - - -## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) - - - - -## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) - - - - -## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) - - - - -## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) - - - diff --git a/incubator/fileshelter/2.0.8/Chart.yaml b/incubator/fileshelter/2.0.8/Chart.yaml deleted file mode 100644 index 7ff9c7fd3fa..00000000000 --- a/incubator/fileshelter/2.0.8/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Tools-Utilities - - Network-Web - - Network-FTP -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "FileShelter is a self-hosted software that allows you to easily share files over the Internet. Just upload one or more files and get an URL back!" -home: https://truecharts.org/charts/incubator/fileshelter -icon: https://truecharts.org/img/hotlink-ok/chart-icons/fileshelter.png -keywords: - - fileshelter - - Cloud - - Tools-Utilities - - Network-Web - - Network-FTP -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: fileshelter -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/fileshelter - - https://github.com/epoupon/fileshelter - - https://hub.docker.com/r/epoupon/fileshelter -type: application -version: 2.0.8 diff --git a/incubator/fileshelter/2.0.8/app-changelog.md b/incubator/fileshelter/2.0.8/app-changelog.md deleted file mode 100644 index c7a41f86318..00000000000 --- a/incubator/fileshelter/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [fileshelter-2.0.8](https://github.com/truecharts/charts/compare/fileshelter-2.0.7...fileshelter-2.0.8) (2023-01-29) - -### Chore - -- update container image tccr.io/truecharts/fileshelter to latest - - \ No newline at end of file diff --git a/incubator/fileshelter/2.0.9/CHANGELOG.md b/incubator/fileshelter/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..dd91f7e020a --- /dev/null +++ b/incubator/fileshelter/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [fileshelter-2.0.9](https://github.com/truecharts/charts/compare/fileshelter-2.0.8...fileshelter-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [fileshelter-2.0.8](https://github.com/truecharts/charts/compare/fileshelter-2.0.7...fileshelter-2.0.8) (2023-01-29) + +### Chore + +- update container image tccr.io/truecharts/fileshelter to latest + + + + +## [fileshelter-2.0.7](https://github.com/truecharts/charts/compare/fileshelter-2.0.6...fileshelter-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [fileshelter-2.0.6](https://github.com/truecharts/charts/compare/fileshelter-2.0.5...fileshelter-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [fileshelter-2.0.5](https://github.com/truecharts/charts/compare/fileshelter-2.0.4...fileshelter-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [fileshelter-2.0.4](https://github.com/truecharts/charts/compare/fileshelter-2.0.3...fileshelter-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [fileshelter-2.0.3](https://github.com/truecharts/charts/compare/fileshelter-2.0.2...fileshelter-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) + + + + +## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) + + + + +## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) + + + + +## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) + + + + +## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) + + + + +## [fileshelter-2.0.2](https://github.com/truecharts/charts/compare/fileshelter-2.0.1...fileshelter-2.0.2) (2022-11-30) + + + + diff --git a/incubator/fileshelter/2.0.9/Chart.yaml b/incubator/fileshelter/2.0.9/Chart.yaml new file mode 100644 index 00000000000..7b9b0bb84fb --- /dev/null +++ b/incubator/fileshelter/2.0.9/Chart.yaml @@ -0,0 +1,35 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Tools-Utilities + - Network-Web + - Network-FTP +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "FileShelter is a self-hosted software that allows you to easily share files over the Internet. Just upload one or more files and get an URL back!" +home: https://truecharts.org/charts/incubator/fileshelter +icon: https://truecharts.org/img/hotlink-ok/chart-icons/fileshelter.png +keywords: + - fileshelter + - Cloud + - Tools-Utilities + - Network-Web + - Network-FTP +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fileshelter +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/fileshelter + - https://hub.docker.com/epoupon/fileshelter + - https://github.com/epoupon/fileshelter +type: application +version: 2.0.9 diff --git a/incubator/fileshelter/2.0.8/README.md b/incubator/fileshelter/2.0.9/README.md similarity index 100% rename from incubator/fileshelter/2.0.8/README.md rename to incubator/fileshelter/2.0.9/README.md diff --git a/incubator/fileshelter/2.0.9/app-changelog.md b/incubator/fileshelter/2.0.9/app-changelog.md new file mode 100644 index 00000000000..c24aad4cfbb --- /dev/null +++ b/incubator/fileshelter/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [fileshelter-2.0.9](https://github.com/truecharts/charts/compare/fileshelter-2.0.8...fileshelter-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/fileshelter/2.0.8/app-readme.md b/incubator/fileshelter/2.0.9/app-readme.md similarity index 100% rename from incubator/fileshelter/2.0.8/app-readme.md rename to incubator/fileshelter/2.0.9/app-readme.md diff --git a/incubator/filestash/2.0.13/charts/common-11.1.2.tgz b/incubator/fileshelter/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/filestash/2.0.13/charts/common-11.1.2.tgz rename to incubator/fileshelter/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/fileshelter/2.0.8/ix_values.yaml b/incubator/fileshelter/2.0.9/ix_values.yaml similarity index 100% rename from incubator/fileshelter/2.0.8/ix_values.yaml rename to incubator/fileshelter/2.0.9/ix_values.yaml diff --git a/incubator/fileshelter/2.0.9/questions.yaml b/incubator/fileshelter/2.0.9/questions.yaml new file mode 100644 index 00000000000..7a0e5c3cf49 --- /dev/null +++ b/incubator/fileshelter/2.0.9/questions.yaml @@ -0,0 +1,1402 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/fileshelter/2.0.8/templates/common.yaml b/incubator/fileshelter/2.0.9/templates/common.yaml similarity index 100% rename from incubator/fileshelter/2.0.8/templates/common.yaml rename to incubator/fileshelter/2.0.9/templates/common.yaml diff --git a/incubator/filestash/2.0.13/values.yaml b/incubator/fileshelter/2.0.9/values.yaml similarity index 100% rename from incubator/filestash/2.0.13/values.yaml rename to incubator/fileshelter/2.0.9/values.yaml diff --git a/incubator/filestash/2.0.13/CHANGELOG.md b/incubator/filestash/2.0.13/CHANGELOG.md deleted file mode 100644 index 0657496957d..00000000000 --- a/incubator/filestash/2.0.13/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [filestash-2.0.13](https://github.com/truecharts/charts/compare/filestash-2.0.12...filestash-2.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [filestash-2.0.12](https://github.com/truecharts/charts/compare/filestash-2.0.11...filestash-2.0.12) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [filestash-2.0.11](https://github.com/truecharts/charts/compare/filestash-2.0.10...filestash-2.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [filestash-2.0.10](https://github.com/truecharts/charts/compare/filestash-2.0.9...filestash-2.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [filestash-2.0.9](https://github.com/truecharts/charts/compare/filestash-2.0.8...filestash-2.0.9) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [filestash-2.0.8](https://github.com/truecharts/charts/compare/filestash-2.0.7...filestash-2.0.8) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/filestash to latest - - - - -## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/filestash to latest - - - - -## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/filestash to latest - - - - -## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/filestash to latest - - - - -## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/filestash to latest - - - - -## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) - -### Chore diff --git a/incubator/filestash/2.0.13/Chart.yaml b/incubator/filestash/2.0.13/Chart.yaml deleted file mode 100644 index 6d033e5b726..00000000000 --- a/incubator/filestash/2.0.13/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity - - Network-Web -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ... -home: https://truecharts.org/charts/incubator/filestash -icon: https://truecharts.org/img/hotlink-ok/chart-icons/filestash.png -keywords: - - filestash - - Cloud - - Productivity - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: filestash -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/filestash - - https://www.filestash.app/ - - https://hub.docker.com/r/machines/filestash/ -type: application -version: 2.0.13 diff --git a/incubator/filestash/2.0.13/app-changelog.md b/incubator/filestash/2.0.13/app-changelog.md deleted file mode 100644 index efd016c079e..00000000000 --- a/incubator/filestash/2.0.13/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [filestash-2.0.13](https://github.com/truecharts/charts/compare/filestash-2.0.12...filestash-2.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/filestash/2.0.13/app-readme.md b/incubator/filestash/2.0.13/app-readme.md deleted file mode 100644 index 5e894921a13..00000000000 --- a/incubator/filestash/2.0.13/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ... - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/filestash](https://truecharts.org/charts/incubator/filestash) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/filestash/2.0.13/questions.yaml b/incubator/filestash/2.0.13/questions.yaml deleted file mode 100644 index a420374a716..00000000000 --- a/incubator/filestash/2.0.13/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8334 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: appdata - label: "appdata Storage" - description: "Container Path appdatastate" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/filestash/2.0.14/CHANGELOG.md b/incubator/filestash/2.0.14/CHANGELOG.md new file mode 100644 index 00000000000..6b2b29d2d0d --- /dev/null +++ b/incubator/filestash/2.0.14/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [filestash-2.0.14](https://github.com/truecharts/charts/compare/filestash-2.0.13...filestash-2.0.14) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [filestash-2.0.13](https://github.com/truecharts/charts/compare/filestash-2.0.12...filestash-2.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [filestash-2.0.12](https://github.com/truecharts/charts/compare/filestash-2.0.11...filestash-2.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [filestash-2.0.11](https://github.com/truecharts/charts/compare/filestash-2.0.10...filestash-2.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [filestash-2.0.10](https://github.com/truecharts/charts/compare/filestash-2.0.9...filestash-2.0.10) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [filestash-2.0.9](https://github.com/truecharts/charts/compare/filestash-2.0.8...filestash-2.0.9) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [filestash-2.0.8](https://github.com/truecharts/charts/compare/filestash-2.0.7...filestash-2.0.8) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/filestash to latest + + + + +## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/filestash to latest + + + + +## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/filestash to latest + + + + +## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/filestash to latest + + + + +## [filestash-2.0.7](https://github.com/truecharts/charts/compare/filestash-2.0.5...filestash-2.0.7) (2022-11-30) + +### Chore diff --git a/incubator/filestash/2.0.14/Chart.yaml b/incubator/filestash/2.0.14/Chart.yaml new file mode 100644 index 00000000000..7cfdaebb22d --- /dev/null +++ b/incubator/filestash/2.0.14/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ... +home: https://truecharts.org/charts/incubator/filestash +icon: https://truecharts.org/img/hotlink-ok/chart-icons/filestash.png +keywords: + - filestash + - Cloud + - Productivity + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: filestash +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/filestash + - https://hub.docker.com/machines/filestash + - https://www.filestash.app/ +type: application +version: 2.0.14 diff --git a/incubator/filestash/2.0.13/README.md b/incubator/filestash/2.0.14/README.md similarity index 100% rename from incubator/filestash/2.0.13/README.md rename to incubator/filestash/2.0.14/README.md diff --git a/incubator/filestash/2.0.14/app-changelog.md b/incubator/filestash/2.0.14/app-changelog.md new file mode 100644 index 00000000000..4bce177c91d --- /dev/null +++ b/incubator/filestash/2.0.14/app-changelog.md @@ -0,0 +1,9 @@ + + +## [filestash-2.0.14](https://github.com/truecharts/charts/compare/filestash-2.0.13...filestash-2.0.14) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/filestash/2.0.14/app-readme.md b/incubator/filestash/2.0.14/app-readme.md new file mode 100644 index 00000000000..4c3a392b1ef --- /dev/null +++ b/incubator/filestash/2.0.14/app-readme.md @@ -0,0 +1,8 @@ +A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ... + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/filestash](https://truecharts.org/charts/incubator/filestash) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fireshare/2.0.9/charts/common-11.1.2.tgz b/incubator/filestash/2.0.14/charts/common-11.1.2.tgz similarity index 100% rename from incubator/fireshare/2.0.9/charts/common-11.1.2.tgz rename to incubator/filestash/2.0.14/charts/common-11.1.2.tgz diff --git a/incubator/filestash/2.0.13/ix_values.yaml b/incubator/filestash/2.0.14/ix_values.yaml similarity index 100% rename from incubator/filestash/2.0.13/ix_values.yaml rename to incubator/filestash/2.0.14/ix_values.yaml diff --git a/incubator/filestash/2.0.14/questions.yaml b/incubator/filestash/2.0.14/questions.yaml new file mode 100644 index 00000000000..29463058c27 --- /dev/null +++ b/incubator/filestash/2.0.14/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8334 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: appdata + label: "appdata Storage" + description: "Container Path appdatastate" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/filestash/2.0.13/templates/common.yaml b/incubator/filestash/2.0.14/templates/common.yaml similarity index 100% rename from incubator/filestash/2.0.13/templates/common.yaml rename to incubator/filestash/2.0.14/templates/common.yaml diff --git a/incubator/fireshare/2.0.9/values.yaml b/incubator/filestash/2.0.14/values.yaml similarity index 100% rename from incubator/fireshare/2.0.9/values.yaml rename to incubator/filestash/2.0.14/values.yaml diff --git a/incubator/fireshare/2.0.10/CHANGELOG.md b/incubator/fireshare/2.0.10/CHANGELOG.md new file mode 100644 index 00000000000..42f047db91a --- /dev/null +++ b/incubator/fireshare/2.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [fireshare-2.0.10](https://github.com/truecharts/charts/compare/fireshare-2.0.9...fireshare-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [fireshare-2.0.9](https://github.com/truecharts/charts/compare/fireshare-2.0.8...fireshare-2.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [fireshare-2.0.8](https://github.com/truecharts/charts/compare/fireshare-2.0.7...fireshare-2.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [fireshare-2.0.7](https://github.com/truecharts/charts/compare/fireshare-2.0.6...fireshare-2.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [fireshare-2.0.6](https://github.com/truecharts/charts/compare/fireshare-2.0.5...fireshare-2.0.6) (2022-12-23) + +### Chore + +- update container image tccr.io/truecharts/fireshare to v1.2.8 + + + + +## [fireshare-2.0.5](https://github.com/truecharts/charts/compare/fireshare-2.0.4...fireshare-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [fireshare-2.0.4](https://github.com/truecharts/charts/compare/fireshare-2.0.3...fireshare-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [fireshare-2.0.3](https://github.com/truecharts/charts/compare/fireshare-2.0.2...fireshare-2.0.3) (2022-12-11) + +### Fix + +- decode keys before reencode ([#5258](https://github.com/truecharts/charts/issues/5258)) + + + + +## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) + + + + +## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) + + + + +## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) + + + + +## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) + + + + +## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) diff --git a/incubator/fireshare/2.0.10/Chart.yaml b/incubator/fireshare/2.0.10/Chart.yaml new file mode 100644 index 00000000000..9b2af0564a5 --- /dev/null +++ b/incubator/fireshare/2.0.10/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "1.2.8" +kubeVersion: ">=1.16.0-0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: "Share your game clips, videos, or other media via unique links." +version: 2.0.10 +deprecated: false +home: https://truecharts.org/charts/incubator/fireshare +icon: https://truecharts.org/img/hotlink-ok/chart-icons/fireshare.png +keywords: + - fireshare +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fireshare +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/fireshare + - https://hub.docker.com/shaneisrael/fireshare + - https://github.com/ShaneIsrael/fireshare +type: application +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - media diff --git a/incubator/fireshare/2.0.9/README.md b/incubator/fireshare/2.0.10/README.md similarity index 100% rename from incubator/fireshare/2.0.9/README.md rename to incubator/fireshare/2.0.10/README.md diff --git a/incubator/fireshare/2.0.10/app-changelog.md b/incubator/fireshare/2.0.10/app-changelog.md new file mode 100644 index 00000000000..c379a3b2dba --- /dev/null +++ b/incubator/fireshare/2.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [fireshare-2.0.10](https://github.com/truecharts/charts/compare/fireshare-2.0.9...fireshare-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/fireshare/2.0.10/app-readme.md b/incubator/fireshare/2.0.10/app-readme.md new file mode 100644 index 00000000000..3fc7f6f0507 --- /dev/null +++ b/incubator/fireshare/2.0.10/app-readme.md @@ -0,0 +1,8 @@ +Share your game clips, videos, or other media via unique links. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/fireshare](https://truecharts.org/charts/incubator/fireshare) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flame/2.0.7/charts/common-11.1.2.tgz b/incubator/fireshare/2.0.10/charts/common-11.1.2.tgz similarity index 100% rename from incubator/flame/2.0.7/charts/common-11.1.2.tgz rename to incubator/fireshare/2.0.10/charts/common-11.1.2.tgz diff --git a/incubator/fireshare/2.0.9/ix_values.yaml b/incubator/fireshare/2.0.10/ix_values.yaml similarity index 100% rename from incubator/fireshare/2.0.9/ix_values.yaml rename to incubator/fireshare/2.0.10/ix_values.yaml diff --git a/incubator/fireshare/2.0.10/questions.yaml b/incubator/fireshare/2.0.10/questions.yaml new file mode 100644 index 00000000000..3b2b608bb76 --- /dev/null +++ b/incubator/fireshare/2.0.10/questions.yaml @@ -0,0 +1,2036 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ADMIN_PASSWORD + label: "ADMIN_PASSWORD" + description: "The admin account password" + schema: + type: string + default: "" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: MINUTES_BETWEEN_VIDEO_SCANS + label: "MINUTES_BETWEEN_VIDEO_SCANS" + description: "How often in minutes Fireshare will scan for new videos" + schema: + type: int + default: 5 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10287 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: videos + label: "videos Storage" + description: "This is where fireshare will look for videos that you want to share." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: processeddata + label: "processeddata Storage" + description: "This is where data generated by fireshare related to your shared videos will live. If this is not mapped, whenever you update the container this data will be lost and will need to be regenerated. DO NOT EDIT OR CHANGE FILES IN THIS DIRECTORY." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/fireshare/2.0.9/templates/_secrets.tpl b/incubator/fireshare/2.0.10/templates/_secrets.tpl similarity index 100% rename from incubator/fireshare/2.0.9/templates/_secrets.tpl rename to incubator/fireshare/2.0.10/templates/_secrets.tpl diff --git a/incubator/fireshare/2.0.9/templates/common.yaml b/incubator/fireshare/2.0.10/templates/common.yaml similarity index 100% rename from incubator/fireshare/2.0.9/templates/common.yaml rename to incubator/fireshare/2.0.10/templates/common.yaml diff --git a/incubator/flame/2.0.7/values.yaml b/incubator/fireshare/2.0.10/values.yaml similarity index 100% rename from incubator/flame/2.0.7/values.yaml rename to incubator/fireshare/2.0.10/values.yaml diff --git a/incubator/fireshare/2.0.9/CHANGELOG.md b/incubator/fireshare/2.0.9/CHANGELOG.md deleted file mode 100644 index 83b2fabfb93..00000000000 --- a/incubator/fireshare/2.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [fireshare-2.0.9](https://github.com/truecharts/charts/compare/fireshare-2.0.8...fireshare-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [fireshare-2.0.8](https://github.com/truecharts/charts/compare/fireshare-2.0.7...fireshare-2.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [fireshare-2.0.7](https://github.com/truecharts/charts/compare/fireshare-2.0.6...fireshare-2.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [fireshare-2.0.6](https://github.com/truecharts/charts/compare/fireshare-2.0.5...fireshare-2.0.6) (2022-12-23) - -### Chore - -- update container image tccr.io/truecharts/fireshare to v1.2.8 - - - - -## [fireshare-2.0.5](https://github.com/truecharts/charts/compare/fireshare-2.0.4...fireshare-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [fireshare-2.0.4](https://github.com/truecharts/charts/compare/fireshare-2.0.3...fireshare-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [fireshare-2.0.3](https://github.com/truecharts/charts/compare/fireshare-2.0.2...fireshare-2.0.3) (2022-12-11) - -### Fix - -- decode keys before reencode ([#5258](https://github.com/truecharts/charts/issues/5258)) - - - - -## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) - - - - -## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) - - - - -## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) - - - - -## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) - - - - -## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) - - - - -## [fireshare-2.0.2](https://github.com/truecharts/charts/compare/fireshare-2.0.1...fireshare-2.0.2) (2022-11-30) - - - - diff --git a/incubator/fireshare/2.0.9/Chart.yaml b/incubator/fireshare/2.0.9/Chart.yaml deleted file mode 100644 index f7df8bc7057..00000000000 --- a/incubator/fireshare/2.0.9/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "1.2.8" -kubeVersion: ">=1.16.0-0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: "Share your game clips, videos, or other media via unique links." -version: 2.0.9 -deprecated: false -home: https://truecharts.org/charts/incubator/fireshare -icon: https://truecharts.org/img/hotlink-ok/chart-icons/fireshare.png -keywords: - - fireshare -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: fireshare -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/fireshare - - https://github.com/ShaneIsrael/fireshare - - https://hub.docker.com/r/shaneisrael/fireshare -type: application -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - media diff --git a/incubator/fireshare/2.0.9/app-changelog.md b/incubator/fireshare/2.0.9/app-changelog.md deleted file mode 100644 index 46614801e93..00000000000 --- a/incubator/fireshare/2.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [fireshare-2.0.9](https://github.com/truecharts/charts/compare/fireshare-2.0.8...fireshare-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/fireshare/2.0.9/app-readme.md b/incubator/fireshare/2.0.9/app-readme.md deleted file mode 100644 index 35a0bc6bf9c..00000000000 --- a/incubator/fireshare/2.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Share your game clips, videos, or other media via unique links. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/fireshare](https://truecharts.org/charts/incubator/fireshare) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fireshare/2.0.9/questions.yaml b/incubator/fireshare/2.0.9/questions.yaml deleted file mode 100644 index 2cdf560de94..00000000000 --- a/incubator/fireshare/2.0.9/questions.yaml +++ /dev/null @@ -1,1995 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ADMIN_PASSWORD - label: "ADMIN_PASSWORD" - description: "The admin account password" - schema: - type: string - default: "" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: MINUTES_BETWEEN_VIDEO_SCANS - label: "MINUTES_BETWEEN_VIDEO_SCANS" - description: "How often in minutes Fireshare will scan for new videos" - schema: - type: int - default: 5 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10287 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: videos - label: "videos Storage" - description: "This is where fireshare will look for videos that you want to share." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: processeddata - label: "processeddata Storage" - description: "This is where data generated by fireshare related to your shared videos will live. If this is not mapped, whenever you update the container this data will be lost and will need to be regenerated. DO NOT EDIT OR CHANGE FILES IN THIS DIRECTORY." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/flame/2.0.7/CHANGELOG.md b/incubator/flame/2.0.7/CHANGELOG.md deleted file mode 100644 index 9a0f2116402..00000000000 --- a/incubator/flame/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [flame-2.0.7](https://github.com/truecharts/charts/compare/flame-2.0.6...flame-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [flame-2.0.6](https://github.com/truecharts/charts/compare/flame-2.0.5...flame-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [flame-2.0.5](https://github.com/truecharts/charts/compare/flame-2.0.4...flame-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [flame-2.0.4](https://github.com/truecharts/charts/compare/flame-2.0.3...flame-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [flame-2.0.3](https://github.com/truecharts/charts/compare/flame-2.0.2...flame-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - - - -## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) - - diff --git a/incubator/flame/2.0.7/Chart.yaml b/incubator/flame/2.0.7/Chart.yaml deleted file mode 100644 index 45d4c7d3f47..00000000000 --- a/incubator/flame/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "2.3.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Flame is self-hosted start page for your server. Easily manage your apps and bookmarks with built-in editors. -home: https://truecharts.org/charts/incubator/flame -icon: https://truecharts.org/img/hotlink-ok/chart-icons/flame.png -keywords: - - flame - - dashboard -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: flame -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/flame - - https://github.com/pawelmalak/flame - - https://hub.docker.com/r/pawelmalak/flame -type: application -version: 2.0.7 -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - utilities diff --git a/incubator/flame/2.0.7/app-changelog.md b/incubator/flame/2.0.7/app-changelog.md deleted file mode 100644 index ef8497bb918..00000000000 --- a/incubator/flame/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [flame-2.0.7](https://github.com/truecharts/charts/compare/flame-2.0.6...flame-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/flame/2.0.7/app-readme.md b/incubator/flame/2.0.7/app-readme.md deleted file mode 100644 index d421ee3df33..00000000000 --- a/incubator/flame/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Flame is self-hosted start page for your server. Easily manage your apps and bookmarks with built-in editors. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/flame](https://truecharts.org/charts/incubator/flame) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flame/2.0.7/questions.yaml b/incubator/flame/2.0.7/questions.yaml deleted file mode 100644 index 111322085e6..00000000000 --- a/incubator/flame/2.0.7/questions.yaml +++ /dev/null @@ -1,1856 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PASSWORD - label: "PASSWORD" - description: "PASSWORD" - schema: - type: string - private: true - default: "" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enable_integration - label: "Enable Kubernetes Integration" - description: "Defines RBAC, ClusterRole, ClusterRoleBinding and Service Account" - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10291 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/flame/2.0.8/CHANGELOG.md b/incubator/flame/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..190ce0245db --- /dev/null +++ b/incubator/flame/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [flame-2.0.8](https://github.com/truecharts/charts/compare/flame-2.0.7...flame-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [flame-2.0.7](https://github.com/truecharts/charts/compare/flame-2.0.6...flame-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [flame-2.0.6](https://github.com/truecharts/charts/compare/flame-2.0.5...flame-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [flame-2.0.5](https://github.com/truecharts/charts/compare/flame-2.0.4...flame-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [flame-2.0.4](https://github.com/truecharts/charts/compare/flame-2.0.3...flame-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [flame-2.0.3](https://github.com/truecharts/charts/compare/flame-2.0.2...flame-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) + + + + +## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) + + + + +## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) + + + + +## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) + + + + +## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) + + + + +## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) + + + + +## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) + + + + +## [flame-2.0.2](https://github.com/truecharts/charts/compare/flame-2.0.1...flame-2.0.2) (2022-11-30) + + + diff --git a/incubator/flame/2.0.8/Chart.yaml b/incubator/flame/2.0.8/Chart.yaml new file mode 100644 index 00000000000..795da55a263 --- /dev/null +++ b/incubator/flame/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "2.3.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Flame is self-hosted start page for your server. Easily manage your apps and bookmarks with built-in editors. +home: https://truecharts.org/charts/incubator/flame +icon: https://truecharts.org/img/hotlink-ok/chart-icons/flame.png +keywords: + - flame + - dashboard +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: flame +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/flame + - https://hub.docker.com/pawelmalak/flame + - https://github.com/pawelmalak/flame +type: application +version: 2.0.8 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - utilities diff --git a/incubator/flame/2.0.7/README.md b/incubator/flame/2.0.8/README.md similarity index 100% rename from incubator/flame/2.0.7/README.md rename to incubator/flame/2.0.8/README.md diff --git a/incubator/flame/2.0.8/app-changelog.md b/incubator/flame/2.0.8/app-changelog.md new file mode 100644 index 00000000000..b0d34bee1fb --- /dev/null +++ b/incubator/flame/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [flame-2.0.8](https://github.com/truecharts/charts/compare/flame-2.0.7...flame-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/flame/2.0.8/app-readme.md b/incubator/flame/2.0.8/app-readme.md new file mode 100644 index 00000000000..7f33029bbc5 --- /dev/null +++ b/incubator/flame/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Flame is self-hosted start page for your server. Easily manage your apps and bookmarks with built-in editors. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/flame](https://truecharts.org/charts/incubator/flame) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flatnotes/2.0.7/charts/common-11.1.2.tgz b/incubator/flame/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/flatnotes/2.0.7/charts/common-11.1.2.tgz rename to incubator/flame/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/flame/2.0.7/ix_values.yaml b/incubator/flame/2.0.8/ix_values.yaml similarity index 100% rename from incubator/flame/2.0.7/ix_values.yaml rename to incubator/flame/2.0.8/ix_values.yaml diff --git a/incubator/flame/2.0.8/questions.yaml b/incubator/flame/2.0.8/questions.yaml new file mode 100644 index 00000000000..2c8c3e5f59b --- /dev/null +++ b/incubator/flame/2.0.8/questions.yaml @@ -0,0 +1,1897 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PASSWORD + label: "PASSWORD" + description: "PASSWORD" + schema: + type: string + private: true + default: "" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enable_integration + label: "Enable Kubernetes Integration" + description: "Defines RBAC, ClusterRole, ClusterRoleBinding and Service Account" + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10291 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/flame/2.0.7/templates/_integration.tpl b/incubator/flame/2.0.8/templates/_integration.tpl similarity index 100% rename from incubator/flame/2.0.7/templates/_integration.tpl rename to incubator/flame/2.0.8/templates/_integration.tpl diff --git a/incubator/flame/2.0.7/templates/common.yaml b/incubator/flame/2.0.8/templates/common.yaml similarity index 100% rename from incubator/flame/2.0.7/templates/common.yaml rename to incubator/flame/2.0.8/templates/common.yaml diff --git a/incubator/flatnotes/2.0.7/values.yaml b/incubator/flame/2.0.8/values.yaml similarity index 100% rename from incubator/flatnotes/2.0.7/values.yaml rename to incubator/flame/2.0.8/values.yaml diff --git a/incubator/flatnotes/2.0.7/CHANGELOG.md b/incubator/flatnotes/2.0.7/CHANGELOG.md deleted file mode 100644 index 90384285071..00000000000 --- a/incubator/flatnotes/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [flatnotes-2.0.7](https://github.com/truecharts/charts/compare/flatnotes-2.0.6...flatnotes-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [flatnotes-2.0.6](https://github.com/truecharts/charts/compare/flatnotes-2.0.5...flatnotes-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [flatnotes-2.0.5](https://github.com/truecharts/charts/compare/flatnotes-2.0.4...flatnotes-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [flatnotes-2.0.4](https://github.com/truecharts/charts/compare/flatnotes-2.0.3...flatnotes-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [flatnotes-2.0.3](https://github.com/truecharts/charts/compare/flatnotes-2.0.2...flatnotes-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - - - -## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) - - diff --git a/incubator/flatnotes/2.0.7/Chart.yaml b/incubator/flatnotes/2.0.7/Chart.yaml deleted file mode 100644 index 0d4df79e723..00000000000 --- a/incubator/flatnotes/2.0.7/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "2.1.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: A database-less note taking web app that utilizes a flat folder of markdown files for storage. -home: https://truecharts.org/charts/incubator/flatnotes -icon: https://truecharts.org/img/hotlink-ok/chart-icons/flatnotes.png -keywords: - - notes -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: flatnotes -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/flatnotes - - https://hub.docker.com/r/dullage/flatnotes - - https://github.com/Dullage/flatnotes -version: 2.0.7 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/flatnotes/2.0.7/app-changelog.md b/incubator/flatnotes/2.0.7/app-changelog.md deleted file mode 100644 index 2d0c1fe617e..00000000000 --- a/incubator/flatnotes/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [flatnotes-2.0.7](https://github.com/truecharts/charts/compare/flatnotes-2.0.6...flatnotes-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/flatnotes/2.0.7/app-readme.md b/incubator/flatnotes/2.0.7/app-readme.md deleted file mode 100644 index 953fe460567..00000000000 --- a/incubator/flatnotes/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A database-less note taking web app that utilizes a flat folder of markdown files for storage. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/flatnotes](https://truecharts.org/charts/incubator/flatnotes) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flatnotes/2.0.7/questions.yaml b/incubator/flatnotes/2.0.7/questions.yaml deleted file mode 100644 index 857f74cb0c2..00000000000 --- a/incubator/flatnotes/2.0.7/questions.yaml +++ /dev/null @@ -1,1861 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: App Configuration - label: Image Secrets - schema: - additional_attrs: true - type: dict - attrs: - - variable: FLATNOTES_USERNAME - label: Username - schema: - type: string - required: true - default: "" - - variable: FLATNOTES_PASSWORD - label: Password - schema: - type: string - private: true - required: true - default: "" - - variable: env - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: FLATNOTES_SESSION_EXPIRY_DAYS - label: Session Expiry Days - schema: - type: int - default: 30 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10350 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: App Data Storage - description: Stores the Application Data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 1000 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 1000 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/flatnotes/2.0.8/CHANGELOG.md b/incubator/flatnotes/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..6201275f81e --- /dev/null +++ b/incubator/flatnotes/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [flatnotes-2.0.8](https://github.com/truecharts/charts/compare/flatnotes-2.0.7...flatnotes-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [flatnotes-2.0.7](https://github.com/truecharts/charts/compare/flatnotes-2.0.6...flatnotes-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [flatnotes-2.0.6](https://github.com/truecharts/charts/compare/flatnotes-2.0.5...flatnotes-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [flatnotes-2.0.5](https://github.com/truecharts/charts/compare/flatnotes-2.0.4...flatnotes-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [flatnotes-2.0.4](https://github.com/truecharts/charts/compare/flatnotes-2.0.3...flatnotes-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [flatnotes-2.0.3](https://github.com/truecharts/charts/compare/flatnotes-2.0.2...flatnotes-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) + + + + +## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) + + + + +## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) + + + + +## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) + + + + +## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) + + + + +## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) + + + + +## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) + + + + +## [flatnotes-2.0.2](https://github.com/truecharts/charts/compare/flatnotes-2.0.1...flatnotes-2.0.2) (2022-11-30) + + + diff --git a/incubator/flatnotes/2.0.8/Chart.yaml b/incubator/flatnotes/2.0.8/Chart.yaml new file mode 100644 index 00000000000..23ba8d1d233 --- /dev/null +++ b/incubator/flatnotes/2.0.8/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "2.1.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: A database-less note taking web app that utilizes a flat folder of markdown files for storage. +home: https://truecharts.org/charts/incubator/flatnotes +icon: https://truecharts.org/img/hotlink-ok/chart-icons/flatnotes.png +keywords: + - notes +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: flatnotes +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/flatnotes + - https://hub.docker.com/dullage/flatnotes + - https://github.com/Dullage/flatnotes +version: 2.0.8 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/flatnotes/2.0.7/README.md b/incubator/flatnotes/2.0.8/README.md similarity index 100% rename from incubator/flatnotes/2.0.7/README.md rename to incubator/flatnotes/2.0.8/README.md diff --git a/incubator/flatnotes/2.0.8/app-changelog.md b/incubator/flatnotes/2.0.8/app-changelog.md new file mode 100644 index 00000000000..effa5ed0c04 --- /dev/null +++ b/incubator/flatnotes/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [flatnotes-2.0.8](https://github.com/truecharts/charts/compare/flatnotes-2.0.7...flatnotes-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/flatnotes/2.0.8/app-readme.md b/incubator/flatnotes/2.0.8/app-readme.md new file mode 100644 index 00000000000..2c4d4f9700d --- /dev/null +++ b/incubator/flatnotes/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +A database-less note taking web app that utilizes a flat folder of markdown files for storage. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/flatnotes](https://truecharts.org/charts/incubator/flatnotes) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flextv/2.0.7/charts/common-11.1.2.tgz b/incubator/flatnotes/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/flextv/2.0.7/charts/common-11.1.2.tgz rename to incubator/flatnotes/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/flatnotes/2.0.7/ix_values.yaml b/incubator/flatnotes/2.0.8/ix_values.yaml similarity index 100% rename from incubator/flatnotes/2.0.7/ix_values.yaml rename to incubator/flatnotes/2.0.8/ix_values.yaml diff --git a/incubator/flatnotes/2.0.8/questions.yaml b/incubator/flatnotes/2.0.8/questions.yaml new file mode 100644 index 00000000000..44803b6657f --- /dev/null +++ b/incubator/flatnotes/2.0.8/questions.yaml @@ -0,0 +1,1902 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: App Configuration + label: Image Secrets + schema: + additional_attrs: true + type: dict + attrs: + - variable: FLATNOTES_USERNAME + label: Username + schema: + type: string + required: true + default: "" + - variable: FLATNOTES_PASSWORD + label: Password + schema: + type: string + private: true + required: true + default: "" + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: FLATNOTES_SESSION_EXPIRY_DAYS + label: Session Expiry Days + schema: + type: int + default: 30 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10350 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: App Data Storage + description: Stores the Application Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 1000 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 1000 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/flatnotes/2.0.7/templates/_secrets.tpl b/incubator/flatnotes/2.0.8/templates/_secrets.tpl similarity index 100% rename from incubator/flatnotes/2.0.7/templates/_secrets.tpl rename to incubator/flatnotes/2.0.8/templates/_secrets.tpl diff --git a/incubator/flatnotes/2.0.7/templates/common.yaml b/incubator/flatnotes/2.0.8/templates/common.yaml similarity index 100% rename from incubator/flatnotes/2.0.7/templates/common.yaml rename to incubator/flatnotes/2.0.8/templates/common.yaml diff --git a/incubator/flextv/2.0.7/values.yaml b/incubator/flatnotes/2.0.8/values.yaml similarity index 100% rename from incubator/flextv/2.0.7/values.yaml rename to incubator/flatnotes/2.0.8/values.yaml diff --git a/incubator/flextv/2.0.7/CHANGELOG.md b/incubator/flextv/2.0.7/CHANGELOG.md deleted file mode 100644 index fbb06bd0a30..00000000000 --- a/incubator/flextv/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [flextv-2.0.7](https://github.com/truecharts/charts/compare/flextv-2.0.6...flextv-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [flextv-2.0.6](https://github.com/truecharts/charts/compare/flextv-2.0.5...flextv-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [flextv-2.0.5](https://github.com/truecharts/charts/compare/flextv-2.0.4...flextv-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [flextv-2.0.4](https://github.com/truecharts/charts/compare/flextv-2.0.3...flextv-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [flextv-2.0.3](https://github.com/truecharts/charts/compare/flextv-2.0.2...flextv-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - - - -## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) - - diff --git a/incubator/flextv/2.0.7/Chart.yaml b/incubator/flextv/2.0.7/Chart.yaml deleted file mode 100644 index 442b08f9210..00000000000 --- a/incubator/flextv/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A super-sexy voice interface for the Plex HTPC. -home: https://truecharts.org/charts/incubator/flextv -icon: https://truecharts.org/img/hotlink-ok/chart-icons/flextv.png -keywords: - - flextv - - MediaApp -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: flextv -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/flextv - - https://github.com/d8ahazard/FlexTV - - https://registry.hub.docker.com/r/jcreynolds/flextv/ -type: application -version: 2.0.7 diff --git a/incubator/flextv/2.0.7/app-changelog.md b/incubator/flextv/2.0.7/app-changelog.md deleted file mode 100644 index 9bbc5f0ab2d..00000000000 --- a/incubator/flextv/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [flextv-2.0.7](https://github.com/truecharts/charts/compare/flextv-2.0.6...flextv-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/flextv/2.0.7/app-readme.md b/incubator/flextv/2.0.7/app-readme.md deleted file mode 100644 index c1c40a266ba..00000000000 --- a/incubator/flextv/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A super-sexy voice interface for the Plex HTPC. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/flextv](https://truecharts.org/charts/incubator/flextv) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/flextv/2.0.7/questions.yaml b/incubator/flextv/2.0.7/questions.yaml deleted file mode 100644 index 9e2d4309d2d..00000000000 --- a/incubator/flextv/2.0.7/questions.yaml +++ /dev/null @@ -1,1891 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: UMASK - label: "UMASK" - schema: - type: string - default: "000" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5666 - required: true - - variable: tcpport1 - label: 'tcpport1 service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: tcpport1 - label: "tcpport1 Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5667 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/flextv/2.0.8/CHANGELOG.md b/incubator/flextv/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..ff189209267 --- /dev/null +++ b/incubator/flextv/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [flextv-2.0.8](https://github.com/truecharts/charts/compare/flextv-2.0.7...flextv-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [flextv-2.0.7](https://github.com/truecharts/charts/compare/flextv-2.0.6...flextv-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [flextv-2.0.6](https://github.com/truecharts/charts/compare/flextv-2.0.5...flextv-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [flextv-2.0.5](https://github.com/truecharts/charts/compare/flextv-2.0.4...flextv-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [flextv-2.0.4](https://github.com/truecharts/charts/compare/flextv-2.0.3...flextv-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [flextv-2.0.3](https://github.com/truecharts/charts/compare/flextv-2.0.2...flextv-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) + + + + +## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) + + + + +## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) + + + + +## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) + + + + +## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) + + + + +## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) + + + + +## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) + + + + +## [flextv-2.0.2](https://github.com/truecharts/charts/compare/flextv-2.0.1...flextv-2.0.2) (2022-11-30) + + + diff --git a/incubator/flextv/2.0.8/Chart.yaml b/incubator/flextv/2.0.8/Chart.yaml new file mode 100644 index 00000000000..1e38568a399 --- /dev/null +++ b/incubator/flextv/2.0.8/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A super-sexy voice interface for the Plex HTPC. +home: https://truecharts.org/charts/incubator/flextv +icon: https://truecharts.org/img/hotlink-ok/chart-icons/flextv.png +keywords: + - flextv + - MediaApp +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: flextv +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/flextv + - https://hub.docker.com/jcreynolds/flextv + - https://github.com/d8ahazard/FlexTV + - https://registry.hub.docker.com/r/jcreynolds/flextv/ +type: application +version: 2.0.8 diff --git a/incubator/flextv/2.0.7/README.md b/incubator/flextv/2.0.8/README.md similarity index 100% rename from incubator/flextv/2.0.7/README.md rename to incubator/flextv/2.0.8/README.md diff --git a/incubator/flextv/2.0.8/app-changelog.md b/incubator/flextv/2.0.8/app-changelog.md new file mode 100644 index 00000000000..49f405855c8 --- /dev/null +++ b/incubator/flextv/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [flextv-2.0.8](https://github.com/truecharts/charts/compare/flextv-2.0.7...flextv-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/flextv/2.0.8/app-readme.md b/incubator/flextv/2.0.8/app-readme.md new file mode 100644 index 00000000000..3da530470f9 --- /dev/null +++ b/incubator/flextv/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +A super-sexy voice interface for the Plex HTPC. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/flextv](https://truecharts.org/charts/incubator/flextv) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fotosho/2.0.7/charts/common-11.1.2.tgz b/incubator/flextv/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/fotosho/2.0.7/charts/common-11.1.2.tgz rename to incubator/flextv/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/flextv/2.0.7/ix_values.yaml b/incubator/flextv/2.0.8/ix_values.yaml similarity index 100% rename from incubator/flextv/2.0.7/ix_values.yaml rename to incubator/flextv/2.0.8/ix_values.yaml diff --git a/incubator/flextv/2.0.8/questions.yaml b/incubator/flextv/2.0.8/questions.yaml new file mode 100644 index 00000000000..3fcfc4a493b --- /dev/null +++ b/incubator/flextv/2.0.8/questions.yaml @@ -0,0 +1,1932 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: UMASK + label: "UMASK" + schema: + type: string + default: "000" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5666 + required: true + - variable: tcpport1 + label: 'tcpport1 service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcpport1 + label: "tcpport1 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5667 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/flextv/2.0.7/templates/common.yaml b/incubator/flextv/2.0.8/templates/common.yaml similarity index 100% rename from incubator/flextv/2.0.7/templates/common.yaml rename to incubator/flextv/2.0.8/templates/common.yaml diff --git a/incubator/fotosho/2.0.7/values.yaml b/incubator/flextv/2.0.8/values.yaml similarity index 100% rename from incubator/fotosho/2.0.7/values.yaml rename to incubator/flextv/2.0.8/values.yaml diff --git a/incubator/fotosho/2.0.7/CHANGELOG.md b/incubator/fotosho/2.0.7/CHANGELOG.md deleted file mode 100644 index 7109309e6a6..00000000000 --- a/incubator/fotosho/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [fotosho-2.0.7](https://github.com/truecharts/charts/compare/fotosho-2.0.6...fotosho-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [fotosho-2.0.6](https://github.com/truecharts/charts/compare/fotosho-2.0.5...fotosho-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [fotosho-2.0.5](https://github.com/truecharts/charts/compare/fotosho-2.0.4...fotosho-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [fotosho-2.0.4](https://github.com/truecharts/charts/compare/fotosho-2.0.3...fotosho-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [fotosho-2.0.3](https://github.com/truecharts/charts/compare/fotosho-2.0.2...fotosho-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - - - -## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) - - diff --git a/incubator/fotosho/2.0.7/Chart.yaml b/incubator/fotosho/2.0.7/Chart.yaml deleted file mode 100644 index 7ae61037c08..00000000000 --- a/incubator/fotosho/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Photos - - MediaServer-Photos -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "*BETA* Fotosho is a photo gallery for your home server. Organize your photos into albums internally and view as a slideshow. Free and open source. Does not require a database. Does not move, copy or modify your photos." -home: https://truecharts.org/charts/incubator/fotosho -icon: https://truecharts.org/img/hotlink-ok/chart-icons/fotosho.png -keywords: - - fotosho - - MediaApp-Photos - - MediaServer-Photos -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: fotosho -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/fotosho - - https://github.com/advplyr/fotosho - - https://hub.docker.com/r/advplyr/fotosho/ -type: application -version: 2.0.7 diff --git a/incubator/fotosho/2.0.7/app-changelog.md b/incubator/fotosho/2.0.7/app-changelog.md deleted file mode 100644 index 886b2dcca05..00000000000 --- a/incubator/fotosho/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [fotosho-2.0.7](https://github.com/truecharts/charts/compare/fotosho-2.0.6...fotosho-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/fotosho/2.0.7/app-readme.md b/incubator/fotosho/2.0.7/app-readme.md deleted file mode 100644 index b00bc72c820..00000000000 --- a/incubator/fotosho/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -*BETA* Fotosho is a photo gallery for your home server. Organize your photos into albums internally and view as a slideshow. Free and open source. Does not require a database. Does not move, copy or modify your photos. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/fotosho](https://truecharts.org/charts/incubator/fotosho) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/fotosho/2.0.7/questions.yaml b/incubator/fotosho/2.0.7/questions.yaml deleted file mode 100644 index 0646b83c7df..00000000000 --- a/incubator/fotosho/2.0.7/questions.yaml +++ /dev/null @@ -1,1969 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 13377 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Container Path config" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: photos - label: "photos Storage" - description: "Container Path photos" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: thumbs - label: "thumbs Storage" - description: "Container Path thumbnails" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/fotosho/2.0.8/CHANGELOG.md b/incubator/fotosho/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..c99ca18c02e --- /dev/null +++ b/incubator/fotosho/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [fotosho-2.0.8](https://github.com/truecharts/charts/compare/fotosho-2.0.7...fotosho-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [fotosho-2.0.7](https://github.com/truecharts/charts/compare/fotosho-2.0.6...fotosho-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [fotosho-2.0.6](https://github.com/truecharts/charts/compare/fotosho-2.0.5...fotosho-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [fotosho-2.0.5](https://github.com/truecharts/charts/compare/fotosho-2.0.4...fotosho-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [fotosho-2.0.4](https://github.com/truecharts/charts/compare/fotosho-2.0.3...fotosho-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [fotosho-2.0.3](https://github.com/truecharts/charts/compare/fotosho-2.0.2...fotosho-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) + + + + +## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) + + + + +## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) + + + + +## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) + + + + +## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) + + + + +## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) + + + + +## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) + + + + +## [fotosho-2.0.2](https://github.com/truecharts/charts/compare/fotosho-2.0.1...fotosho-2.0.2) (2022-11-30) + + + diff --git a/incubator/fotosho/2.0.8/Chart.yaml b/incubator/fotosho/2.0.8/Chart.yaml new file mode 100644 index 00000000000..ddb5838e6a4 --- /dev/null +++ b/incubator/fotosho/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Photos + - MediaServer-Photos +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "*BETA* Fotosho is a photo gallery for your home server. Organize your photos into albums internally and view as a slideshow. Free and open source. Does not require a database. Does not move, copy or modify your photos." +home: https://truecharts.org/charts/incubator/fotosho +icon: https://truecharts.org/img/hotlink-ok/chart-icons/fotosho.png +keywords: + - fotosho + - MediaApp-Photos + - MediaServer-Photos +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fotosho +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/fotosho + - https://hub.docker.com/advplyr/fotosho + - https://github.com/advplyr/fotosho +type: application +version: 2.0.8 diff --git a/incubator/fotosho/2.0.7/README.md b/incubator/fotosho/2.0.8/README.md similarity index 100% rename from incubator/fotosho/2.0.7/README.md rename to incubator/fotosho/2.0.8/README.md diff --git a/incubator/fotosho/2.0.8/app-changelog.md b/incubator/fotosho/2.0.8/app-changelog.md new file mode 100644 index 00000000000..a9410408614 --- /dev/null +++ b/incubator/fotosho/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [fotosho-2.0.8](https://github.com/truecharts/charts/compare/fotosho-2.0.7...fotosho-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/fotosho/2.0.8/app-readme.md b/incubator/fotosho/2.0.8/app-readme.md new file mode 100644 index 00000000000..2547231c4f2 --- /dev/null +++ b/incubator/fotosho/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +*BETA* Fotosho is a photo gallery for your home server. Organize your photos into albums internally and view as a slideshow. Free and open source. Does not require a database. Does not move, copy or modify your photos. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/fotosho](https://truecharts.org/charts/incubator/fotosho) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/frigate/6.0.0/charts/common-11.1.2.tgz b/incubator/fotosho/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/frigate/6.0.0/charts/common-11.1.2.tgz rename to incubator/fotosho/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/fotosho/2.0.7/ix_values.yaml b/incubator/fotosho/2.0.8/ix_values.yaml similarity index 100% rename from incubator/fotosho/2.0.7/ix_values.yaml rename to incubator/fotosho/2.0.8/ix_values.yaml diff --git a/incubator/fotosho/2.0.8/questions.yaml b/incubator/fotosho/2.0.8/questions.yaml new file mode 100644 index 00000000000..79c222521c7 --- /dev/null +++ b/incubator/fotosho/2.0.8/questions.yaml @@ -0,0 +1,2010 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 13377 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "Container Path config" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: photos + label: "photos Storage" + description: "Container Path photos" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: thumbs + label: "thumbs Storage" + description: "Container Path thumbnails" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/fotosho/2.0.7/templates/common.yaml b/incubator/fotosho/2.0.8/templates/common.yaml similarity index 100% rename from incubator/fotosho/2.0.7/templates/common.yaml rename to incubator/fotosho/2.0.8/templates/common.yaml diff --git a/incubator/frigate/6.0.0/values.yaml b/incubator/fotosho/2.0.8/values.yaml similarity index 100% rename from incubator/frigate/6.0.0/values.yaml rename to incubator/fotosho/2.0.8/values.yaml diff --git a/incubator/frigate/6.0.0/CHANGELOG.md b/incubator/frigate/6.0.0/CHANGELOG.md deleted file mode 100644 index 6a8c0f7e2ba..00000000000 --- a/incubator/frigate/6.0.0/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [frigate-6.0.0](https://github.com/truecharts/charts/compare/frigate-5.0.14...frigate-6.0.0) (2023-01-21) - - - - -## [frigate-5.0.14](https://github.com/truecharts/charts/compare/frigate-5.0.13...frigate-5.0.14) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [frigate-5.0.13](https://github.com/truecharts/charts/compare/frigate-5.0.12...frigate-5.0.13) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [frigate-5.0.12](https://github.com/truecharts/charts/compare/frigate-5.0.11...frigate-5.0.12) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [frigate-5.0.11](https://github.com/truecharts/charts/compare/frigate-5.0.10...frigate-5.0.11) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [frigate-5.0.10](https://github.com/truecharts/charts/compare/frigate-5.0.9...frigate-5.0.10) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [frigate-5.0.9](https://github.com/truecharts/charts/compare/frigate-5.0.8...frigate-5.0.9) (2022-12-08) - -### Fix - -- quote all floats in values.yaml. because questions.yaml schema fails to validate when applying empty value ([#5204](https://github.com/truecharts/charts/issues/5204)) - - - - -## [frigate-5.0.8](https://github.com/truecharts/charts/compare/frigate-5.0.7...frigate-5.0.8) (2022-12-07) - -### Fix - -- render parent max_frames only when at least one child has value ([#5196](https://github.com/truecharts/charts/issues/5196)) - - - - -## [frigate-5.0.7](https://github.com/truecharts/charts/compare/frigate-5.0.6...frigate-5.0.7) (2022-12-06) - -### Fix - -- fix typos ([#5164](https://github.com/truecharts/charts/issues/5164)) - - - - -## [frigate-5.0.6](https://github.com/truecharts/charts/compare/frigate-5.0.5...frigate-5.0.6) (2022-11-30) - - - - -## [frigate-5.0.6](https://github.com/truecharts/charts/compare/frigate-5.0.5...frigate-5.0.6) (2022-11-30) - - - - -## [frigate-5.0.6](https://github.com/truecharts/charts/compare/frigate-5.0.5...frigate-5.0.6) (2022-11-30) - - - - -## [frigate-5.0.6](https://github.com/truecharts/charts/compare/frigate-5.0.5...frigate-5.0.6) (2022-11-30) diff --git a/incubator/frigate/6.0.0/Chart.yaml b/incubator/frigate/6.0.0/Chart.yaml deleted file mode 100644 index 4330ccfbca4..00000000000 --- a/incubator/frigate/6.0.0/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "0.11.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: NVR With Realtime Object Detection for IP Cameras -home: https://truecharts.org/charts/incubator/frigate -icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png -keywords: - - encode - - nvr - - media - - frigate -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: frigate -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/frigate - - https://github.com/blakeblackshear/frigate - - https://hub.docker.com/r/blakeblackshear/frigate -type: application -version: 6.0.0 -annotations: - truecharts.org/catagories: | - - nvr - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/frigate/6.0.0/app-changelog.md b/incubator/frigate/6.0.0/app-changelog.md deleted file mode 100644 index a684b0636d8..00000000000 --- a/incubator/frigate/6.0.0/app-changelog.md +++ /dev/null @@ -1,4 +0,0 @@ - - -## [frigate-6.0.0](https://github.com/truecharts/charts/compare/frigate-5.0.14...frigate-6.0.0) (2023-01-21) - diff --git a/incubator/frigate/6.0.0/questions.yaml b/incubator/frigate/6.0.0/questions.yaml deleted file mode 100644 index f447838eb8b..00000000000 --- a/incubator/frigate/6.0.0/questions.yaml +++ /dev/null @@ -1,3375 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: frigate - group: App Configuration - label: Frigate Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: mqtt - label: MQTT - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: Host - schema: - type: string - required: true - default: "" - - variable: port - label: Port - schema: - type: int - default: 1883 - - variable: topic_prefix - label: Topic Prefix - description: Must be unique if you are running multiple instances - schema: - type: string - default: "" - - variable: client_id - label: Client ID - description: Must be unique if you are running multiple instances - schema: - type: string - default: "" - - variable: stats_interval - label: Stats Interval - description: Interval in seconds for publishing stats - schema: - type: int - "null": true - default: 60 - - variable: user - label: Username - schema: - type: string - default: "" - - variable: password - label: Password - schema: - type: string - private: true - default: "" - - variable: detectors - label: Detectors - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: config - label: Detectors Configuration - schema: - type: list - default: [] - items: - - variable: detector_entry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - description: Name of the detector - schema: - type: string - required: true - default: "" - - variable: type - label: Type - description: Name of the detector - schema: - type: string - required: true - default: cpu - enum: - - value: cpu - description: CPU - - value: edgetpu - description: Edge TPU - - variable: device - label: Device - description: Device name as defined here - https://coral.ai/docs/edgetpu/multiple-edgetpu/#using-the-tensorflow-lite-python-api - schema: - type: string - default: "" - - variable: num_threads - label: Number of Threads - description: This value is only used for CPU types - schema: - type: int - "null": true - show_if: [["type", "=", "cpu"]] - - variable: model - label: Model - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: width - label: Width - schema: - type: int - required: true - default: 320 - - variable: height - label: Height - schema: - type: int - required: true - default: 320 - - variable: path - label: Path - schema: - type: string - default: "" - - variable: labelmap_path - label: Label Map Path - schema: - type: string - default: "" - - variable: labelmap - label: Label Map Configuration - schema: - type: list - default: [] - items: - - variable: labelmap_entry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: model - label: Model - schema: - type: string - required: true - default: "" - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: logger - label: Logger - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: default - label: Default Log Verbosity - schema: - type: string - required: true - default: info - enum: - - value: info - description: Info - - value: debug - description: Debug - - value: warning - description: Warning - - value: error - description: Error - - value: critical - description: Critical - - variable: logs - label: Component Specific Logs - schema: - type: list - default: [] - items: - - variable: component_entry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: component - label: Component - description: Find out the available components here https://docs.frigate.video/configuration/advanced/#logger - schema: - type: string - required: true - default: "" - - variable: verbosity - label: Default Log Verbosity - schema: - type: string - required: true - default: info - enum: - - value: info - description: Info - - value: debug - description: Debug - - value: warning - description: Warning - - value: error - description: Error - - value: critical - description: Critical - - variable: birdseye - label: Birds Eye - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enabled - description: Enables the birdseye - schema: - type: boolean - default: true - - variable: width - label: Width - description: Width of the output resolution - schema: - type: int - "null": true - - variable: height - label: Height - description: Height of the output resolution - schema: - type: int - "null": true - - variable: quality - label: Quality - description: Encoding quality of the mpeg1 feed. Where 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources. - schema: - type: int - min: 1 - max: 31 - default: 8 - - variable: mode - label: Mode - description: | - Mode of the view. - Objects - Cameras are included if they have had a tracked object within the last 30 seconds. - Motion - Cameras are included if motion was detected in the last 30 seconds. - Continuous - All cameras are included always. - schema: - type: string - default: "" - enum: - - value: "" - description: Inherit - - value: objects - description: Objects - - value: motion - description: Motion - - value: continuous - description: Continuous - - variable: ffmpeg - label: ffmpeg - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: global_args - label: Global Args - schema: - type: string - default: "" - - variable: hwaccel_args - label: HW Acceleration Args - description: See hardware acceleration docs for your specific device - schema: - type: string - default: "" - - variable: input_args - label: Input Args - schema: - type: string - default: "" - - variable: output_args - label: Output Args - schema: - additional_attrs: true - type: dict - attrs: - - variable: detect - label: Detect - schema: - type: string - default: "" - - variable: record - label: Record - schema: - type: string - default: "" - - variable: rtmp - label: RTMP - schema: - type: string - default: "" - - variable: detect - label: Detect - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enabled - description: Enables detection for the cameras - schema: - type: boolean - default: true - - variable: width - label: Width - description: Width of the frame for the input with the detect role - schema: - type: int - "null": true - - variable: height - label: Height - description: Height of the frame for the input with the detect role - schema: - type: int - "null": true - - variable: fps - label: FPS - description: Desired fps for your camera for the input with the detect role. Recommended value of 5. Ideally, try and reduce your FPS on the camera. - schema: - type: int - "null": true - - variable: max_disappeared - label: Max Disappeared - description: Number of frames without a detection before frigate considers an object to be gone. - schema: - type: int - "null": true - - variable: stationary - label: Stationary - schema: - additional_attrs: true - type: dict - attrs: - - variable: interval - label: Interval - description: | - Frequency for confirming stationary objects - When set to 0, object detection will not confirm stationary objects until movement is detected. - If set to 10, object detection will run to confirm the object still exists on every 10th frame. - schema: - type: int - "null": true - - variable: threshold - label: Threshold - description: Number of frames without a position change for an object to be considered stationary - schema: - type: int - "null": true - - variable: set_max_frames - label: Set Max Frames - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: max_frames - label: Max Frames - schema: - additional_attrs: true - type: dict - attrs: - - variable: default - label: Default - description: Default for all object types - schema: - type: int - "null": true - - variable: objects - label: Objects - schema: - type: list - default: [] - items: - - variable: object_entry - label: Object Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: object - label: Object - schema: - type: string - required: true - default: "" - - variable: frames - label: Frames - schema: - type: int - required: true - - variable: objects - label: Objects - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: track - label: Track - description: Objects to track from labelmap.txt - schema: - type: list - default: [] - items: - - variable: track_entry - label: Track Object Entry - schema: - type: string - required: true - default: "" - - variable: mask - label: Mask - description: | - Mask to prevent all object types from being detected in certain areas - Checks based on the bottom center of the bounding box of the object. - This mask is COMBINED with the object type specific mask below - schema: - type: string - default: "" - - variable: filters - label: Filters - description: Filters to reduce false positives for specific object types - schema: - type: list - default: [] - items: - - variable: filter_entry - label: Filter Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: object - label: Object - description: For example person - schema: - type: string - required: true - default: "" - - variable: min_area - label: Min Area - description: Minimum width*height of the bounding box for the detected object - schema: - type: int - "null": true - - variable: max_area - label: Max Area - description: Maximum width*height of the bounding box for the detected object - schema: - type: int - "null": true - - variable: min_ratio - label: Min Ratio - description: Minimum width/height of the bounding box for the detected object - schema: - type: string - default: "" - valid_chars: '^[0-9]+(\.[0-9]*)?$' - - variable: max_ratio - label: Max Ratio - description: Maximum width/height of the bounding box for the detected object - schema: - type: string - default: "" - valid_chars: '^[0-9]+(\.[0-9]*)?$' - - variable: min_score - label: Min Score - description: Minimum score for the object to initiate tracking - schema: - type: string - default: "" - valid_chars: '^[0-9]+(\.[0-9]*)?$' - - variable: threshold - label: Threshold - description: Minimum decimal percentage for tracked object's computed score to be considered a true positive - schema: - type: string - default: "" - valid_chars: '^[0-9]+(\.[0-9]*)?$' - - variable: mask - label: Mask - description: | - Mask to prevent this object type from being detected in certain areas - Checks based on the bottom center of the bounding box of the object - schema: - type: string - default: "" - - variable: motion - label: Motion - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: threshold - label: Threshold - description: | - The threshold passed to cv2.threshold to determine if a pixel is different enough to be counted as motion. - Increasing this value will make motion detection less sensitive and decreasing it will make motion detection more sensitive. - schema: - type: int - min: 1 - max: 255 - default: 25 - - variable: contour_area - label: Contour Area - description: | - Minimum size in pixels in the resized motion image that counts as motion - Increasing this value will prevent smaller areas of motion from being detected. Decreasing will - make motion detection more sensitive to smaller moving objects. - As a rule of thumb: - 15 - high sensitivity - 30 - medium sensitivity - 50 - low sensitivity - schema: - type: int - "null": true - - variable: delta_alpha - label: Delta Alpha - description: | - Alpha value passed to cv2.accumulateWeighted when averaging the motion delta across multiple frames - Higher values mean the current frame impacts the delta a lot, and a single raindrop may register as motion. - Too low and a fast moving person wont be detected as motion. - schema: - type: string - default: "" - valid_chars: '^[0-9]+(\.[0-9]*)?$' - - variable: frame_alpha - label: Frame Alpha - description: | - Alpha value passed to cv2.accumulateWeighted when averaging frames to determine the background - Higher values mean the current frame impacts the average a lot, and a new object will be averaged into the background faster. - Low values will cause things like moving shadows to be detected as motion for longer. - https://www.geeksforgeeks.org/background-subtraction-in-an-image-using-concept-of-running-average - schema: - type: string - default: "" - valid_chars: '^[0-9]+(\.[0-9]*)?$' - - variable: frame_height - label: Frame Height - description: | - Height of the resized motion frame - This operates as an efficient blur alternative. Higher values will result in more granular motion detection at the expense - of higher CPU usage. Lower values result in less CPU, but small changes may not register as motion. - schema: - type: int - "null": true - - variable: mask - label: Mask - description: See docs for more detailed info on creating masks - schema: - type: string - default: "" - - variable: improve_contrast - label: Improve Contrast - description: Improve contrast. Enables dynamic contrast improvement. This should help improve night detections at the cost of making motion detection more sensitive for daytime. - schema: - type: boolean - default: false - - variable: mqtt_off_delay - label: MQTT Off Delay - description: Delay when updating camera motion through MQTT from ON -> OFF - schema: - type: int - "null": true - - variable: record - label: Record - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enabled - description: | - Enable recording - WARNING: If recording is disabled in the config, turning it on via the UI or MQTT later will have no effect. - WARNING: Frigate does not currently support limiting recordings based on available disk space automatically. - If using recordings,you must specify retention settings for a number of days that will fit within the available disk space of your drive or Frigate will crash. - schema: - type: boolean - default: true - - variable: expire_interval - label: Expire Interval - description: Number of minutes to wait between cleanup runs - schema: - type: int - "null": true - - variable: retain - label: Record > Retain - description: Retention settings for recording - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Retain Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: days - label: Days - description: | - Number of days to retain recordings regardless of events - NOTE: This should be set to 0 and retention should be defined in events section below if you only want to retain recordings of events. - schema: - type: int - "null": true - - variable: mode - label: Mode - description: | - Mode for retention. - All - save all recording segments regardless of activity - Motion - save all recordings segments with any detected motion - Active Objects - save all recording segments with active/moving objects - NOTE: This mode only applies when the days setting above is greater than 0 - schema: - type: string - show_if: [["days", "!=", 0]] - default: "" - enum: - - value: "" - description: Inherit - - value: all - description: All - - value: motion - description: Motion - - value: active_objects - description: Active Objects - - variable: events - label: Record > Events - description: Event recording settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: pre_capture - label: Pre Capture - description: Number of seconds before the event to include - schema: - type: int - "null": true - - variable: post_capture - label: Post Capture - description: Number of seconds after the event to include - schema: - type: int - "null": true - - variable: objects - label: Objects - description: Objects to save recordings for. Defaults to all objects. - schema: - type: list - default: [] - items: - - variable: object_entry - label: "" - schema: - type: string - required: true - default: "" - - variable: required_zones - label: Required Zones - description: Restrict recordings to objects that entered any of the listed zones - schema: - type: list - default: [] - items: - - variable: zone_entry - label: "" - schema: - type: string - required: true - default: "" - - variable: retain - label: Record > Events > Retain - description: Retention settings for recordings of events - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Retain Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: default - label: Default - description: Default retention days - schema: - type: int - required: true - default: 10 - - variable: mode - label: Mode - description: | - Mode for retention. - All - save all recording segments for events regardless of activity - Motion - save all recordings segments for events with any detected motion - Active Objects - save all recording segments for event with active/moving objects - schema: - type: string - default: "" - enum: - - value: "" - description: Inherit - - value: all - description: All - - value: motion - description: Motion - - value: active_objects - description: Active Objects - - variable: objects - label: Objects - description: Per object retention days - schema: - type: list - default: [] - items: - - variable: objects_entry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: object - label: Object - description: For example Person - schema: - type: string - required: true - default: "" - - variable: days - label: Retention Days - description: Retention days for the object - schema: - type: int - required: true - default: 15 - - variable: snapshots - label: Snapshots - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enabled - description: | - Optional: Enable writing jpg snapshot to /media/frigate/clips - This value can be set via MQTT and will be updated in startup based on retained value - schema: - type: boolean - default: true - - variable: clean_copy - label: Clean Copy - description: Save a clean PNG copy of the snapshot image - schema: - type: boolean - default: true - - variable: timestamp - label: Timestamp - description: Print a timestamp on the snapshots - schema: - type: boolean - default: false - - variable: bounding_box - label: Bounding Box - description: Draw bounding box on the snapshots - schema: - type: boolean - default: false - - variable: crop - label: Crop - description: Crop the snapshot - schema: - type: boolean - default: false - - variable: height - label: Height - description: Height to resize the snapshot to - schema: - type: int - "null": true - - variable: required_zones - label: Required Zones - description: Restrict recordings to objects that entered any of the listed zones - schema: - type: list - default: [] - items: - - variable: zone_entry - label: Zone Entry - schema: - type: string - required: true - default: "" - - variable: retain - label: Snapshots > Retain - description: Retention settings for snapshots of events - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Retain Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: default - label: Default - description: Default retention days - schema: - type: int - required: true - default: 10 - - variable: objects - label: Objects - description: Per object retention days - schema: - type: list - default: [] - items: - - variable: objects_entry - label: Objects Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: object - label: Object - description: For example Person - schema: - type: string - required: true - default: "" - - variable: days - label: Retention Days - description: Retention days for the object - schema: - type: int - required: true - default: 15 - - variable: rtmp - label: RTMP - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enabled - description: Enable the RTMP stream - schema: - type: boolean - default: true - - variable: live - label: Live - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: height - label: Height - description: | - Set the height of the live stream. - This must be less than or equal to the height of the detect stream. Lower resolutions - reduce bandwidth required for viewing the live stream. Width is computed to match known aspect ratio. - schema: - type: int - "null": true - - variable: quality - label: Quality - description: | - Set the encode quality of the live stream - 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources. - schema: - type: int - min: 1 - max: 31 - default: 8 - - variable: timestamp_style - label: Timestamp Style - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: position - label: Position - description: Position of the timestamp - schema: - type: string - default: "" - enum: - - value: "" - description: Inherit - - value: tl - description: Top Left - - value: tr - description: Top Right - - value: bl - description: Bottom Left - - value: br - description: Bottom Right - - variable: format - label: Format - description: Format specifier conform to the Python package - schema: - type: string - default: "" - - variable: color - label: Timestamp Style > Color - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: red - label: Red - schema: - type: int - default: 255 - required: true - - variable: green - label: Green - schema: - type: int - required: true - default: 255 - - variable: blue - label: Blue - schema: - type: int - required: true - default: 255 - - variable: thickness - label: Thickness - description: Line thickness of font - schema: - type: int - "null": true - - variable: effect - label: Effect - description: | - Effect of lettering - Inherit - Inherit from default configuration - None - No effect - Solid - Solid background in inverse color of font - Shadow - Shadow for font - schema: - type: string - default: "" - enum: - - value: "" - description: Inherit - - value: None - description: None - - value: solid - description: Solid - - value: shadow - description: Shadow - - variable: cameras - label: Cameras - schema: - type: list - default: [] - items: - - variable: camera_entry - label: Camera Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: camera_name - label: Camera Name - schema: - type: string - required: true - default: "" - - variable: ffmpeg - label: ffmpeg - description: ffmpeg Settings for the camera - schema: - additional_attrs: true - type: dict - attrs: - - variable: inputs - label: Inputs - description: A list of input streams for the camera. See documentation for more information. - schema: - type: list - required: true - default: [] - items: - - variable: input_entry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - description: The path to the stream - schema: - type: string - required: true - default: "" - - variable: roles - label: Roles - schema: - type: list - required: true - default: [] - items: - - variable: role_entry - label: "" - schema: - type: string - required: true - default: "" - enum: - - value: detect - description: Detect - - value: rtmp - description: RTMP - - value: record - description: Record - - variable: global_args - label: Global Args - description: Stream specific global args - schema: - type: string - default: "" - - variable: hwaccel_args - label: HW Acceleration Args - description: Stream specific hwaccel args - schema: - type: string - default: "" - - variable: input_args - label: Input Args - description: Stream specific input args - schema: - type: string - default: "" - - variable: output_args - label: Output Args - schema: - additional_attrs: true - type: dict - attrs: - - variable: detect - label: Detect - schema: - type: string - default: "" - - variable: record - label: Record - schema: - type: string - default: "" - - variable: rtmp - label: RTMP - schema: - type: string - default: "" - - variable: global_args - label: Global Args - description: Camera specific global args - schema: - type: string - default: "" - - variable: hwaccel_args - label: HW Acceleration Args - description: Camera specific hwaccel args - schema: - type: string - default: "" - - variable: input_args - label: Input Args - description: Camera specific input args - schema: - type: string - default: "" - - variable: output_args - label: Output Args - schema: - additional_attrs: true - type: dict - attrs: - - variable: detect - label: Detect - schema: - type: string - default: "" - - variable: record - label: Record - schema: - type: string - default: "" - - variable: rtmp - label: RTMP - schema: - type: string - default: "" - - variable: best_image_timeout - label: Best Image Timeout - description: Timeout for highest scoring image before allowing it to be replaced by a newer image. - schema: - type: int - "null": true - - variable: zones - label: Zones - description: Zones for this camera - schema: - type: list - default: [] - items: - - variable: zone_entry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Zone Name - schema: - type: string - required: true - default: "" - - variable: coordinates - label: Coordinates - description: List of x,y coordinates to define the polygon of the zone. - schema: - type: string - required: true - default: "" - - variable: objects - label: Objects - schema: - type: list - default: [] - items: - - variable: object_entry - label: "" - description: For example person - schema: - type: string - required: true - default: "" - - variable: filters - label: Filters - description: Zone level object filters - schema: - type: list - default: [] - items: - - variable: filter_entry - label: Filter Entry - description: For example person - schema: - additional_attrs: true - type: dict - attrs: - - variable: object - label: Object - description: For example person - schema: - type: string - required: true - default: "" - - variable: min_area - label: Min Area - description: Minimum width*height of the bounding box for the detected object - schema: - type: int - "null": true - - variable: max_area - label: Max Area - description: Maximum width*height of the bounding box for the detected object - schema: - type: int - "null": true - - variable: threshold - label: Threshold - description: Minimum decimal percentage for tracked object's computed score to be considered a true positive - schema: - type: string - default: "" - valid_chars: '^[0-9]+(\.[0-9]*)?$' - - variable: mqtt - label: MQTT - description: MQTT Configuration for jpg snapshots published for this camera - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: enabled - label: Enabled - description: | - Enable publishing snapshot via mqtt for camera - NOTE: Only applies to publishing image data to MQTT via 'frigate///snapshot'. - All other messages will still be published. - schema: - type: boolean - default: true - - variable: timestamp - label: Timestamp - description: Print a timestamp on the snapshots - schema: - type: boolean - default: true - - variable: bounding_box - label: Bounding Box - description: Draw bounding box on the snapshots - schema: - type: boolean - default: true - - variable: crop - label: Crop - description: Crop the snapshot - schema: - type: boolean - default: true - - variable: height - label: Height - description: Height to resize the snapshot to - schema: - type: int - "null": true - - variable: quality - label: Quality - description: JPEG encode quality - schema: - type: int - "null": true - - variable: required_zones - label: Required Zones - description: Restrict mqtt messages to objects that entered any of the listed zones - schema: - type: list - default: [] - items: - - variable: required_zone - label: Required Zone - schema: - type: string - required: true - default: "" - - variable: ui - label: UI - description: Configuration for how camera is handled in the GUI. - schema: - additional_attrs: true - type: dict - attrs: - - variable: render_config - label: Render Configuration - description: Enable it to add the configuration in the config file - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: order - label: order - description: Adjust sort order of cameras in the UI. Larger numbers come later By default the cameras are sorted alphabetically. - schema: - "null": true - type: int - - variable: dashboard - label: Dashboard - description: Whether or not to show the camera in the Frigate UI - schema: - type: boolean - default: true - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10500 - editable: true - required: true - - variable: rtmp - label: RTMP Service - description: The service on which nodes connect to. - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: rtmp - label: RTMP Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 1935 - editable: true - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: media - label: App Media - description: Stores the Application Media - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: db - label: App DB - description: Stores the Application DB - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/frigate/6.0.1/CHANGELOG.md b/incubator/frigate/6.0.1/CHANGELOG.md new file mode 100644 index 00000000000..b9d41b6a297 --- /dev/null +++ b/incubator/frigate/6.0.1/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [frigate-6.0.1](https://github.com/truecharts/charts/compare/frigate-6.0.0...frigate-6.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [frigate-6.0.0](https://github.com/truecharts/charts/compare/frigate-5.0.14...frigate-6.0.0) (2023-01-21) + + + + +## [frigate-5.0.14](https://github.com/truecharts/charts/compare/frigate-5.0.13...frigate-5.0.14) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [frigate-5.0.13](https://github.com/truecharts/charts/compare/frigate-5.0.12...frigate-5.0.13) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [frigate-5.0.12](https://github.com/truecharts/charts/compare/frigate-5.0.11...frigate-5.0.12) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [frigate-5.0.11](https://github.com/truecharts/charts/compare/frigate-5.0.10...frigate-5.0.11) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [frigate-5.0.10](https://github.com/truecharts/charts/compare/frigate-5.0.9...frigate-5.0.10) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [frigate-5.0.9](https://github.com/truecharts/charts/compare/frigate-5.0.8...frigate-5.0.9) (2022-12-08) + +### Fix + +- quote all floats in values.yaml. because questions.yaml schema fails to validate when applying empty value ([#5204](https://github.com/truecharts/charts/issues/5204)) + + + + +## [frigate-5.0.8](https://github.com/truecharts/charts/compare/frigate-5.0.7...frigate-5.0.8) (2022-12-07) + +### Fix + +- render parent max_frames only when at least one child has value ([#5196](https://github.com/truecharts/charts/issues/5196)) + + + + +## [frigate-5.0.7](https://github.com/truecharts/charts/compare/frigate-5.0.6...frigate-5.0.7) (2022-12-06) + +### Fix + +- fix typos ([#5164](https://github.com/truecharts/charts/issues/5164)) + + + + +## [frigate-5.0.6](https://github.com/truecharts/charts/compare/frigate-5.0.5...frigate-5.0.6) (2022-11-30) + + + + +## [frigate-5.0.6](https://github.com/truecharts/charts/compare/frigate-5.0.5...frigate-5.0.6) (2022-11-30) + diff --git a/incubator/frigate/6.0.1/Chart.yaml b/incubator/frigate/6.0.1/Chart.yaml new file mode 100644 index 00000000000..4fe3c1eaaf2 --- /dev/null +++ b/incubator/frigate/6.0.1/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "0.11.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: NVR With Realtime Object Detection for IP Cameras +home: https://truecharts.org/charts/incubator/frigate +icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png +keywords: + - encode + - nvr + - media + - frigate +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: frigate +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/frigate + - https://hub.docker.com/blakeblackshear/frigate + - https://github.com/blakeblackshear/frigate +type: application +version: 6.0.1 +annotations: + truecharts.org/catagories: | + - nvr + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/frigate/6.0.0/README.md b/incubator/frigate/6.0.1/README.md similarity index 100% rename from incubator/frigate/6.0.0/README.md rename to incubator/frigate/6.0.1/README.md diff --git a/incubator/frigate/6.0.1/app-changelog.md b/incubator/frigate/6.0.1/app-changelog.md new file mode 100644 index 00000000000..be663be5b9d --- /dev/null +++ b/incubator/frigate/6.0.1/app-changelog.md @@ -0,0 +1,9 @@ + + +## [frigate-6.0.1](https://github.com/truecharts/charts/compare/frigate-6.0.0...frigate-6.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/frigate/6.0.0/app-readme.md b/incubator/frigate/6.0.1/app-readme.md similarity index 100% rename from incubator/frigate/6.0.0/app-readme.md rename to incubator/frigate/6.0.1/app-readme.md diff --git a/incubator/funkwhale/2.1.7/charts/common-11.1.2.tgz b/incubator/frigate/6.0.1/charts/common-11.1.2.tgz similarity index 100% rename from incubator/funkwhale/2.1.7/charts/common-11.1.2.tgz rename to incubator/frigate/6.0.1/charts/common-11.1.2.tgz diff --git a/incubator/frigate/6.0.0/ix_values.yaml b/incubator/frigate/6.0.1/ix_values.yaml similarity index 100% rename from incubator/frigate/6.0.0/ix_values.yaml rename to incubator/frigate/6.0.1/ix_values.yaml diff --git a/incubator/frigate/6.0.1/questions.yaml b/incubator/frigate/6.0.1/questions.yaml new file mode 100644 index 00000000000..b9e89de328c --- /dev/null +++ b/incubator/frigate/6.0.1/questions.yaml @@ -0,0 +1,3416 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: frigate + group: App Configuration + label: Frigate Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: mqtt + label: MQTT + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: Host + schema: + type: string + required: true + default: "" + - variable: port + label: Port + schema: + type: int + default: 1883 + - variable: topic_prefix + label: Topic Prefix + description: Must be unique if you are running multiple instances + schema: + type: string + default: "" + - variable: client_id + label: Client ID + description: Must be unique if you are running multiple instances + schema: + type: string + default: "" + - variable: stats_interval + label: Stats Interval + description: Interval in seconds for publishing stats + schema: + type: int + "null": true + default: 60 + - variable: user + label: Username + schema: + type: string + default: "" + - variable: password + label: Password + schema: + type: string + private: true + default: "" + - variable: detectors + label: Detectors + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: config + label: Detectors Configuration + schema: + type: list + default: [] + items: + - variable: detector_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: Name of the detector + schema: + type: string + required: true + default: "" + - variable: type + label: Type + description: Name of the detector + schema: + type: string + required: true + default: cpu + enum: + - value: cpu + description: CPU + - value: edgetpu + description: Edge TPU + - variable: device + label: Device + description: Device name as defined here - https://coral.ai/docs/edgetpu/multiple-edgetpu/#using-the-tensorflow-lite-python-api + schema: + type: string + default: "" + - variable: num_threads + label: Number of Threads + description: This value is only used for CPU types + schema: + type: int + "null": true + show_if: [["type", "=", "cpu"]] + - variable: model + label: Model + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: width + label: Width + schema: + type: int + required: true + default: 320 + - variable: height + label: Height + schema: + type: int + required: true + default: 320 + - variable: path + label: Path + schema: + type: string + default: "" + - variable: labelmap_path + label: Label Map Path + schema: + type: string + default: "" + - variable: labelmap + label: Label Map Configuration + schema: + type: list + default: [] + items: + - variable: labelmap_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: model + label: Model + schema: + type: string + required: true + default: "" + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: logger + label: Logger + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: default + label: Default Log Verbosity + schema: + type: string + required: true + default: info + enum: + - value: info + description: Info + - value: debug + description: Debug + - value: warning + description: Warning + - value: error + description: Error + - value: critical + description: Critical + - variable: logs + label: Component Specific Logs + schema: + type: list + default: [] + items: + - variable: component_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: component + label: Component + description: Find out the available components here https://docs.frigate.video/configuration/advanced/#logger + schema: + type: string + required: true + default: "" + - variable: verbosity + label: Default Log Verbosity + schema: + type: string + required: true + default: info + enum: + - value: info + description: Info + - value: debug + description: Debug + - value: warning + description: Warning + - value: error + description: Error + - value: critical + description: Critical + - variable: birdseye + label: Birds Eye + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: Enables the birdseye + schema: + type: boolean + default: true + - variable: width + label: Width + description: Width of the output resolution + schema: + type: int + "null": true + - variable: height + label: Height + description: Height of the output resolution + schema: + type: int + "null": true + - variable: quality + label: Quality + description: Encoding quality of the mpeg1 feed. Where 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources. + schema: + type: int + min: 1 + max: 31 + default: 8 + - variable: mode + label: Mode + description: | + Mode of the view. + Objects - Cameras are included if they have had a tracked object within the last 30 seconds. + Motion - Cameras are included if motion was detected in the last 30 seconds. + Continuous - All cameras are included always. + schema: + type: string + default: "" + enum: + - value: "" + description: Inherit + - value: objects + description: Objects + - value: motion + description: Motion + - value: continuous + description: Continuous + - variable: ffmpeg + label: ffmpeg + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: global_args + label: Global Args + schema: + type: string + default: "" + - variable: hwaccel_args + label: HW Acceleration Args + description: See hardware acceleration docs for your specific device + schema: + type: string + default: "" + - variable: input_args + label: Input Args + schema: + type: string + default: "" + - variable: output_args + label: Output Args + schema: + additional_attrs: true + type: dict + attrs: + - variable: detect + label: Detect + schema: + type: string + default: "" + - variable: record + label: Record + schema: + type: string + default: "" + - variable: rtmp + label: RTMP + schema: + type: string + default: "" + - variable: detect + label: Detect + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: Enables detection for the cameras + schema: + type: boolean + default: true + - variable: width + label: Width + description: Width of the frame for the input with the detect role + schema: + type: int + "null": true + - variable: height + label: Height + description: Height of the frame for the input with the detect role + schema: + type: int + "null": true + - variable: fps + label: FPS + description: Desired fps for your camera for the input with the detect role. Recommended value of 5. Ideally, try and reduce your FPS on the camera. + schema: + type: int + "null": true + - variable: max_disappeared + label: Max Disappeared + description: Number of frames without a detection before frigate considers an object to be gone. + schema: + type: int + "null": true + - variable: stationary + label: Stationary + schema: + additional_attrs: true + type: dict + attrs: + - variable: interval + label: Interval + description: | + Frequency for confirming stationary objects + When set to 0, object detection will not confirm stationary objects until movement is detected. + If set to 10, object detection will run to confirm the object still exists on every 10th frame. + schema: + type: int + "null": true + - variable: threshold + label: Threshold + description: Number of frames without a position change for an object to be considered stationary + schema: + type: int + "null": true + - variable: set_max_frames + label: Set Max Frames + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: max_frames + label: Max Frames + schema: + additional_attrs: true + type: dict + attrs: + - variable: default + label: Default + description: Default for all object types + schema: + type: int + "null": true + - variable: objects + label: Objects + schema: + type: list + default: [] + items: + - variable: object_entry + label: Object Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + schema: + type: string + required: true + default: "" + - variable: frames + label: Frames + schema: + type: int + required: true + - variable: objects + label: Objects + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: track + label: Track + description: Objects to track from labelmap.txt + schema: + type: list + default: [] + items: + - variable: track_entry + label: Track Object Entry + schema: + type: string + required: true + default: "" + - variable: mask + label: Mask + description: | + Mask to prevent all object types from being detected in certain areas + Checks based on the bottom center of the bounding box of the object. + This mask is COMBINED with the object type specific mask below + schema: + type: string + default: "" + - variable: filters + label: Filters + description: Filters to reduce false positives for specific object types + schema: + type: list + default: [] + items: + - variable: filter_entry + label: Filter Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + description: For example person + schema: + type: string + required: true + default: "" + - variable: min_area + label: Min Area + description: Minimum width*height of the bounding box for the detected object + schema: + type: int + "null": true + - variable: max_area + label: Max Area + description: Maximum width*height of the bounding box for the detected object + schema: + type: int + "null": true + - variable: min_ratio + label: Min Ratio + description: Minimum width/height of the bounding box for the detected object + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: max_ratio + label: Max Ratio + description: Maximum width/height of the bounding box for the detected object + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: min_score + label: Min Score + description: Minimum score for the object to initiate tracking + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: threshold + label: Threshold + description: Minimum decimal percentage for tracked object's computed score to be considered a true positive + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: mask + label: Mask + description: | + Mask to prevent this object type from being detected in certain areas + Checks based on the bottom center of the bounding box of the object + schema: + type: string + default: "" + - variable: motion + label: Motion + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: threshold + label: Threshold + description: | + The threshold passed to cv2.threshold to determine if a pixel is different enough to be counted as motion. + Increasing this value will make motion detection less sensitive and decreasing it will make motion detection more sensitive. + schema: + type: int + min: 1 + max: 255 + default: 25 + - variable: contour_area + label: Contour Area + description: | + Minimum size in pixels in the resized motion image that counts as motion + Increasing this value will prevent smaller areas of motion from being detected. Decreasing will + make motion detection more sensitive to smaller moving objects. + As a rule of thumb: + 15 - high sensitivity + 30 - medium sensitivity + 50 - low sensitivity + schema: + type: int + "null": true + - variable: delta_alpha + label: Delta Alpha + description: | + Alpha value passed to cv2.accumulateWeighted when averaging the motion delta across multiple frames + Higher values mean the current frame impacts the delta a lot, and a single raindrop may register as motion. + Too low and a fast moving person wont be detected as motion. + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: frame_alpha + label: Frame Alpha + description: | + Alpha value passed to cv2.accumulateWeighted when averaging frames to determine the background + Higher values mean the current frame impacts the average a lot, and a new object will be averaged into the background faster. + Low values will cause things like moving shadows to be detected as motion for longer. + https://www.geeksforgeeks.org/background-subtraction-in-an-image-using-concept-of-running-average + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: frame_height + label: Frame Height + description: | + Height of the resized motion frame + This operates as an efficient blur alternative. Higher values will result in more granular motion detection at the expense + of higher CPU usage. Lower values result in less CPU, but small changes may not register as motion. + schema: + type: int + "null": true + - variable: mask + label: Mask + description: See docs for more detailed info on creating masks + schema: + type: string + default: "" + - variable: improve_contrast + label: Improve Contrast + description: Improve contrast. Enables dynamic contrast improvement. This should help improve night detections at the cost of making motion detection more sensitive for daytime. + schema: + type: boolean + default: false + - variable: mqtt_off_delay + label: MQTT Off Delay + description: Delay when updating camera motion through MQTT from ON -> OFF + schema: + type: int + "null": true + - variable: record + label: Record + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: | + Enable recording + WARNING: If recording is disabled in the config, turning it on via the UI or MQTT later will have no effect. + WARNING: Frigate does not currently support limiting recordings based on available disk space automatically. + If using recordings,you must specify retention settings for a number of days that will fit within the available disk space of your drive or Frigate will crash. + schema: + type: boolean + default: true + - variable: expire_interval + label: Expire Interval + description: Number of minutes to wait between cleanup runs + schema: + type: int + "null": true + - variable: retain + label: Record > Retain + description: Retention settings for recording + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Retain Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: days + label: Days + description: | + Number of days to retain recordings regardless of events + NOTE: This should be set to 0 and retention should be defined in events section below if you only want to retain recordings of events. + schema: + type: int + "null": true + - variable: mode + label: Mode + description: | + Mode for retention. + All - save all recording segments regardless of activity + Motion - save all recordings segments with any detected motion + Active Objects - save all recording segments with active/moving objects + NOTE: This mode only applies when the days setting above is greater than 0 + schema: + type: string + show_if: [["days", "!=", 0]] + default: "" + enum: + - value: "" + description: Inherit + - value: all + description: All + - value: motion + description: Motion + - value: active_objects + description: Active Objects + - variable: events + label: Record > Events + description: Event recording settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: pre_capture + label: Pre Capture + description: Number of seconds before the event to include + schema: + type: int + "null": true + - variable: post_capture + label: Post Capture + description: Number of seconds after the event to include + schema: + type: int + "null": true + - variable: objects + label: Objects + description: Objects to save recordings for. Defaults to all objects. + schema: + type: list + default: [] + items: + - variable: object_entry + label: "" + schema: + type: string + required: true + default: "" + - variable: required_zones + label: Required Zones + description: Restrict recordings to objects that entered any of the listed zones + schema: + type: list + default: [] + items: + - variable: zone_entry + label: "" + schema: + type: string + required: true + default: "" + - variable: retain + label: Record > Events > Retain + description: Retention settings for recordings of events + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Retain Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: default + label: Default + description: Default retention days + schema: + type: int + required: true + default: 10 + - variable: mode + label: Mode + description: | + Mode for retention. + All - save all recording segments for events regardless of activity + Motion - save all recordings segments for events with any detected motion + Active Objects - save all recording segments for event with active/moving objects + schema: + type: string + default: "" + enum: + - value: "" + description: Inherit + - value: all + description: All + - value: motion + description: Motion + - value: active_objects + description: Active Objects + - variable: objects + label: Objects + description: Per object retention days + schema: + type: list + default: [] + items: + - variable: objects_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + description: For example Person + schema: + type: string + required: true + default: "" + - variable: days + label: Retention Days + description: Retention days for the object + schema: + type: int + required: true + default: 15 + - variable: snapshots + label: Snapshots + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: | + Optional: Enable writing jpg snapshot to /media/frigate/clips + This value can be set via MQTT and will be updated in startup based on retained value + schema: + type: boolean + default: true + - variable: clean_copy + label: Clean Copy + description: Save a clean PNG copy of the snapshot image + schema: + type: boolean + default: true + - variable: timestamp + label: Timestamp + description: Print a timestamp on the snapshots + schema: + type: boolean + default: false + - variable: bounding_box + label: Bounding Box + description: Draw bounding box on the snapshots + schema: + type: boolean + default: false + - variable: crop + label: Crop + description: Crop the snapshot + schema: + type: boolean + default: false + - variable: height + label: Height + description: Height to resize the snapshot to + schema: + type: int + "null": true + - variable: required_zones + label: Required Zones + description: Restrict recordings to objects that entered any of the listed zones + schema: + type: list + default: [] + items: + - variable: zone_entry + label: Zone Entry + schema: + type: string + required: true + default: "" + - variable: retain + label: Snapshots > Retain + description: Retention settings for snapshots of events + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Retain Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: default + label: Default + description: Default retention days + schema: + type: int + required: true + default: 10 + - variable: objects + label: Objects + description: Per object retention days + schema: + type: list + default: [] + items: + - variable: objects_entry + label: Objects Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + description: For example Person + schema: + type: string + required: true + default: "" + - variable: days + label: Retention Days + description: Retention days for the object + schema: + type: int + required: true + default: 15 + - variable: rtmp + label: RTMP + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: Enable the RTMP stream + schema: + type: boolean + default: true + - variable: live + label: Live + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: height + label: Height + description: | + Set the height of the live stream. + This must be less than or equal to the height of the detect stream. Lower resolutions + reduce bandwidth required for viewing the live stream. Width is computed to match known aspect ratio. + schema: + type: int + "null": true + - variable: quality + label: Quality + description: | + Set the encode quality of the live stream + 1 is the highest quality, and 31 is the lowest. Lower quality feeds utilize less CPU resources. + schema: + type: int + min: 1 + max: 31 + default: 8 + - variable: timestamp_style + label: Timestamp Style + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: position + label: Position + description: Position of the timestamp + schema: + type: string + default: "" + enum: + - value: "" + description: Inherit + - value: tl + description: Top Left + - value: tr + description: Top Right + - value: bl + description: Bottom Left + - value: br + description: Bottom Right + - variable: format + label: Format + description: Format specifier conform to the Python package + schema: + type: string + default: "" + - variable: color + label: Timestamp Style > Color + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: red + label: Red + schema: + type: int + default: 255 + required: true + - variable: green + label: Green + schema: + type: int + required: true + default: 255 + - variable: blue + label: Blue + schema: + type: int + required: true + default: 255 + - variable: thickness + label: Thickness + description: Line thickness of font + schema: + type: int + "null": true + - variable: effect + label: Effect + description: | + Effect of lettering + Inherit - Inherit from default configuration + None - No effect + Solid - Solid background in inverse color of font + Shadow - Shadow for font + schema: + type: string + default: "" + enum: + - value: "" + description: Inherit + - value: None + description: None + - value: solid + description: Solid + - value: shadow + description: Shadow + - variable: cameras + label: Cameras + schema: + type: list + default: [] + items: + - variable: camera_entry + label: Camera Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: camera_name + label: Camera Name + schema: + type: string + required: true + default: "" + - variable: ffmpeg + label: ffmpeg + description: ffmpeg Settings for the camera + schema: + additional_attrs: true + type: dict + attrs: + - variable: inputs + label: Inputs + description: A list of input streams for the camera. See documentation for more information. + schema: + type: list + required: true + default: [] + items: + - variable: input_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + description: The path to the stream + schema: + type: string + required: true + default: "" + - variable: roles + label: Roles + schema: + type: list + required: true + default: [] + items: + - variable: role_entry + label: "" + schema: + type: string + required: true + default: "" + enum: + - value: detect + description: Detect + - value: rtmp + description: RTMP + - value: record + description: Record + - variable: global_args + label: Global Args + description: Stream specific global args + schema: + type: string + default: "" + - variable: hwaccel_args + label: HW Acceleration Args + description: Stream specific hwaccel args + schema: + type: string + default: "" + - variable: input_args + label: Input Args + description: Stream specific input args + schema: + type: string + default: "" + - variable: output_args + label: Output Args + schema: + additional_attrs: true + type: dict + attrs: + - variable: detect + label: Detect + schema: + type: string + default: "" + - variable: record + label: Record + schema: + type: string + default: "" + - variable: rtmp + label: RTMP + schema: + type: string + default: "" + - variable: global_args + label: Global Args + description: Camera specific global args + schema: + type: string + default: "" + - variable: hwaccel_args + label: HW Acceleration Args + description: Camera specific hwaccel args + schema: + type: string + default: "" + - variable: input_args + label: Input Args + description: Camera specific input args + schema: + type: string + default: "" + - variable: output_args + label: Output Args + schema: + additional_attrs: true + type: dict + attrs: + - variable: detect + label: Detect + schema: + type: string + default: "" + - variable: record + label: Record + schema: + type: string + default: "" + - variable: rtmp + label: RTMP + schema: + type: string + default: "" + - variable: best_image_timeout + label: Best Image Timeout + description: Timeout for highest scoring image before allowing it to be replaced by a newer image. + schema: + type: int + "null": true + - variable: zones + label: Zones + description: Zones for this camera + schema: + type: list + default: [] + items: + - variable: zone_entry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Zone Name + schema: + type: string + required: true + default: "" + - variable: coordinates + label: Coordinates + description: List of x,y coordinates to define the polygon of the zone. + schema: + type: string + required: true + default: "" + - variable: objects + label: Objects + schema: + type: list + default: [] + items: + - variable: object_entry + label: "" + description: For example person + schema: + type: string + required: true + default: "" + - variable: filters + label: Filters + description: Zone level object filters + schema: + type: list + default: [] + items: + - variable: filter_entry + label: Filter Entry + description: For example person + schema: + additional_attrs: true + type: dict + attrs: + - variable: object + label: Object + description: For example person + schema: + type: string + required: true + default: "" + - variable: min_area + label: Min Area + description: Minimum width*height of the bounding box for the detected object + schema: + type: int + "null": true + - variable: max_area + label: Max Area + description: Maximum width*height of the bounding box for the detected object + schema: + type: int + "null": true + - variable: threshold + label: Threshold + description: Minimum decimal percentage for tracked object's computed score to be considered a true positive + schema: + type: string + default: "" + valid_chars: '^[0-9]+(\.[0-9]*)?$' + - variable: mqtt + label: MQTT + description: MQTT Configuration for jpg snapshots published for this camera + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enabled + description: | + Enable publishing snapshot via mqtt for camera + NOTE: Only applies to publishing image data to MQTT via 'frigate///snapshot'. + All other messages will still be published. + schema: + type: boolean + default: true + - variable: timestamp + label: Timestamp + description: Print a timestamp on the snapshots + schema: + type: boolean + default: true + - variable: bounding_box + label: Bounding Box + description: Draw bounding box on the snapshots + schema: + type: boolean + default: true + - variable: crop + label: Crop + description: Crop the snapshot + schema: + type: boolean + default: true + - variable: height + label: Height + description: Height to resize the snapshot to + schema: + type: int + "null": true + - variable: quality + label: Quality + description: JPEG encode quality + schema: + type: int + "null": true + - variable: required_zones + label: Required Zones + description: Restrict mqtt messages to objects that entered any of the listed zones + schema: + type: list + default: [] + items: + - variable: required_zone + label: Required Zone + schema: + type: string + required: true + default: "" + - variable: ui + label: UI + description: Configuration for how camera is handled in the GUI. + schema: + additional_attrs: true + type: dict + attrs: + - variable: render_config + label: Render Configuration + description: Enable it to add the configuration in the config file + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: order + label: order + description: Adjust sort order of cameras in the UI. Larger numbers come later By default the cameras are sorted alphabetically. + schema: + "null": true + type: int + - variable: dashboard + label: Dashboard + description: Whether or not to show the camera in the Frigate UI + schema: + type: boolean + default: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10500 + editable: true + required: true + - variable: rtmp + label: RTMP Service + description: The service on which nodes connect to. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: rtmp + label: RTMP Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 1935 + editable: true + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: media + label: App Media + description: Stores the Application Media + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: db + label: App DB + description: Stores the Application DB + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/frigate/6.0.0/templates/_configmap.tpl b/incubator/frigate/6.0.1/templates/_configmap.tpl similarity index 100% rename from incubator/frigate/6.0.0/templates/_configmap.tpl rename to incubator/frigate/6.0.1/templates/_configmap.tpl diff --git a/incubator/frigate/6.0.0/templates/common.yaml b/incubator/frigate/6.0.1/templates/common.yaml similarity index 100% rename from incubator/frigate/6.0.0/templates/common.yaml rename to incubator/frigate/6.0.1/templates/common.yaml diff --git a/incubator/funkwhale/2.1.7/values.yaml b/incubator/frigate/6.0.1/values.yaml similarity index 100% rename from incubator/funkwhale/2.1.7/values.yaml rename to incubator/frigate/6.0.1/values.yaml diff --git a/incubator/funkwhale/2.1.7/CHANGELOG.md b/incubator/funkwhale/2.1.7/CHANGELOG.md deleted file mode 100644 index 88039e0f5da..00000000000 --- a/incubator/funkwhale/2.1.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [funkwhale-2.1.7](https://github.com/truecharts/charts/compare/funkwhale-2.1.6...funkwhale-2.1.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [funkwhale-2.1.6](https://github.com/truecharts/charts/compare/funkwhale-2.1.5...funkwhale-2.1.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [funkwhale-2.1.5](https://github.com/truecharts/charts/compare/funkwhale-2.1.4...funkwhale-2.1.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [funkwhale-2.1.4](https://github.com/truecharts/charts/compare/funkwhale-2.1.3...funkwhale-2.1.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [funkwhale-2.1.3](https://github.com/truecharts/charts/compare/funkwhale-2.1.2...funkwhale-2.1.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/funkwhale to v1.2.9 - - - - -## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/funkwhale to v1.2.9 - - - - -## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/funkwhale to v1.2.9 - - - - -## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/funkwhale to v1.2.9 - - - - -## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/funkwhale to v1.2.9 - - - - -## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) - -### Chore diff --git a/incubator/funkwhale/2.1.7/Chart.yaml b/incubator/funkwhale/2.1.7/Chart.yaml deleted file mode 100644 index 96e6ea6eb45..00000000000 --- a/incubator/funkwhale/2.1.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Music - - MediaServer-Music -apiVersion: v2 -appVersion: "1.2.9" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Funkwhale is designed to make it easy to listen to music you like, and to discover new artists. -home: https://truecharts.org/charts/incubator/funkwhale -icon: https://truecharts.org/img/hotlink-ok/chart-icons/funkwhale.png -keywords: - - funkwhale - - MediaApp-Music - - MediaServer-Music -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: funkwhale -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/funkwhale - - https://funkwhale.audio/ - - https://hub.docker.com/r/funkwhale/funkwhale -type: application -version: 2.1.7 diff --git a/incubator/funkwhale/2.1.7/app-changelog.md b/incubator/funkwhale/2.1.7/app-changelog.md deleted file mode 100644 index f0c3ec2cf2a..00000000000 --- a/incubator/funkwhale/2.1.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [funkwhale-2.1.7](https://github.com/truecharts/charts/compare/funkwhale-2.1.6...funkwhale-2.1.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/funkwhale/2.1.7/app-readme.md b/incubator/funkwhale/2.1.7/app-readme.md deleted file mode 100644 index b378a2efb3d..00000000000 --- a/incubator/funkwhale/2.1.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Funkwhale is designed to make it easy to listen to music you like, and to discover new artists. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/funkwhale](https://truecharts.org/charts/incubator/funkwhale) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/funkwhale/2.1.7/questions.yaml b/incubator/funkwhale/2.1.7/questions.yaml deleted file mode 100644 index a9a73697a25..00000000000 --- a/incubator/funkwhale/2.1.7/questions.yaml +++ /dev/null @@ -1,1918 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: FUNKWHALE_HOSTNAME - label: "FUNKWHALE_HOSTNAME" - description: "Container Variable FUNKWHALEHOSTNAME" - schema: - type: string - default: "yourdomain.funkwhale" - - variable: NESTED_PROXY - label: "NESTED_PROXY" - description: "Container Variable NESTEDPROXY Set to 1 when container is behind a reverse proxy." - schema: - type: string - default: "0" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3030 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: musicpath - label: "musicpath Storage" - description: "Container Path music" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: data - label: "data Storage" - description: "Container Path data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/funkwhale/2.1.8/CHANGELOG.md b/incubator/funkwhale/2.1.8/CHANGELOG.md new file mode 100644 index 00000000000..02ca312f92d --- /dev/null +++ b/incubator/funkwhale/2.1.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [funkwhale-2.1.8](https://github.com/truecharts/charts/compare/funkwhale-2.1.7...funkwhale-2.1.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [funkwhale-2.1.7](https://github.com/truecharts/charts/compare/funkwhale-2.1.6...funkwhale-2.1.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [funkwhale-2.1.6](https://github.com/truecharts/charts/compare/funkwhale-2.1.5...funkwhale-2.1.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [funkwhale-2.1.5](https://github.com/truecharts/charts/compare/funkwhale-2.1.4...funkwhale-2.1.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [funkwhale-2.1.4](https://github.com/truecharts/charts/compare/funkwhale-2.1.3...funkwhale-2.1.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [funkwhale-2.1.3](https://github.com/truecharts/charts/compare/funkwhale-2.1.2...funkwhale-2.1.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/funkwhale to v1.2.9 + + + + +## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/funkwhale to v1.2.9 + + + + +## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/funkwhale to v1.2.9 + + + + +## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/funkwhale to v1.2.9 + + + + +## [funkwhale-2.1.2](https://github.com/truecharts/charts/compare/funkwhale-2.1.0...funkwhale-2.1.2) (2022-11-30) + +### Chore diff --git a/incubator/funkwhale/2.1.8/Chart.yaml b/incubator/funkwhale/2.1.8/Chart.yaml new file mode 100644 index 00000000000..bb94705eb97 --- /dev/null +++ b/incubator/funkwhale/2.1.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Music + - MediaServer-Music +apiVersion: v2 +appVersion: "1.2.9" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Funkwhale is designed to make it easy to listen to music you like, and to discover new artists. +home: https://truecharts.org/charts/incubator/funkwhale +icon: https://truecharts.org/img/hotlink-ok/chart-icons/funkwhale.png +keywords: + - funkwhale + - MediaApp-Music + - MediaServer-Music +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: funkwhale +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/funkwhale + - https://hub.docker.com/funkwhale/funkwhale + - https://funkwhale.audio/ +type: application +version: 2.1.8 diff --git a/incubator/funkwhale/2.1.7/README.md b/incubator/funkwhale/2.1.8/README.md similarity index 100% rename from incubator/funkwhale/2.1.7/README.md rename to incubator/funkwhale/2.1.8/README.md diff --git a/incubator/funkwhale/2.1.8/app-changelog.md b/incubator/funkwhale/2.1.8/app-changelog.md new file mode 100644 index 00000000000..e81662f459b --- /dev/null +++ b/incubator/funkwhale/2.1.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [funkwhale-2.1.8](https://github.com/truecharts/charts/compare/funkwhale-2.1.7...funkwhale-2.1.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/funkwhale/2.1.8/app-readme.md b/incubator/funkwhale/2.1.8/app-readme.md new file mode 100644 index 00000000000..9ce4ef4b95d --- /dev/null +++ b/incubator/funkwhale/2.1.8/app-readme.md @@ -0,0 +1,8 @@ +Funkwhale is designed to make it easy to listen to music you like, and to discover new artists. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/funkwhale](https://truecharts.org/charts/incubator/funkwhale) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/glauth/2.0.7/charts/common-11.1.2.tgz b/incubator/funkwhale/2.1.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/glauth/2.0.7/charts/common-11.1.2.tgz rename to incubator/funkwhale/2.1.8/charts/common-11.1.2.tgz diff --git a/incubator/funkwhale/2.1.7/ix_values.yaml b/incubator/funkwhale/2.1.8/ix_values.yaml similarity index 100% rename from incubator/funkwhale/2.1.7/ix_values.yaml rename to incubator/funkwhale/2.1.8/ix_values.yaml diff --git a/incubator/funkwhale/2.1.8/questions.yaml b/incubator/funkwhale/2.1.8/questions.yaml new file mode 100644 index 00000000000..44ae0e1e351 --- /dev/null +++ b/incubator/funkwhale/2.1.8/questions.yaml @@ -0,0 +1,1959 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: FUNKWHALE_HOSTNAME + label: "FUNKWHALE_HOSTNAME" + description: "Container Variable FUNKWHALEHOSTNAME" + schema: + type: string + default: "yourdomain.funkwhale" + - variable: NESTED_PROXY + label: "NESTED_PROXY" + description: "Container Variable NESTEDPROXY Set to 1 when container is behind a reverse proxy." + schema: + type: string + default: "0" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3030 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: musicpath + label: "musicpath Storage" + description: "Container Path music" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: "data Storage" + description: "Container Path data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/funkwhale/2.1.7/templates/_secret.tpl b/incubator/funkwhale/2.1.8/templates/_secret.tpl similarity index 100% rename from incubator/funkwhale/2.1.7/templates/_secret.tpl rename to incubator/funkwhale/2.1.8/templates/_secret.tpl diff --git a/incubator/funkwhale/2.1.7/templates/common.yaml b/incubator/funkwhale/2.1.8/templates/common.yaml similarity index 100% rename from incubator/funkwhale/2.1.7/templates/common.yaml rename to incubator/funkwhale/2.1.8/templates/common.yaml diff --git a/incubator/glauth/2.0.7/values.yaml b/incubator/funkwhale/2.1.8/values.yaml similarity index 100% rename from incubator/glauth/2.0.7/values.yaml rename to incubator/funkwhale/2.1.8/values.yaml diff --git a/incubator/glauth/2.0.7/CHANGELOG.md b/incubator/glauth/2.0.7/CHANGELOG.md deleted file mode 100644 index d58a867adb6..00000000000 --- a/incubator/glauth/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [glauth-2.0.7](https://github.com/truecharts/charts/compare/glauth-2.0.6...glauth-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [glauth-2.0.6](https://github.com/truecharts/charts/compare/glauth-2.0.5...glauth-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [glauth-2.0.5](https://github.com/truecharts/charts/compare/glauth-2.0.4...glauth-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [glauth-2.0.4](https://github.com/truecharts/charts/compare/glauth-2.0.3...glauth-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [glauth-2.0.3](https://github.com/truecharts/charts/compare/glauth-2.0.2...glauth-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - - - -## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) - - diff --git a/incubator/glauth/2.0.7/Chart.yaml b/incubator/glauth/2.0.7/Chart.yaml deleted file mode 100644 index 83adb891725..00000000000 --- a/incubator/glauth/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Security -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: GLAuth is a secure, easy-to-use, LDAP server with configurable backends. -home: https://truecharts.org/charts/incubator/glauth -icon: https://truecharts.org/img/hotlink-ok/chart-icons/glauth.png -keywords: - - glauth - - Security -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: glauth -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/glauth - - https://glauth.github.io - - https://hub.docker.com/repository/docker/glauth/glauth -type: application -version: 2.0.7 diff --git a/incubator/glauth/2.0.7/app-changelog.md b/incubator/glauth/2.0.7/app-changelog.md deleted file mode 100644 index 88605ba3755..00000000000 --- a/incubator/glauth/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [glauth-2.0.7](https://github.com/truecharts/charts/compare/glauth-2.0.6...glauth-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/glauth/2.0.7/app-readme.md b/incubator/glauth/2.0.7/app-readme.md deleted file mode 100644 index 54a2e222f0e..00000000000 --- a/incubator/glauth/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -GLAuth is a secure, easy-to-use, LDAP server with configurable backends. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/glauth](https://truecharts.org/charts/incubator/glauth) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/glauth/2.0.7/questions.yaml b/incubator/glauth/2.0.7/questions.yaml deleted file mode 100644 index 1bb01068c1a..00000000000 --- a/incubator/glauth/2.0.7/questions.yaml +++ /dev/null @@ -1,1933 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5555 - required: true - - variable: ldapport - label: 'ldapport service' - description: "Container LDAP Port" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ldapport - label: "ldapport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 389 - required: true - - variable: ldapsport - label: 'ldapsport service' - description: "Container LDAPS Port" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ldapsport - label: "ldapsport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 636 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Configuration and Local Database (if configured) Path" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/glauth/2.0.8/CHANGELOG.md b/incubator/glauth/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..91719609cc8 --- /dev/null +++ b/incubator/glauth/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [glauth-2.0.8](https://github.com/truecharts/charts/compare/glauth-2.0.7...glauth-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [glauth-2.0.7](https://github.com/truecharts/charts/compare/glauth-2.0.6...glauth-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [glauth-2.0.6](https://github.com/truecharts/charts/compare/glauth-2.0.5...glauth-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [glauth-2.0.5](https://github.com/truecharts/charts/compare/glauth-2.0.4...glauth-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [glauth-2.0.4](https://github.com/truecharts/charts/compare/glauth-2.0.3...glauth-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [glauth-2.0.3](https://github.com/truecharts/charts/compare/glauth-2.0.2...glauth-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) + + + + +## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) + + + + +## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) + + + + +## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) + + + + +## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) + + + + +## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) + + + + +## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) + + + + +## [glauth-2.0.2](https://github.com/truecharts/charts/compare/glauth-2.0.1...glauth-2.0.2) (2022-11-30) + + + diff --git a/incubator/glauth/2.0.8/Chart.yaml b/incubator/glauth/2.0.8/Chart.yaml new file mode 100644 index 00000000000..9902dd20f6e --- /dev/null +++ b/incubator/glauth/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Security +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: GLAuth is a secure, easy-to-use, LDAP server with configurable backends. +home: https://truecharts.org/charts/incubator/glauth +icon: https://truecharts.org/img/hotlink-ok/chart-icons/glauth.png +keywords: + - glauth + - Security +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: glauth +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/glauth + - https://hub.docker.com/glauth/glauth + - https://glauth.github.io +type: application +version: 2.0.8 diff --git a/incubator/glauth/2.0.7/README.md b/incubator/glauth/2.0.8/README.md similarity index 100% rename from incubator/glauth/2.0.7/README.md rename to incubator/glauth/2.0.8/README.md diff --git a/incubator/glauth/2.0.8/app-changelog.md b/incubator/glauth/2.0.8/app-changelog.md new file mode 100644 index 00000000000..9a32613d2de --- /dev/null +++ b/incubator/glauth/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [glauth-2.0.8](https://github.com/truecharts/charts/compare/glauth-2.0.7...glauth-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/glauth/2.0.8/app-readme.md b/incubator/glauth/2.0.8/app-readme.md new file mode 100644 index 00000000000..26d5ccfe59e --- /dev/null +++ b/incubator/glauth/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +GLAuth is a secure, easy-to-use, LDAP server with configurable backends. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/glauth](https://truecharts.org/charts/incubator/glauth) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/gridcoinwalletgui/2.0.8/charts/common-11.1.2.tgz b/incubator/glauth/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/gridcoinwalletgui/2.0.8/charts/common-11.1.2.tgz rename to incubator/glauth/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/glauth/2.0.7/ix_values.yaml b/incubator/glauth/2.0.8/ix_values.yaml similarity index 100% rename from incubator/glauth/2.0.7/ix_values.yaml rename to incubator/glauth/2.0.8/ix_values.yaml diff --git a/incubator/glauth/2.0.8/questions.yaml b/incubator/glauth/2.0.8/questions.yaml new file mode 100644 index 00000000000..baf11f3e985 --- /dev/null +++ b/incubator/glauth/2.0.8/questions.yaml @@ -0,0 +1,1974 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5555 + required: true + - variable: ldapport + label: 'ldapport service' + description: "Container LDAP Port" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ldapport + label: "ldapport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 389 + required: true + - variable: ldapsport + label: 'ldapsport service' + description: "Container LDAPS Port" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ldapsport + label: "ldapsport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 636 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "Configuration and Local Database (if configured) Path" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/glauth/2.0.7/templates/common.yaml b/incubator/glauth/2.0.8/templates/common.yaml similarity index 100% rename from incubator/glauth/2.0.7/templates/common.yaml rename to incubator/glauth/2.0.8/templates/common.yaml diff --git a/incubator/gridcoinwalletgui/2.0.8/values.yaml b/incubator/glauth/2.0.8/values.yaml similarity index 100% rename from incubator/gridcoinwalletgui/2.0.8/values.yaml rename to incubator/glauth/2.0.8/values.yaml diff --git a/incubator/gridcoinwalletgui/2.0.8/CHANGELOG.md b/incubator/gridcoinwalletgui/2.0.8/CHANGELOG.md deleted file mode 100644 index 783246baa43..00000000000 --- a/incubator/gridcoinwalletgui/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [gridcoinwalletgui-2.0.8](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.7...gridcoinwalletgui-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [gridcoinwalletgui-2.0.7](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.6...gridcoinwalletgui-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [gridcoinwalletgui-2.0.6](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.5...gridcoinwalletgui-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [gridcoinwalletgui-2.0.5](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.4...gridcoinwalletgui-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [gridcoinwalletgui-2.0.4](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.3...gridcoinwalletgui-2.0.4) (2022-12-17) - -### Chore - -- update container image tccr.io/truecharts/gridcoinwalletgui to latest - - - - -## [gridcoinwalletgui-2.0.3](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.2...gridcoinwalletgui-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) - - - - -## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) - - - - -## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) - - - - -## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) - - - - -## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) - - - - -## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) - - - - -## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) - - - - -## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) - - - diff --git a/incubator/gridcoinwalletgui/2.0.8/Chart.yaml b/incubator/gridcoinwalletgui/2.0.8/Chart.yaml deleted file mode 100644 index 74a0268250a..00000000000 --- a/incubator/gridcoinwalletgui/2.0.8/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Crypto -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Running Boinc? Get some Gridcoins from your Boinc work!" -home: https://truecharts.org/charts/incubator/gridcoinwalletgui -icon: https://truecharts.org/img/hotlink-ok/chart-icons/gridcoinwalletgui.png -keywords: - - gridcoinwalletgui - - Crypto -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: gridcoinwalletgui -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/gridcoinwalletgui - - https://gridcoin.us/ - - https://hub.docker.com/repository/docker/sublivion/gridcoinwalletgui -type: application -version: 2.0.8 diff --git a/incubator/gridcoinwalletgui/2.0.8/app-changelog.md b/incubator/gridcoinwalletgui/2.0.8/app-changelog.md deleted file mode 100644 index 6100561586b..00000000000 --- a/incubator/gridcoinwalletgui/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [gridcoinwalletgui-2.0.8](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.7...gridcoinwalletgui-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/gridcoinwalletgui/2.0.8/app-readme.md b/incubator/gridcoinwalletgui/2.0.8/app-readme.md deleted file mode 100644 index cd99eecfd5a..00000000000 --- a/incubator/gridcoinwalletgui/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Running Boinc? Get some Gridcoins from your Boinc work! - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/gridcoinwalletgui](https://truecharts.org/charts/incubator/gridcoinwalletgui) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/gridcoinwalletgui/2.0.8/questions.yaml b/incubator/gridcoinwalletgui/2.0.8/questions.yaml deleted file mode 100644 index 816e084af7f..00000000000 --- a/incubator/gridcoinwalletgui/2.0.8/questions.yaml +++ /dev/null @@ -1,1970 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PW - label: "VNC_PW" - description: "default vncpassword" - schema: - type: string - default: "vncpassword" - - variable: VNC_RESOLUTION - label: "VNC_RESOLUTION" - description: "default 1920x1080" - schema: - type: string - default: "1920x1080" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 6901 - required: true - - variable: vncport - label: 'vncport service' - description: "default 5901" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vncport - label: "vncport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5901 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: appdataconfigpath - label: "appdataconfigpath Storage" - description: "mntuserappdatagridcoinresearch" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: boincdatadir - label: "boincdatadir Storage" - description: "BOINC data location if solo crunching (not needed if pool crunching) mntuserappdataboinc" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/gridcoinwalletgui/2.0.9/CHANGELOG.md b/incubator/gridcoinwalletgui/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..a62affef40b --- /dev/null +++ b/incubator/gridcoinwalletgui/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [gridcoinwalletgui-2.0.9](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.8...gridcoinwalletgui-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [gridcoinwalletgui-2.0.8](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.7...gridcoinwalletgui-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [gridcoinwalletgui-2.0.7](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.6...gridcoinwalletgui-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [gridcoinwalletgui-2.0.6](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.5...gridcoinwalletgui-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [gridcoinwalletgui-2.0.5](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.4...gridcoinwalletgui-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [gridcoinwalletgui-2.0.4](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.3...gridcoinwalletgui-2.0.4) (2022-12-17) + +### Chore + +- update container image tccr.io/truecharts/gridcoinwalletgui to latest + + + + +## [gridcoinwalletgui-2.0.3](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.2...gridcoinwalletgui-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) + + + + +## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) + + + + +## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) + + + + +## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) + + + + +## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) + + + + +## [gridcoinwalletgui-2.0.2](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.1...gridcoinwalletgui-2.0.2) (2022-11-30) + + + + diff --git a/incubator/gridcoinwalletgui/2.0.9/Chart.yaml b/incubator/gridcoinwalletgui/2.0.9/Chart.yaml new file mode 100644 index 00000000000..b8212fadfcf --- /dev/null +++ b/incubator/gridcoinwalletgui/2.0.9/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Crypto +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Running Boinc? Get some Gridcoins from your Boinc work!" +home: https://truecharts.org/charts/incubator/gridcoinwalletgui +icon: https://truecharts.org/img/hotlink-ok/chart-icons/gridcoinwalletgui.png +keywords: + - gridcoinwalletgui + - Crypto +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: gridcoinwalletgui +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/gridcoinwalletgui + - https://hub.docker.com/sublivion/gridcoinwalletgui + - https://gridcoin.us/ +type: application +version: 2.0.9 diff --git a/incubator/gridcoinwalletgui/2.0.8/README.md b/incubator/gridcoinwalletgui/2.0.9/README.md similarity index 100% rename from incubator/gridcoinwalletgui/2.0.8/README.md rename to incubator/gridcoinwalletgui/2.0.9/README.md diff --git a/incubator/gridcoinwalletgui/2.0.9/app-changelog.md b/incubator/gridcoinwalletgui/2.0.9/app-changelog.md new file mode 100644 index 00000000000..33af08f50d3 --- /dev/null +++ b/incubator/gridcoinwalletgui/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [gridcoinwalletgui-2.0.9](https://github.com/truecharts/charts/compare/gridcoinwalletgui-2.0.8...gridcoinwalletgui-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/gridcoinwalletgui/2.0.9/app-readme.md b/incubator/gridcoinwalletgui/2.0.9/app-readme.md new file mode 100644 index 00000000000..c456cf6c718 --- /dev/null +++ b/incubator/gridcoinwalletgui/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +Running Boinc? Get some Gridcoins from your Boinc work! + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/gridcoinwalletgui](https://truecharts.org/charts/incubator/gridcoinwalletgui) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hastebin/2.0.7/charts/common-11.1.2.tgz b/incubator/gridcoinwalletgui/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/hastebin/2.0.7/charts/common-11.1.2.tgz rename to incubator/gridcoinwalletgui/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/gridcoinwalletgui/2.0.8/ix_values.yaml b/incubator/gridcoinwalletgui/2.0.9/ix_values.yaml similarity index 100% rename from incubator/gridcoinwalletgui/2.0.8/ix_values.yaml rename to incubator/gridcoinwalletgui/2.0.9/ix_values.yaml diff --git a/incubator/gridcoinwalletgui/2.0.9/questions.yaml b/incubator/gridcoinwalletgui/2.0.9/questions.yaml new file mode 100644 index 00000000000..cfee94a2eea --- /dev/null +++ b/incubator/gridcoinwalletgui/2.0.9/questions.yaml @@ -0,0 +1,2011 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PW + label: "VNC_PW" + description: "default vncpassword" + schema: + type: string + default: "vncpassword" + - variable: VNC_RESOLUTION + label: "VNC_RESOLUTION" + description: "default 1920x1080" + schema: + type: string + default: "1920x1080" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6901 + required: true + - variable: vncport + label: 'vncport service' + description: "default 5901" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vncport + label: "vncport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5901 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: appdataconfigpath + label: "appdataconfigpath Storage" + description: "mntuserappdatagridcoinresearch" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: boincdatadir + label: "boincdatadir Storage" + description: "BOINC data location if solo crunching (not needed if pool crunching) mntuserappdataboinc" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/gridcoinwalletgui/2.0.8/templates/common.yaml b/incubator/gridcoinwalletgui/2.0.9/templates/common.yaml similarity index 100% rename from incubator/gridcoinwalletgui/2.0.8/templates/common.yaml rename to incubator/gridcoinwalletgui/2.0.9/templates/common.yaml diff --git a/incubator/hastebin/2.0.7/values.yaml b/incubator/gridcoinwalletgui/2.0.9/values.yaml similarity index 100% rename from incubator/hastebin/2.0.7/values.yaml rename to incubator/gridcoinwalletgui/2.0.9/values.yaml diff --git a/incubator/hastebin/2.0.7/CHANGELOG.md b/incubator/hastebin/2.0.7/CHANGELOG.md deleted file mode 100644 index ed5a276cd7d..00000000000 --- a/incubator/hastebin/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [hastebin-2.0.7](https://github.com/truecharts/charts/compare/hastebin-2.0.6...hastebin-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [hastebin-2.0.6](https://github.com/truecharts/charts/compare/hastebin-2.0.5...hastebin-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [hastebin-2.0.5](https://github.com/truecharts/charts/compare/hastebin-2.0.4...hastebin-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [hastebin-2.0.4](https://github.com/truecharts/charts/compare/hastebin-2.0.3...hastebin-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [hastebin-2.0.3](https://github.com/truecharts/charts/compare/hastebin-2.0.2...hastebin-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - - - -## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) - - diff --git a/incubator/hastebin/2.0.7/Chart.yaml b/incubator/hastebin/2.0.7/Chart.yaml deleted file mode 100644 index c2ebf22e3bc..00000000000 --- a/incubator/hastebin/2.0.7/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity - - Tools-Utilities - - Network-Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Alpine-based Chart for Hastebin, the node.js paste service " -home: https://truecharts.org/charts/incubator/hastebin -icon: https://truecharts.org/img/hotlink-ok/chart-icons/hastebin.png -keywords: - - hastebin - - Cloud - - Productivity - - Tools-Utilities - - Network-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: hastebin -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/hastebin - - https://github.com/nzzane/haste-server - - https://hub.docker.com/r/flippinturt/hastebin -type: application -version: 2.0.7 diff --git a/incubator/hastebin/2.0.7/app-changelog.md b/incubator/hastebin/2.0.7/app-changelog.md deleted file mode 100644 index a7e66830b0f..00000000000 --- a/incubator/hastebin/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [hastebin-2.0.7](https://github.com/truecharts/charts/compare/hastebin-2.0.6...hastebin-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/hastebin/2.0.7/app-readme.md b/incubator/hastebin/2.0.7/app-readme.md deleted file mode 100644 index 3c481a662be..00000000000 --- a/incubator/hastebin/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Alpine-based Chart for Hastebin, the node.js paste service - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/hastebin](https://truecharts.org/charts/incubator/hastebin) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hastebin/2.0.7/questions.yaml b/incubator/hastebin/2.0.7/questions.yaml deleted file mode 100644 index 95838b9b5e7..00000000000 --- a/incubator/hastebin/2.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 7777 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/hastebin/2.0.8/CHANGELOG.md b/incubator/hastebin/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..d82cbff8f9b --- /dev/null +++ b/incubator/hastebin/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [hastebin-2.0.8](https://github.com/truecharts/charts/compare/hastebin-2.0.7...hastebin-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [hastebin-2.0.7](https://github.com/truecharts/charts/compare/hastebin-2.0.6...hastebin-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [hastebin-2.0.6](https://github.com/truecharts/charts/compare/hastebin-2.0.5...hastebin-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [hastebin-2.0.5](https://github.com/truecharts/charts/compare/hastebin-2.0.4...hastebin-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [hastebin-2.0.4](https://github.com/truecharts/charts/compare/hastebin-2.0.3...hastebin-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [hastebin-2.0.3](https://github.com/truecharts/charts/compare/hastebin-2.0.2...hastebin-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) + + + + +## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) + + + + +## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) + + + + +## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) + + + + +## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) + + + + +## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) + + + + +## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) + + + + +## [hastebin-2.0.2](https://github.com/truecharts/charts/compare/hastebin-2.0.1...hastebin-2.0.2) (2022-11-30) + + + diff --git a/incubator/hastebin/2.0.8/Chart.yaml b/incubator/hastebin/2.0.8/Chart.yaml new file mode 100644 index 00000000000..71f7cd2e05c --- /dev/null +++ b/incubator/hastebin/2.0.8/Chart.yaml @@ -0,0 +1,35 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity + - Tools-Utilities + - Network-Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Alpine-based Chart for Hastebin, the node.js paste service " +home: https://truecharts.org/charts/incubator/hastebin +icon: https://truecharts.org/img/hotlink-ok/chart-icons/hastebin.png +keywords: + - hastebin + - Cloud + - Productivity + - Tools-Utilities + - Network-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: hastebin +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/hastebin + - https://hub.docker.com/flippinturt/hastebin + - https://github.com/nzzane/haste-server +type: application +version: 2.0.8 diff --git a/incubator/hastebin/2.0.7/README.md b/incubator/hastebin/2.0.8/README.md similarity index 100% rename from incubator/hastebin/2.0.7/README.md rename to incubator/hastebin/2.0.8/README.md diff --git a/incubator/hastebin/2.0.8/app-changelog.md b/incubator/hastebin/2.0.8/app-changelog.md new file mode 100644 index 00000000000..41346d4cc36 --- /dev/null +++ b/incubator/hastebin/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [hastebin-2.0.8](https://github.com/truecharts/charts/compare/hastebin-2.0.7...hastebin-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/hastebin/2.0.8/app-readme.md b/incubator/hastebin/2.0.8/app-readme.md new file mode 100644 index 00000000000..62cc25e7a54 --- /dev/null +++ b/incubator/hastebin/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Alpine-based Chart for Hastebin, the node.js paste service + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/hastebin](https://truecharts.org/charts/incubator/hastebin) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hoobs/2.0.7/charts/common-11.1.2.tgz b/incubator/hastebin/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/hoobs/2.0.7/charts/common-11.1.2.tgz rename to incubator/hastebin/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/hastebin/2.0.7/ix_values.yaml b/incubator/hastebin/2.0.8/ix_values.yaml similarity index 100% rename from incubator/hastebin/2.0.7/ix_values.yaml rename to incubator/hastebin/2.0.8/ix_values.yaml diff --git a/incubator/hastebin/2.0.8/questions.yaml b/incubator/hastebin/2.0.8/questions.yaml new file mode 100644 index 00000000000..01c8146abc7 --- /dev/null +++ b/incubator/hastebin/2.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 7777 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/hastebin/2.0.7/templates/common.yaml b/incubator/hastebin/2.0.8/templates/common.yaml similarity index 100% rename from incubator/hastebin/2.0.7/templates/common.yaml rename to incubator/hastebin/2.0.8/templates/common.yaml diff --git a/incubator/hoobs/2.0.7/values.yaml b/incubator/hastebin/2.0.8/values.yaml similarity index 100% rename from incubator/hoobs/2.0.7/values.yaml rename to incubator/hastebin/2.0.8/values.yaml diff --git a/incubator/hoobs/2.0.7/CHANGELOG.md b/incubator/hoobs/2.0.7/CHANGELOG.md deleted file mode 100644 index ec24bee4409..00000000000 --- a/incubator/hoobs/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [hoobs-2.0.7](https://github.com/truecharts/charts/compare/hoobs-2.0.6...hoobs-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [hoobs-2.0.6](https://github.com/truecharts/charts/compare/hoobs-2.0.5...hoobs-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [hoobs-2.0.5](https://github.com/truecharts/charts/compare/hoobs-2.0.4...hoobs-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [hoobs-2.0.4](https://github.com/truecharts/charts/compare/hoobs-2.0.3...hoobs-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [hoobs-2.0.3](https://github.com/truecharts/charts/compare/hoobs-2.0.2...hoobs-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - - - -## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) - - diff --git a/incubator/hoobs/2.0.7/Chart.yaml b/incubator/hoobs/2.0.7/Chart.yaml deleted file mode 100644 index 8af9fa05509..00000000000 --- a/incubator/hoobs/2.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - HomeAutomation - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "HOOBS is a Homebridge stack with a interface that simplifies configuration and installing plugins. This adds a process wrapper for Homebridge. " -home: https://truecharts.org/charts/incubator/hoobs -icon: https://truecharts.org/img/hotlink-ok/chart-icons/hoobs.png -keywords: - - hoobs - - HomeAutomation - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: hoobs -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/hoobs - - https://hub.docker.com/r/hoobs/hoobs -type: application -version: 2.0.7 diff --git a/incubator/hoobs/2.0.7/app-changelog.md b/incubator/hoobs/2.0.7/app-changelog.md deleted file mode 100644 index 13297dd692b..00000000000 --- a/incubator/hoobs/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [hoobs-2.0.7](https://github.com/truecharts/charts/compare/hoobs-2.0.6...hoobs-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/hoobs/2.0.7/app-readme.md b/incubator/hoobs/2.0.7/app-readme.md deleted file mode 100644 index 35e1ca92640..00000000000 --- a/incubator/hoobs/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -HOOBS is a Homebridge stack with a interface that simplifies configuration and installing plugins. This adds a process wrapper for Homebridge. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/hoobs](https://truecharts.org/charts/incubator/hoobs) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/hoobs/2.0.7/questions.yaml b/incubator/hoobs/2.0.7/questions.yaml deleted file mode 100644 index 6553f15bb33..00000000000 --- a/incubator/hoobs/2.0.7/questions.yaml +++ /dev/null @@ -1,1879 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8082 - required: true - - variable: homebridgeport - label: 'homebridgeport service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: homebridgeport - label: "homebridgeport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 51826 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: applicationpath - label: "applicationpath Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/hoobs/2.0.8/CHANGELOG.md b/incubator/hoobs/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..be545a31a2a --- /dev/null +++ b/incubator/hoobs/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [hoobs-2.0.8](https://github.com/truecharts/charts/compare/hoobs-2.0.7...hoobs-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [hoobs-2.0.7](https://github.com/truecharts/charts/compare/hoobs-2.0.6...hoobs-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [hoobs-2.0.6](https://github.com/truecharts/charts/compare/hoobs-2.0.5...hoobs-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [hoobs-2.0.5](https://github.com/truecharts/charts/compare/hoobs-2.0.4...hoobs-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [hoobs-2.0.4](https://github.com/truecharts/charts/compare/hoobs-2.0.3...hoobs-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [hoobs-2.0.3](https://github.com/truecharts/charts/compare/hoobs-2.0.2...hoobs-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) + + + + +## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) + + + + +## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) + + + + +## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) + + + + +## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) + + + + +## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) + + + + +## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) + + + + +## [hoobs-2.0.2](https://github.com/truecharts/charts/compare/hoobs-2.0.1...hoobs-2.0.2) (2022-11-30) + + + diff --git a/incubator/hoobs/2.0.8/Chart.yaml b/incubator/hoobs/2.0.8/Chart.yaml new file mode 100644 index 00000000000..c61b1687438 --- /dev/null +++ b/incubator/hoobs/2.0.8/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - HomeAutomation + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "HOOBS is a Homebridge stack with a interface that simplifies configuration and installing plugins. This adds a process wrapper for Homebridge. " +home: https://truecharts.org/charts/incubator/hoobs +icon: https://truecharts.org/img/hotlink-ok/chart-icons/hoobs.png +keywords: + - hoobs + - HomeAutomation + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: hoobs +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/hoobs + - https://hub.docker.com/hoobs/hoobs +type: application +version: 2.0.8 diff --git a/incubator/hoobs/2.0.7/README.md b/incubator/hoobs/2.0.8/README.md similarity index 100% rename from incubator/hoobs/2.0.7/README.md rename to incubator/hoobs/2.0.8/README.md diff --git a/incubator/hoobs/2.0.8/app-changelog.md b/incubator/hoobs/2.0.8/app-changelog.md new file mode 100644 index 00000000000..14e2ed6598f --- /dev/null +++ b/incubator/hoobs/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [hoobs-2.0.8](https://github.com/truecharts/charts/compare/hoobs-2.0.7...hoobs-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/hoobs/2.0.8/app-readme.md b/incubator/hoobs/2.0.8/app-readme.md new file mode 100644 index 00000000000..e848fd10139 --- /dev/null +++ b/incubator/hoobs/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +HOOBS is a Homebridge stack with a interface that simplifies configuration and installing plugins. This adds a process wrapper for Homebridge. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/hoobs](https://truecharts.org/charts/incubator/hoobs) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/icloudpd/2.0.12/charts/common-11.1.2.tgz b/incubator/hoobs/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/icloudpd/2.0.12/charts/common-11.1.2.tgz rename to incubator/hoobs/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/hoobs/2.0.7/ix_values.yaml b/incubator/hoobs/2.0.8/ix_values.yaml similarity index 100% rename from incubator/hoobs/2.0.7/ix_values.yaml rename to incubator/hoobs/2.0.8/ix_values.yaml diff --git a/incubator/hoobs/2.0.8/questions.yaml b/incubator/hoobs/2.0.8/questions.yaml new file mode 100644 index 00000000000..1b89255b30f --- /dev/null +++ b/incubator/hoobs/2.0.8/questions.yaml @@ -0,0 +1,1920 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8082 + required: true + - variable: homebridgeport + label: 'homebridgeport service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: homebridgeport + label: "homebridgeport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 51826 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: applicationpath + label: "applicationpath Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/hoobs/2.0.7/templates/common.yaml b/incubator/hoobs/2.0.8/templates/common.yaml similarity index 100% rename from incubator/hoobs/2.0.7/templates/common.yaml rename to incubator/hoobs/2.0.8/templates/common.yaml diff --git a/incubator/icloudpd/2.0.12/values.yaml b/incubator/hoobs/2.0.8/values.yaml similarity index 100% rename from incubator/icloudpd/2.0.12/values.yaml rename to incubator/hoobs/2.0.8/values.yaml diff --git a/incubator/icloudpd/2.0.12/CHANGELOG.md b/incubator/icloudpd/2.0.12/CHANGELOG.md deleted file mode 100644 index 51711e94cb2..00000000000 --- a/incubator/icloudpd/2.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [icloudpd-2.0.12](https://github.com/truecharts/charts/compare/icloudpd-2.0.11...icloudpd-2.0.12) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/icloudpd to latest ([#6036](https://github.com/truecharts/charts/issues/6036)) - - - - -## [icloudpd-2.0.11](https://github.com/truecharts/charts/compare/icloudpd-2.0.10...icloudpd-2.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [icloudpd-2.0.10](https://github.com/truecharts/charts/compare/icloudpd-2.0.9...icloudpd-2.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [icloudpd-2.0.9](https://github.com/truecharts/charts/compare/icloudpd-2.0.8...icloudpd-2.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [icloudpd-2.0.8](https://github.com/truecharts/charts/compare/icloudpd-2.0.7...icloudpd-2.0.8) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [icloudpd-2.0.7](https://github.com/truecharts/charts/compare/icloudpd-2.0.6...icloudpd-2.0.7) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [icloudpd-2.0.6](https://github.com/truecharts/charts/compare/icloudpd-2.0.5...icloudpd-2.0.6) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/icloudpd to latest - - - - -## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) - - - - -## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) - - - - -## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) - - - - -## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) - - - - -## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) - - - - -## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) - - - - diff --git a/incubator/icloudpd/2.0.12/Chart.yaml b/incubator/icloudpd/2.0.12/Chart.yaml deleted file mode 100644 index 4b0485d6a5e..00000000000 --- a/incubator/icloudpd/2.0.12/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: iCloudPD, syncs photos from iDevices to a single directory on TrueNAS. -home: https://truecharts.org/charts/incubator/icloudpd -icon: https://truecharts.org/img/hotlink-ok/chart-icons/icloudpd.png -keywords: - - icloudpd - - Backup - - Cloud - - Downloaders -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: icloudpd -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/icloudpd - - https://github.com/Womabre/-TrueNAS-docker-templates - - https://hub.docker.com/r/boredazfcuk/icloudpd/ -type: application -version: 2.0.12 -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Backup - - Cloud - - Downloaders diff --git a/incubator/icloudpd/2.0.12/app-changelog.md b/incubator/icloudpd/2.0.12/app-changelog.md deleted file mode 100644 index d474ed0b909..00000000000 --- a/incubator/icloudpd/2.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [icloudpd-2.0.12](https://github.com/truecharts/charts/compare/icloudpd-2.0.11...icloudpd-2.0.12) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/icloudpd to latest ([#6036](https://github.com/truecharts/charts/issues/6036)) - - \ No newline at end of file diff --git a/incubator/icloudpd/2.0.12/app-readme.md b/incubator/icloudpd/2.0.12/app-readme.md deleted file mode 100644 index cc2aec7b4d4..00000000000 --- a/incubator/icloudpd/2.0.12/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -iCloudPD, syncs photos from iDevices to a single directory on TrueNAS. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/icloudpd](https://truecharts.org/charts/incubator/icloudpd) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/icloudpd/2.0.12/questions.yaml b/incubator/icloudpd/2.0.12/questions.yaml deleted file mode 100644 index 71fe5922c0f..00000000000 --- a/incubator/icloudpd/2.0.12/questions.yaml +++ /dev/null @@ -1,1778 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: icloudpd - group: App Configuration - label: iCloud PD Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: apple_id - label: Apple ID - description: This is the Apple ID that will be used when downloading files. - schema: - type: string - required: true - default: "" - - variable: authentication_type - label: Authentication Type - description: This is the type of authentication that is enabled on your iCloud account - schema: - type: string - default: 2FA - enum: - - value: 2FA - description: 2FA - - value: Web - description: Web - - variable: icloud_china - label: iCloud China - description: Set this to true to use icloud.com.cm instead of icloud.com as the download source. - schema: - type: boolean - default: true - - variable: synchronisation_interval - label: Synchronization Interval - description: This is the number of seconds between synchronizations. - schema: - type: int - default: 86400 - - variable: synchronisation_delay - label: Synchronization Delay - description: This is the number of minutes to delay the first synchronization. - schema: - type: int - default: 86400 - - variable: notification_days - label: Notification Days - description: When your cookie is nearing expiration, this is the number of days in advance it should notify you. - schema: - type: int - default: 7 - - variable: photo_size - label: Photo Size - description: Image size to download - schema: - type: string - default: original - enum: - - value: original - description: original - - value: medium - description: medium - - value: thumb - description: thumb - - variable: live_photo_size - label: Live Photo Size - description: Live photo file size to download. - schema: - type: string - default: original - enum: - - value: original - description: original - - value: medium - description: medium - - value: thumb - description: thumb - - variable: recent_only - label: Recent Only - description: Set this to an integer number to only download this many recently added photos. Set to 0 to download all - schema: - type: int - default: 0 - - variable: until_found - label: Until Found - description: Set this to an integer number to only download the most recently added photos, until n number of previously downloaded consecutive photos are found. Set to 0 to download all - schema: - type: int - default: 0 - - variable: photo_album - label: Photo Album - description: Set this to the name of an album to only download photos from a single album. Set to empty to download all - schema: - type: string - default: "" - - variable: set_exif_datetime - label: Set EXIF Date Time - description: Write the DateTimeOriginal EXIF tag from file creation date. - schema: - type: boolean - default: false - - variable: convert_heic_to_jpeg - label: Convert HEIC to JPEG - description: Set this to True to convert downloaded HEIC files to JPEG, while also retaining the original. - schema: - type: boolean - default: false - - variable: jpeg_quality - label: JPEG Quality - description: If HEIC to JPEG conversion is enabled, this variable will let you set the quality of the converted file by specifying a number from 0 (lowest quality) to 100 (highest quality) - schema: - type: int - default: 90 - - variable: skip_check - label: Skip Check - description: Set this to True skip the check for new files. The check can have issues with large libraries. - schema: - type: boolean - default: false - - variable: skip_live_photos - label: Skip Live Photos - description: If this is set, it will skip downloading live photos. - schema: - type: boolean - default: false - - variable: skip_videos - label: Skip Videos - description: If this is set, it will skip downloading videos. - schema: - type: boolean - default: false - - variable: auto_delete - label: Auto Delete - description: Scans the "Recently Deleted" folder and deletes any files found in there. - schema: - type: boolean - default: false - - variable: download_notifications - label: Download Notifications - description: Specifies whether notifications with a short summary should be sent for file downloads. - schema: - type: boolean - default: false - - variable: delete_notifications - label: Delete Notifications - description: Specifies whether notifications with a short summary should be sent for file deletions. - schema: - type: boolean - default: false - - variable: delete_accompanying - label: Delete Accompanying - description: Tells the script to delete files which accompany the HEIC files that are downloaded. - schema: - type: boolean - default: false - - variable: delete_empty_directories - label: Delete Empty Directories - description: Tells the script to delete any empty directories it finds in the download path. - schema: - type: boolean - default: false - - variable: command_line_options - label: Command Line Options - description: This is for additional command line options you want to pass to the iCloud PD application. - schema: - type: string - default: "" - - variable: notification_type - label: Notification Type - description: This specifies the method that is used to send notifications. You need to manually add the environments variables - for your selected notification type, using the "Extra Environment Variables Section" - More info about the variables needed here. https://github.com/boredazfcuk/docker-icloudpd/blob/master/NOTIFICATIONS.md - schema: - type: string - default: No Type - enum: - - value: "" - description: No type - - value: Prowl - description: Prowl - - value: Pushover - description: Pushover - - value: Telegram - description: Telegram - - value: Webhook - description: Webhook - - value: Openhab - description: Openhab - - value: Dingtalk - description: Dingtalk - - value: Discord - description: Discord - - value: IYUU - description: IYUU - - value: WeCom - description: WeCom - - value: Gotify - description: Gotify - - value: Bark - description: Bark - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: Config Storage - description: Stores Applications Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: data - label: Data Storage - description: Stores iCloud Downloaded Data - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/icloudpd/2.0.13/CHANGELOG.md b/incubator/icloudpd/2.0.13/CHANGELOG.md new file mode 100644 index 00000000000..e016e8267a5 --- /dev/null +++ b/incubator/icloudpd/2.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [icloudpd-2.0.13](https://github.com/truecharts/charts/compare/icloudpd-2.0.12...icloudpd-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [icloudpd-2.0.12](https://github.com/truecharts/charts/compare/icloudpd-2.0.11...icloudpd-2.0.12) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/icloudpd to latest ([#6036](https://github.com/truecharts/charts/issues/6036)) + + + + +## [icloudpd-2.0.11](https://github.com/truecharts/charts/compare/icloudpd-2.0.10...icloudpd-2.0.11) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [icloudpd-2.0.10](https://github.com/truecharts/charts/compare/icloudpd-2.0.9...icloudpd-2.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [icloudpd-2.0.9](https://github.com/truecharts/charts/compare/icloudpd-2.0.8...icloudpd-2.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [icloudpd-2.0.8](https://github.com/truecharts/charts/compare/icloudpd-2.0.7...icloudpd-2.0.8) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [icloudpd-2.0.7](https://github.com/truecharts/charts/compare/icloudpd-2.0.6...icloudpd-2.0.7) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [icloudpd-2.0.6](https://github.com/truecharts/charts/compare/icloudpd-2.0.5...icloudpd-2.0.6) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/icloudpd to latest + + + + +## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) + + + + +## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) + + + + +## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) + + + + +## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) + + + + +## [icloudpd-2.0.5](https://github.com/truecharts/charts/compare/icloudpd-2.0.4...icloudpd-2.0.5) (2022-11-30) diff --git a/incubator/icloudpd/2.0.13/Chart.yaml b/incubator/icloudpd/2.0.13/Chart.yaml new file mode 100644 index 00000000000..42f66cdca2d --- /dev/null +++ b/incubator/icloudpd/2.0.13/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: iCloudPD, syncs photos from iDevices to a single directory on TrueNAS. +home: https://truecharts.org/charts/incubator/icloudpd +icon: https://truecharts.org/img/hotlink-ok/chart-icons/icloudpd.png +keywords: + - icloudpd + - Backup + - Cloud + - Downloaders +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: icloudpd +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/icloudpd + - https://hub.docker.com/boredazfcuk/icloudpd + - https://github.com/Womabre/-TrueNAS-docker-templates +type: application +version: 2.0.13 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Backup + - Cloud + - Downloaders diff --git a/incubator/icloudpd/2.0.12/README.md b/incubator/icloudpd/2.0.13/README.md similarity index 100% rename from incubator/icloudpd/2.0.12/README.md rename to incubator/icloudpd/2.0.13/README.md diff --git a/incubator/icloudpd/2.0.13/app-changelog.md b/incubator/icloudpd/2.0.13/app-changelog.md new file mode 100644 index 00000000000..54361e245e0 --- /dev/null +++ b/incubator/icloudpd/2.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [icloudpd-2.0.13](https://github.com/truecharts/charts/compare/icloudpd-2.0.12...icloudpd-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/icloudpd/2.0.13/app-readme.md b/incubator/icloudpd/2.0.13/app-readme.md new file mode 100644 index 00000000000..6044216e8bd --- /dev/null +++ b/incubator/icloudpd/2.0.13/app-readme.md @@ -0,0 +1,8 @@ +iCloudPD, syncs photos from iDevices to a single directory on TrueNAS. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/icloudpd](https://truecharts.org/charts/incubator/icloudpd) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/imgpush/2.0.7/charts/common-11.1.2.tgz b/incubator/icloudpd/2.0.13/charts/common-11.1.2.tgz similarity index 100% rename from incubator/imgpush/2.0.7/charts/common-11.1.2.tgz rename to incubator/icloudpd/2.0.13/charts/common-11.1.2.tgz diff --git a/incubator/icloudpd/2.0.12/ix_values.yaml b/incubator/icloudpd/2.0.13/ix_values.yaml similarity index 100% rename from incubator/icloudpd/2.0.12/ix_values.yaml rename to incubator/icloudpd/2.0.13/ix_values.yaml diff --git a/incubator/icloudpd/2.0.13/questions.yaml b/incubator/icloudpd/2.0.13/questions.yaml new file mode 100644 index 00000000000..2dce800b580 --- /dev/null +++ b/incubator/icloudpd/2.0.13/questions.yaml @@ -0,0 +1,1778 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: icloudpd + group: App Configuration + label: iCloud PD Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: apple_id + label: Apple ID + description: This is the Apple ID that will be used when downloading files. + schema: + type: string + required: true + default: "" + - variable: authentication_type + label: Authentication Type + description: This is the type of authentication that is enabled on your iCloud account + schema: + type: string + default: 2FA + enum: + - value: 2FA + description: 2FA + - value: Web + description: Web + - variable: icloud_china + label: iCloud China + description: Set this to true to use icloud.com.cm instead of icloud.com as the download source. + schema: + type: boolean + default: true + - variable: synchronisation_interval + label: Synchronization Interval + description: This is the number of seconds between synchronizations. + schema: + type: int + default: 86400 + - variable: synchronisation_delay + label: Synchronization Delay + description: This is the number of minutes to delay the first synchronization. + schema: + type: int + default: 86400 + - variable: notification_days + label: Notification Days + description: When your cookie is nearing expiration, this is the number of days in advance it should notify you. + schema: + type: int + default: 7 + - variable: photo_size + label: Photo Size + description: Image size to download + schema: + type: string + default: original + enum: + - value: original + description: original + - value: medium + description: medium + - value: thumb + description: thumb + - variable: live_photo_size + label: Live Photo Size + description: Live photo file size to download. + schema: + type: string + default: original + enum: + - value: original + description: original + - value: medium + description: medium + - value: thumb + description: thumb + - variable: recent_only + label: Recent Only + description: Set this to an integer number to only download this many recently added photos. Set to 0 to download all + schema: + type: int + default: 0 + - variable: until_found + label: Until Found + description: Set this to an integer number to only download the most recently added photos, until n number of previously downloaded consecutive photos are found. Set to 0 to download all + schema: + type: int + default: 0 + - variable: photo_album + label: Photo Album + description: Set this to the name of an album to only download photos from a single album. Set to empty to download all + schema: + type: string + default: "" + - variable: set_exif_datetime + label: Set EXIF Date Time + description: Write the DateTimeOriginal EXIF tag from file creation date. + schema: + type: boolean + default: false + - variable: convert_heic_to_jpeg + label: Convert HEIC to JPEG + description: Set this to True to convert downloaded HEIC files to JPEG, while also retaining the original. + schema: + type: boolean + default: false + - variable: jpeg_quality + label: JPEG Quality + description: If HEIC to JPEG conversion is enabled, this variable will let you set the quality of the converted file by specifying a number from 0 (lowest quality) to 100 (highest quality) + schema: + type: int + default: 90 + - variable: skip_check + label: Skip Check + description: Set this to True skip the check for new files. The check can have issues with large libraries. + schema: + type: boolean + default: false + - variable: skip_live_photos + label: Skip Live Photos + description: If this is set, it will skip downloading live photos. + schema: + type: boolean + default: false + - variable: skip_videos + label: Skip Videos + description: If this is set, it will skip downloading videos. + schema: + type: boolean + default: false + - variable: auto_delete + label: Auto Delete + description: Scans the "Recently Deleted" folder and deletes any files found in there. + schema: + type: boolean + default: false + - variable: download_notifications + label: Download Notifications + description: Specifies whether notifications with a short summary should be sent for file downloads. + schema: + type: boolean + default: false + - variable: delete_notifications + label: Delete Notifications + description: Specifies whether notifications with a short summary should be sent for file deletions. + schema: + type: boolean + default: false + - variable: delete_accompanying + label: Delete Accompanying + description: Tells the script to delete files which accompany the HEIC files that are downloaded. + schema: + type: boolean + default: false + - variable: delete_empty_directories + label: Delete Empty Directories + description: Tells the script to delete any empty directories it finds in the download path. + schema: + type: boolean + default: false + - variable: command_line_options + label: Command Line Options + description: This is for additional command line options you want to pass to the iCloud PD application. + schema: + type: string + default: "" + - variable: notification_type + label: Notification Type + description: This specifies the method that is used to send notifications. You need to manually add the environments variables + for your selected notification type, using the "Extra Environment Variables Section" + More info about the variables needed here. https://github.com/boredazfcuk/docker-icloudpd/blob/master/NOTIFICATIONS.md + schema: + type: string + default: No Type + enum: + - value: "" + description: No type + - value: Prowl + description: Prowl + - value: Pushover + description: Pushover + - value: Telegram + description: Telegram + - value: Webhook + description: Webhook + - value: Openhab + description: Openhab + - value: Dingtalk + description: Dingtalk + - value: Discord + description: Discord + - value: IYUU + description: IYUU + - value: WeCom + description: WeCom + - value: Gotify + description: Gotify + - value: Bark + description: Bark + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: Config Storage + description: Stores Applications Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: Data Storage + description: Stores iCloud Downloaded Data + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/icloudpd/2.0.12/templates/common.yaml b/incubator/icloudpd/2.0.13/templates/common.yaml similarity index 100% rename from incubator/icloudpd/2.0.12/templates/common.yaml rename to incubator/icloudpd/2.0.13/templates/common.yaml diff --git a/incubator/imgpush/2.0.7/values.yaml b/incubator/icloudpd/2.0.13/values.yaml similarity index 100% rename from incubator/imgpush/2.0.7/values.yaml rename to incubator/icloudpd/2.0.13/values.yaml diff --git a/incubator/imgpush/2.0.7/CHANGELOG.md b/incubator/imgpush/2.0.7/CHANGELOG.md deleted file mode 100644 index 4448860c3e5..00000000000 --- a/incubator/imgpush/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [imgpush-2.0.7](https://github.com/truecharts/charts/compare/imgpush-2.0.6...imgpush-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [imgpush-2.0.6](https://github.com/truecharts/charts/compare/imgpush-2.0.5...imgpush-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [imgpush-2.0.5](https://github.com/truecharts/charts/compare/imgpush-2.0.4...imgpush-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [imgpush-2.0.4](https://github.com/truecharts/charts/compare/imgpush-2.0.3...imgpush-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [imgpush-2.0.3](https://github.com/truecharts/charts/compare/imgpush-2.0.2...imgpush-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - - - -## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) - - diff --git a/incubator/imgpush/2.0.7/Chart.yaml b/incubator/imgpush/2.0.7/Chart.yaml deleted file mode 100644 index 9ed10629d64..00000000000 --- a/incubator/imgpush/2.0.7/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Tools-Utilities - - MediaServer-Photos - - Network-Web - - Network-FTP -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Minimalist Self-hosted Image Service for user submitted images in your app (e.g. avatars)." -home: https://truecharts.org/charts/incubator/imgpush -icon: https://truecharts.org/img/hotlink-ok/chart-icons/imgpush.png -keywords: - - imgpush - - Cloud - - Tools-Utilities - - MediaServer-Photos - - Network-Web - - Network-FTP -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: imgpush -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/imgpush - - https://github.com/hauxir/imgpush - - https://hub.docker.com/r/hauxir/imgpush -type: application -version: 2.0.7 diff --git a/incubator/imgpush/2.0.7/app-changelog.md b/incubator/imgpush/2.0.7/app-changelog.md deleted file mode 100644 index db90a45e0f7..00000000000 --- a/incubator/imgpush/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [imgpush-2.0.7](https://github.com/truecharts/charts/compare/imgpush-2.0.6...imgpush-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/imgpush/2.0.7/app-readme.md b/incubator/imgpush/2.0.7/app-readme.md deleted file mode 100644 index 4255eb4049a..00000000000 --- a/incubator/imgpush/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Minimalist Self-hosted Image Service for user submitted images in your app (e.g. avatars). - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/imgpush](https://truecharts.org/charts/incubator/imgpush) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/imgpush/2.0.7/questions.yaml b/incubator/imgpush/2.0.7/questions.yaml deleted file mode 100644 index 784a2c6af3a..00000000000 --- a/incubator/imgpush/2.0.7/questions.yaml +++ /dev/null @@ -1,1897 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: storageimages - label: "storageimages Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storagecache - label: "storagecache Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/imgpush/2.0.8/CHANGELOG.md b/incubator/imgpush/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..f91fda8fa01 --- /dev/null +++ b/incubator/imgpush/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [imgpush-2.0.8](https://github.com/truecharts/charts/compare/imgpush-2.0.7...imgpush-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [imgpush-2.0.7](https://github.com/truecharts/charts/compare/imgpush-2.0.6...imgpush-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [imgpush-2.0.6](https://github.com/truecharts/charts/compare/imgpush-2.0.5...imgpush-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [imgpush-2.0.5](https://github.com/truecharts/charts/compare/imgpush-2.0.4...imgpush-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [imgpush-2.0.4](https://github.com/truecharts/charts/compare/imgpush-2.0.3...imgpush-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [imgpush-2.0.3](https://github.com/truecharts/charts/compare/imgpush-2.0.2...imgpush-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) + + + + +## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) + + + + +## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) + + + + +## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) + + + + +## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) + + + + +## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) + + + + +## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) + + + + +## [imgpush-2.0.2](https://github.com/truecharts/charts/compare/imgpush-2.0.1...imgpush-2.0.2) (2022-11-30) + + + diff --git a/incubator/imgpush/2.0.8/Chart.yaml b/incubator/imgpush/2.0.8/Chart.yaml new file mode 100644 index 00000000000..6f7dc6ee727 --- /dev/null +++ b/incubator/imgpush/2.0.8/Chart.yaml @@ -0,0 +1,37 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Tools-Utilities + - MediaServer-Photos + - Network-Web + - Network-FTP +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Minimalist Self-hosted Image Service for user submitted images in your app (e.g. avatars)." +home: https://truecharts.org/charts/incubator/imgpush +icon: https://truecharts.org/img/hotlink-ok/chart-icons/imgpush.png +keywords: + - imgpush + - Cloud + - Tools-Utilities + - MediaServer-Photos + - Network-Web + - Network-FTP +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: imgpush +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/imgpush + - https://hub.docker.com/hauxir/imgpush + - https://github.com/hauxir/imgpush +type: application +version: 2.0.8 diff --git a/incubator/imgpush/2.0.7/README.md b/incubator/imgpush/2.0.8/README.md similarity index 100% rename from incubator/imgpush/2.0.7/README.md rename to incubator/imgpush/2.0.8/README.md diff --git a/incubator/imgpush/2.0.8/app-changelog.md b/incubator/imgpush/2.0.8/app-changelog.md new file mode 100644 index 00000000000..c3becc6f1cf --- /dev/null +++ b/incubator/imgpush/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [imgpush-2.0.8](https://github.com/truecharts/charts/compare/imgpush-2.0.7...imgpush-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/imgpush/2.0.8/app-readme.md b/incubator/imgpush/2.0.8/app-readme.md new file mode 100644 index 00000000000..0c5b27fb2fe --- /dev/null +++ b/incubator/imgpush/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Minimalist Self-hosted Image Service for user submitted images in your app (e.g. avatars). + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/imgpush](https://truecharts.org/charts/incubator/imgpush) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/invitarr/2.0.7/charts/common-11.1.2.tgz b/incubator/imgpush/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/invitarr/2.0.7/charts/common-11.1.2.tgz rename to incubator/imgpush/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/imgpush/2.0.7/ix_values.yaml b/incubator/imgpush/2.0.8/ix_values.yaml similarity index 100% rename from incubator/imgpush/2.0.7/ix_values.yaml rename to incubator/imgpush/2.0.8/ix_values.yaml diff --git a/incubator/imgpush/2.0.8/questions.yaml b/incubator/imgpush/2.0.8/questions.yaml new file mode 100644 index 00000000000..88bbe075e6b --- /dev/null +++ b/incubator/imgpush/2.0.8/questions.yaml @@ -0,0 +1,1938 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: storageimages + label: "storageimages Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storagecache + label: "storagecache Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/imgpush/2.0.7/templates/common.yaml b/incubator/imgpush/2.0.8/templates/common.yaml similarity index 100% rename from incubator/imgpush/2.0.7/templates/common.yaml rename to incubator/imgpush/2.0.8/templates/common.yaml diff --git a/incubator/invitarr/2.0.7/values.yaml b/incubator/imgpush/2.0.8/values.yaml similarity index 100% rename from incubator/invitarr/2.0.7/values.yaml rename to incubator/imgpush/2.0.8/values.yaml diff --git a/incubator/invitarr/2.0.7/CHANGELOG.md b/incubator/invitarr/2.0.7/CHANGELOG.md deleted file mode 100644 index 34c46e6eb95..00000000000 --- a/incubator/invitarr/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [invitarr-2.0.7](https://github.com/truecharts/charts/compare/invitarr-2.0.6...invitarr-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [invitarr-2.0.6](https://github.com/truecharts/charts/compare/invitarr-2.0.5...invitarr-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [invitarr-2.0.5](https://github.com/truecharts/charts/compare/invitarr-2.0.4...invitarr-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [invitarr-2.0.4](https://github.com/truecharts/charts/compare/invitarr-2.0.3...invitarr-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [invitarr-2.0.3](https://github.com/truecharts/charts/compare/invitarr-2.0.2...invitarr-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - - - -## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) - - diff --git a/incubator/invitarr/2.0.7/Chart.yaml b/incubator/invitarr/2.0.7/Chart.yaml deleted file mode 100644 index 2b96f27ed6e..00000000000 --- a/incubator/invitarr/2.0.7/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A chatbot that invites discord users to plex. -home: https://truecharts.org/charts/incubator/invitarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/invitarr.png -keywords: - - invitarr - - HomeAutomation - - Tools-Utilities - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: invitarr -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/invitarr - - https://github.com/Sleepingpirates/Invitarr - - https://hub.docker.com/r/piratify/invitarr -type: application -version: 2.0.7 -annotations: - truecharts.org/catagories: | - - HomeAutomation - - Tools-Utilities - - Other - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/invitarr/2.0.7/app-changelog.md b/incubator/invitarr/2.0.7/app-changelog.md deleted file mode 100644 index 8deb8d33436..00000000000 --- a/incubator/invitarr/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [invitarr-2.0.7](https://github.com/truecharts/charts/compare/invitarr-2.0.6...invitarr-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/invitarr/2.0.7/app-readme.md b/incubator/invitarr/2.0.7/app-readme.md deleted file mode 100644 index 348a55f8954..00000000000 --- a/incubator/invitarr/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A chatbot that invites discord users to plex. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/invitarr](https://truecharts.org/charts/incubator/invitarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/invitarr/2.0.7/questions.yaml b/incubator/invitarr/2.0.7/questions.yaml deleted file mode 100644 index 9cc0703c534..00000000000 --- a/incubator/invitarr/2.0.7/questions.yaml +++ /dev/null @@ -1,1493 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: token - label: token - description: Discord Bot Token - schema: - type: string - default: "" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Configuration. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/invitarr/2.0.8/CHANGELOG.md b/incubator/invitarr/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..b9376eefa61 --- /dev/null +++ b/incubator/invitarr/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [invitarr-2.0.8](https://github.com/truecharts/charts/compare/invitarr-2.0.7...invitarr-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [invitarr-2.0.7](https://github.com/truecharts/charts/compare/invitarr-2.0.6...invitarr-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [invitarr-2.0.6](https://github.com/truecharts/charts/compare/invitarr-2.0.5...invitarr-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [invitarr-2.0.5](https://github.com/truecharts/charts/compare/invitarr-2.0.4...invitarr-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [invitarr-2.0.4](https://github.com/truecharts/charts/compare/invitarr-2.0.3...invitarr-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [invitarr-2.0.3](https://github.com/truecharts/charts/compare/invitarr-2.0.2...invitarr-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) + + + + +## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) + + + + +## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) + + + + +## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) + + + + +## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) + + + + +## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) + + + + +## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) + + + + +## [invitarr-2.0.2](https://github.com/truecharts/charts/compare/invitarr-2.0.1...invitarr-2.0.2) (2022-11-30) + + + diff --git a/incubator/invitarr/2.0.8/Chart.yaml b/incubator/invitarr/2.0.8/Chart.yaml new file mode 100644 index 00000000000..f7c10f173d2 --- /dev/null +++ b/incubator/invitarr/2.0.8/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A chatbot that invites discord users to plex. +home: https://truecharts.org/charts/incubator/invitarr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/invitarr.png +keywords: + - invitarr + - HomeAutomation + - Tools-Utilities + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: invitarr +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/invitarr + - https://hub.docker.com/piratify/invitarr + - https://github.com/Sleepingpirates/Invitarr +type: application +version: 2.0.8 +annotations: + truecharts.org/catagories: | + - HomeAutomation + - Tools-Utilities + - Other + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/invitarr/2.0.7/README.md b/incubator/invitarr/2.0.8/README.md similarity index 100% rename from incubator/invitarr/2.0.7/README.md rename to incubator/invitarr/2.0.8/README.md diff --git a/incubator/invitarr/2.0.8/app-changelog.md b/incubator/invitarr/2.0.8/app-changelog.md new file mode 100644 index 00000000000..71d2d870ec9 --- /dev/null +++ b/incubator/invitarr/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [invitarr-2.0.8](https://github.com/truecharts/charts/compare/invitarr-2.0.7...invitarr-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/invitarr/2.0.8/app-readme.md b/incubator/invitarr/2.0.8/app-readme.md new file mode 100644 index 00000000000..e50db461eec --- /dev/null +++ b/incubator/invitarr/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +A chatbot that invites discord users to plex. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/invitarr](https://truecharts.org/charts/incubator/invitarr) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/jelu/2.0.12/charts/common-11.1.2.tgz b/incubator/invitarr/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/jelu/2.0.12/charts/common-11.1.2.tgz rename to incubator/invitarr/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/invitarr/2.0.7/ix_values.yaml b/incubator/invitarr/2.0.8/ix_values.yaml similarity index 100% rename from incubator/invitarr/2.0.7/ix_values.yaml rename to incubator/invitarr/2.0.8/ix_values.yaml diff --git a/incubator/invitarr/2.0.8/questions.yaml b/incubator/invitarr/2.0.8/questions.yaml new file mode 100644 index 00000000000..36f26d6ca8f --- /dev/null +++ b/incubator/invitarr/2.0.8/questions.yaml @@ -0,0 +1,1493 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: token + label: token + description: Discord Bot Token + schema: + type: string + default: "" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/invitarr/2.0.7/templates/common.yaml b/incubator/invitarr/2.0.8/templates/common.yaml similarity index 100% rename from incubator/invitarr/2.0.7/templates/common.yaml rename to incubator/invitarr/2.0.8/templates/common.yaml diff --git a/incubator/jelu/2.0.12/values.yaml b/incubator/invitarr/2.0.8/values.yaml similarity index 100% rename from incubator/jelu/2.0.12/values.yaml rename to incubator/invitarr/2.0.8/values.yaml diff --git a/incubator/jelu/2.0.12/CHANGELOG.md b/incubator/jelu/2.0.12/CHANGELOG.md deleted file mode 100644 index 42cbfde6165..00000000000 --- a/incubator/jelu/2.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [jelu-2.0.12](https://github.com/truecharts/charts/compare/jelu-2.0.11...jelu-2.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/jelu to latest - - - - -## [jelu-2.0.11](https://github.com/truecharts/charts/compare/jelu-2.0.10...jelu-2.0.11) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/jelu to latest - - - - -## [jelu-2.0.10](https://github.com/truecharts/charts/compare/jelu-2.0.9...jelu-2.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [jelu-2.0.9](https://github.com/truecharts/charts/compare/jelu-2.0.8...jelu-2.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [jelu-2.0.8](https://github.com/truecharts/charts/compare/jelu-2.0.7...jelu-2.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [jelu-2.0.7](https://github.com/truecharts/charts/compare/jelu-2.0.6...jelu-2.0.7) (2022-12-21) - -### Chore - -- update container image tccr.io/truecharts/jelu to latest - - - - -## [jelu-2.0.6](https://github.com/truecharts/charts/compare/jelu-2.0.5...jelu-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [jelu-2.0.5](https://github.com/truecharts/charts/compare/jelu-2.0.4...jelu-2.0.5) (2022-12-17) - - - - -## [jelu-2.0.4](https://github.com/truecharts/charts/compare/jelu-2.0.3...jelu-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [jelu-2.0.3](https://github.com/truecharts/charts/compare/jelu-2.0.2...jelu-2.0.3) (2022-11-30) - - - - -## [jelu-2.0.3](https://github.com/truecharts/charts/compare/jelu-2.0.2...jelu-2.0.3) (2022-11-30) - - - - -## [jelu-2.0.3](https://github.com/truecharts/charts/compare/jelu-2.0.2...jelu-2.0.3) (2022-11-30) - - - - -## [jelu-2.0.3](https://github.com/truecharts/charts/compare/jelu-2.0.2...jelu-2.0.3) (2022-11-30) diff --git a/incubator/jelu/2.0.12/Chart.yaml b/incubator/jelu/2.0.12/Chart.yaml deleted file mode 100644 index b38676d6bf8..00000000000 --- a/incubator/jelu/2.0.12/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Books -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Track what you have read, what you are reading and what you want to read." -home: https://truecharts.org/charts/incubator/jelu -icon: https://truecharts.org/img/hotlink-ok/chart-icons/jelu.png -keywords: - - jelu - - MediaApp-Books -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: jelu -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/jelu - - https://github.com/bayang/jelu - - https://hub.docker.com/r/wabayang/jelu -type: application -version: 2.0.12 diff --git a/incubator/jelu/2.0.12/app-changelog.md b/incubator/jelu/2.0.12/app-changelog.md deleted file mode 100644 index f2544f2fe05..00000000000 --- a/incubator/jelu/2.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [jelu-2.0.12](https://github.com/truecharts/charts/compare/jelu-2.0.11...jelu-2.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/jelu to latest - - \ No newline at end of file diff --git a/incubator/jelu/2.0.13/CHANGELOG.md b/incubator/jelu/2.0.13/CHANGELOG.md new file mode 100644 index 00000000000..47a7815eba3 --- /dev/null +++ b/incubator/jelu/2.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [jelu-2.0.13](https://github.com/truecharts/charts/compare/jelu-2.0.12...jelu-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [jelu-2.0.12](https://github.com/truecharts/charts/compare/jelu-2.0.11...jelu-2.0.12) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/jelu to latest + + + + +## [jelu-2.0.11](https://github.com/truecharts/charts/compare/jelu-2.0.10...jelu-2.0.11) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/jelu to latest + + + + +## [jelu-2.0.10](https://github.com/truecharts/charts/compare/jelu-2.0.9...jelu-2.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [jelu-2.0.9](https://github.com/truecharts/charts/compare/jelu-2.0.8...jelu-2.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [jelu-2.0.8](https://github.com/truecharts/charts/compare/jelu-2.0.7...jelu-2.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [jelu-2.0.7](https://github.com/truecharts/charts/compare/jelu-2.0.6...jelu-2.0.7) (2022-12-21) + +### Chore + +- update container image tccr.io/truecharts/jelu to latest + + + + +## [jelu-2.0.6](https://github.com/truecharts/charts/compare/jelu-2.0.5...jelu-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [jelu-2.0.5](https://github.com/truecharts/charts/compare/jelu-2.0.4...jelu-2.0.5) (2022-12-17) + + + + +## [jelu-2.0.4](https://github.com/truecharts/charts/compare/jelu-2.0.3...jelu-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [jelu-2.0.3](https://github.com/truecharts/charts/compare/jelu-2.0.2...jelu-2.0.3) (2022-11-30) + + + + +## [jelu-2.0.3](https://github.com/truecharts/charts/compare/jelu-2.0.2...jelu-2.0.3) (2022-11-30) + diff --git a/incubator/jelu/2.0.13/Chart.yaml b/incubator/jelu/2.0.13/Chart.yaml new file mode 100644 index 00000000000..22e975a3fde --- /dev/null +++ b/incubator/jelu/2.0.13/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Books +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Track what you have read, what you are reading and what you want to read." +home: https://truecharts.org/charts/incubator/jelu +icon: https://truecharts.org/img/hotlink-ok/chart-icons/jelu.png +keywords: + - jelu + - MediaApp-Books +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: jelu +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/jelu + - https://hub.docker.com/wabayang/jelu + - https://github.com/bayang/jelu +type: application +version: 2.0.13 diff --git a/incubator/jelu/2.0.12/README.md b/incubator/jelu/2.0.13/README.md similarity index 100% rename from incubator/jelu/2.0.12/README.md rename to incubator/jelu/2.0.13/README.md diff --git a/incubator/jelu/2.0.13/app-changelog.md b/incubator/jelu/2.0.13/app-changelog.md new file mode 100644 index 00000000000..e0da516de6d --- /dev/null +++ b/incubator/jelu/2.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [jelu-2.0.13](https://github.com/truecharts/charts/compare/jelu-2.0.12...jelu-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/jelu/2.0.12/app-readme.md b/incubator/jelu/2.0.13/app-readme.md similarity index 100% rename from incubator/jelu/2.0.12/app-readme.md rename to incubator/jelu/2.0.13/app-readme.md diff --git a/incubator/jenkins/3.0.5/charts/common-11.1.2.tgz b/incubator/jelu/2.0.13/charts/common-11.1.2.tgz similarity index 100% rename from incubator/jenkins/3.0.5/charts/common-11.1.2.tgz rename to incubator/jelu/2.0.13/charts/common-11.1.2.tgz diff --git a/incubator/jelu/2.0.12/ix_values.yaml b/incubator/jelu/2.0.13/ix_values.yaml similarity index 100% rename from incubator/jelu/2.0.12/ix_values.yaml rename to incubator/jelu/2.0.13/ix_values.yaml diff --git a/incubator/jelu/2.0.12/questions.yaml b/incubator/jelu/2.0.13/questions.yaml similarity index 100% rename from incubator/jelu/2.0.12/questions.yaml rename to incubator/jelu/2.0.13/questions.yaml diff --git a/incubator/jelu/2.0.12/templates/common.yaml b/incubator/jelu/2.0.13/templates/common.yaml similarity index 100% rename from incubator/jelu/2.0.12/templates/common.yaml rename to incubator/jelu/2.0.13/templates/common.yaml diff --git a/incubator/jenkins/3.0.5/values.yaml b/incubator/jelu/2.0.13/values.yaml similarity index 100% rename from incubator/jenkins/3.0.5/values.yaml rename to incubator/jelu/2.0.13/values.yaml diff --git a/incubator/jenkins/3.0.5/CHANGELOG.md b/incubator/jenkins/3.0.5/CHANGELOG.md deleted file mode 100644 index f8a89804b25..00000000000 --- a/incubator/jenkins/3.0.5/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [jenkins-3.0.5](https://github.com/truecharts/charts/compare/jenkins-3.0.4...jenkins-3.0.5) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/jenkins to 2.388.0 - - - - -## [jenkins-3.0.4](https://github.com/truecharts/charts/compare/jenkins-3.0.3...jenkins-3.0.4) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/jenkins to v2.388.0 - - - - -## [jenkins-3.0.3](https://github.com/truecharts/charts/compare/jenkins-3.0.2...jenkins-3.0.3) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/jenkins to v2.387.0 - - - - -## [jenkins-3.0.2](https://github.com/truecharts/charts/compare/jenkins-3.0.1...jenkins-3.0.2) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/jenkins to v2.386.0 - - - - -## [jenkins-3.0.1](https://github.com/truecharts/charts/compare/jenkins-3.0.0...jenkins-3.0.1) (2023-01-07) - -### Chore - -- update container image jenkins/jenkins to v2.385 - - - - -## [jenkins-3.0.0](https://github.com/truecharts/charts/compare/jenkins-2.0.8...jenkins-3.0.0) (2023-01-07) - - - - -## [jenkins-2.0.8](https://github.com/truecharts/charts/compare/jenkins-2.0.7...jenkins-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [jenkins-2.0.7](https://github.com/truecharts/charts/compare/jenkins-2.0.6...jenkins-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [jenkins-2.0.6](https://github.com/truecharts/charts/compare/jenkins-2.0.5...jenkins-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [jenkins-2.0.5](https://github.com/truecharts/charts/compare/jenkins-2.0.4...jenkins-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [jenkins-2.0.4](https://github.com/truecharts/charts/compare/jenkins-2.0.3...jenkins-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - diff --git a/incubator/jenkins/3.0.5/Chart.yaml b/incubator/jenkins/3.0.5/Chart.yaml deleted file mode 100644 index eca05c70e0a..00000000000 --- a/incubator/jenkins/3.0.5/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "2.388.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: The gold standard in devops tools for running CI/CD pipelines. -home: https://truecharts.org/charts/incubator/jenkins -icon: https://truecharts.org/img/hotlink-ok/chart-icons/jenkins.png -keywords: - - jenkins - - productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: jenkins -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/jenkins - - https://hub.docker.com/r/jenkins/jenkins -type: application -version: 3.0.5 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/jenkins/3.0.5/app-changelog.md b/incubator/jenkins/3.0.5/app-changelog.md deleted file mode 100644 index db1c78e3ff9..00000000000 --- a/incubator/jenkins/3.0.5/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [jenkins-3.0.5](https://github.com/truecharts/charts/compare/jenkins-3.0.4...jenkins-3.0.5) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/jenkins to 2.388.0 - - \ No newline at end of file diff --git a/incubator/jenkins/3.0.6/CHANGELOG.md b/incubator/jenkins/3.0.6/CHANGELOG.md new file mode 100644 index 00000000000..25de2c286ad --- /dev/null +++ b/incubator/jenkins/3.0.6/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [jenkins-3.0.6](https://github.com/truecharts/charts/compare/jenkins-3.0.5...jenkins-3.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [jenkins-3.0.5](https://github.com/truecharts/charts/compare/jenkins-3.0.4...jenkins-3.0.5) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/jenkins to 2.388.0 + + + + +## [jenkins-3.0.4](https://github.com/truecharts/charts/compare/jenkins-3.0.3...jenkins-3.0.4) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/jenkins to v2.388.0 + + + + +## [jenkins-3.0.3](https://github.com/truecharts/charts/compare/jenkins-3.0.2...jenkins-3.0.3) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/jenkins to v2.387.0 + + + + +## [jenkins-3.0.2](https://github.com/truecharts/charts/compare/jenkins-3.0.1...jenkins-3.0.2) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/jenkins to v2.386.0 + + + + +## [jenkins-3.0.1](https://github.com/truecharts/charts/compare/jenkins-3.0.0...jenkins-3.0.1) (2023-01-07) + +### Chore + +- update container image jenkins/jenkins to v2.385 + + + + +## [jenkins-3.0.0](https://github.com/truecharts/charts/compare/jenkins-2.0.8...jenkins-3.0.0) (2023-01-07) + + + + +## [jenkins-2.0.8](https://github.com/truecharts/charts/compare/jenkins-2.0.7...jenkins-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [jenkins-2.0.7](https://github.com/truecharts/charts/compare/jenkins-2.0.6...jenkins-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [jenkins-2.0.6](https://github.com/truecharts/charts/compare/jenkins-2.0.5...jenkins-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [jenkins-2.0.5](https://github.com/truecharts/charts/compare/jenkins-2.0.4...jenkins-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + diff --git a/incubator/jenkins/3.0.6/Chart.yaml b/incubator/jenkins/3.0.6/Chart.yaml new file mode 100644 index 00000000000..778bedd3ae4 --- /dev/null +++ b/incubator/jenkins/3.0.6/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "2.388.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: The gold standard in devops tools for running CI/CD pipelines. +home: https://truecharts.org/charts/incubator/jenkins +icon: https://truecharts.org/img/hotlink-ok/chart-icons/jenkins.png +keywords: + - jenkins + - productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: jenkins +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/jenkins + - https://hub.docker.com/jenkins/jenkins +type: application +version: 3.0.6 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/jenkins/3.0.5/README.md b/incubator/jenkins/3.0.6/README.md similarity index 100% rename from incubator/jenkins/3.0.5/README.md rename to incubator/jenkins/3.0.6/README.md diff --git a/incubator/jenkins/3.0.6/app-changelog.md b/incubator/jenkins/3.0.6/app-changelog.md new file mode 100644 index 00000000000..29b5cf60749 --- /dev/null +++ b/incubator/jenkins/3.0.6/app-changelog.md @@ -0,0 +1,9 @@ + + +## [jenkins-3.0.6](https://github.com/truecharts/charts/compare/jenkins-3.0.5...jenkins-3.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/jenkins/3.0.5/app-readme.md b/incubator/jenkins/3.0.6/app-readme.md similarity index 100% rename from incubator/jenkins/3.0.5/app-readme.md rename to incubator/jenkins/3.0.6/app-readme.md diff --git a/incubator/jmzhomeproxy/2.0.7/charts/common-11.1.2.tgz b/incubator/jenkins/3.0.6/charts/common-11.1.2.tgz similarity index 100% rename from incubator/jmzhomeproxy/2.0.7/charts/common-11.1.2.tgz rename to incubator/jenkins/3.0.6/charts/common-11.1.2.tgz diff --git a/incubator/jenkins/3.0.5/ix_values.yaml b/incubator/jenkins/3.0.6/ix_values.yaml similarity index 100% rename from incubator/jenkins/3.0.5/ix_values.yaml rename to incubator/jenkins/3.0.6/ix_values.yaml diff --git a/incubator/jenkins/3.0.5/questions.yaml b/incubator/jenkins/3.0.6/questions.yaml similarity index 100% rename from incubator/jenkins/3.0.5/questions.yaml rename to incubator/jenkins/3.0.6/questions.yaml diff --git a/incubator/jenkins/3.0.5/templates/_secret.tpl b/incubator/jenkins/3.0.6/templates/_secret.tpl similarity index 100% rename from incubator/jenkins/3.0.5/templates/_secret.tpl rename to incubator/jenkins/3.0.6/templates/_secret.tpl diff --git a/incubator/jenkins/3.0.5/templates/common.yaml b/incubator/jenkins/3.0.6/templates/common.yaml similarity index 100% rename from incubator/jenkins/3.0.5/templates/common.yaml rename to incubator/jenkins/3.0.6/templates/common.yaml diff --git a/incubator/jmzhomeproxy/2.0.7/values.yaml b/incubator/jenkins/3.0.6/values.yaml similarity index 100% rename from incubator/jmzhomeproxy/2.0.7/values.yaml rename to incubator/jenkins/3.0.6/values.yaml diff --git a/incubator/jmzhomeproxy/2.0.7/CHANGELOG.md b/incubator/jmzhomeproxy/2.0.7/CHANGELOG.md deleted file mode 100644 index 0f575bde224..00000000000 --- a/incubator/jmzhomeproxy/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [jmzhomeproxy-2.0.7](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.6...jmzhomeproxy-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [jmzhomeproxy-2.0.6](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.5...jmzhomeproxy-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [jmzhomeproxy-2.0.5](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.4...jmzhomeproxy-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [jmzhomeproxy-2.0.4](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.3...jmzhomeproxy-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [jmzhomeproxy-2.0.3](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.2...jmzhomeproxy-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - - - -## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) - - diff --git a/incubator/jmzhomeproxy/2.0.7/Chart.yaml b/incubator/jmzhomeproxy/2.0.7/Chart.yaml deleted file mode 100644 index ea69bb4f5b7..00000000000 --- a/incubator/jmzhomeproxy/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Network-Web -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Proxy is in quotes because I couldn't think of a better name. There is nothing overly special about this other than using it as a simple and easy to use dashboard for all your self-hosted services." -home: https://truecharts.org/charts/incubator/jmzhomeproxy -icon: https://truecharts.org/img/hotlink-ok/chart-icons/jmzhomeproxy.png -keywords: - - jmzhomeproxy - - Cloud - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: jmzhomeproxy -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/jmzhomeproxy - - https://github.com/JmzTaylor/homelab_proxy/ - - https://hub.docker.com/u/jmzsoftware -type: application -version: 2.0.7 diff --git a/incubator/jmzhomeproxy/2.0.7/app-changelog.md b/incubator/jmzhomeproxy/2.0.7/app-changelog.md deleted file mode 100644 index 772b725567f..00000000000 --- a/incubator/jmzhomeproxy/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [jmzhomeproxy-2.0.7](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.6...jmzhomeproxy-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/jmzhomeproxy/2.0.7/app-readme.md b/incubator/jmzhomeproxy/2.0.7/app-readme.md deleted file mode 100644 index 4ccd8501305..00000000000 --- a/incubator/jmzhomeproxy/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Proxy is in quotes because I couldn't think of a better name. There is nothing overly special about this other than using it as a simple and easy to use dashboard for all your self-hosted services. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/jmzhomeproxy](https://truecharts.org/charts/incubator/jmzhomeproxy) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/jmzhomeproxy/2.0.7/questions.yaml b/incubator/jmzhomeproxy/2.0.7/questions.yaml deleted file mode 100644 index ec6dbc31583..00000000000 --- a/incubator/jmzhomeproxy/2.0.7/questions.yaml +++ /dev/null @@ -1,1751 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8080 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/jmzhomeproxy/2.0.8/CHANGELOG.md b/incubator/jmzhomeproxy/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..e1a9687ba2f --- /dev/null +++ b/incubator/jmzhomeproxy/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [jmzhomeproxy-2.0.8](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.7...jmzhomeproxy-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [jmzhomeproxy-2.0.7](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.6...jmzhomeproxy-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [jmzhomeproxy-2.0.6](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.5...jmzhomeproxy-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [jmzhomeproxy-2.0.5](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.4...jmzhomeproxy-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [jmzhomeproxy-2.0.4](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.3...jmzhomeproxy-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [jmzhomeproxy-2.0.3](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.2...jmzhomeproxy-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) + + + + +## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) + + + + +## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) + + + + +## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) + + + + +## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) + + + + +## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) + + + + +## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) + + + + +## [jmzhomeproxy-2.0.2](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.1...jmzhomeproxy-2.0.2) (2022-11-30) + + + diff --git a/incubator/jmzhomeproxy/2.0.8/Chart.yaml b/incubator/jmzhomeproxy/2.0.8/Chart.yaml new file mode 100644 index 00000000000..da8f6633814 --- /dev/null +++ b/incubator/jmzhomeproxy/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Proxy is in quotes because I couldn't think of a better name. There is nothing overly special about this other than using it as a simple and easy to use dashboard for all your self-hosted services." +home: https://truecharts.org/charts/incubator/jmzhomeproxy +icon: https://truecharts.org/img/hotlink-ok/chart-icons/jmzhomeproxy.png +keywords: + - jmzhomeproxy + - Cloud + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: jmzhomeproxy +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/jmzhomeproxy + - https://hub.docker.com/jmzsoftware/jmzhomelabproxy + - https://github.com/JmzTaylor/homelab_proxy/ +type: application +version: 2.0.8 diff --git a/incubator/jmzhomeproxy/2.0.7/README.md b/incubator/jmzhomeproxy/2.0.8/README.md similarity index 100% rename from incubator/jmzhomeproxy/2.0.7/README.md rename to incubator/jmzhomeproxy/2.0.8/README.md diff --git a/incubator/jmzhomeproxy/2.0.8/app-changelog.md b/incubator/jmzhomeproxy/2.0.8/app-changelog.md new file mode 100644 index 00000000000..13bd6871afb --- /dev/null +++ b/incubator/jmzhomeproxy/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [jmzhomeproxy-2.0.8](https://github.com/truecharts/charts/compare/jmzhomeproxy-2.0.7...jmzhomeproxy-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/jmzhomeproxy/2.0.8/app-readme.md b/incubator/jmzhomeproxy/2.0.8/app-readme.md new file mode 100644 index 00000000000..0cd3914381d --- /dev/null +++ b/incubator/jmzhomeproxy/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Proxy is in quotes because I couldn't think of a better name. There is nothing overly special about this other than using it as a simple and easy to use dashboard for all your self-hosted services. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/jmzhomeproxy](https://truecharts.org/charts/incubator/jmzhomeproxy) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/jump/2.0.7/charts/common-11.1.2.tgz b/incubator/jmzhomeproxy/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/jump/2.0.7/charts/common-11.1.2.tgz rename to incubator/jmzhomeproxy/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/jmzhomeproxy/2.0.7/ix_values.yaml b/incubator/jmzhomeproxy/2.0.8/ix_values.yaml similarity index 100% rename from incubator/jmzhomeproxy/2.0.7/ix_values.yaml rename to incubator/jmzhomeproxy/2.0.8/ix_values.yaml diff --git a/incubator/jmzhomeproxy/2.0.8/questions.yaml b/incubator/jmzhomeproxy/2.0.8/questions.yaml new file mode 100644 index 00000000000..21e781a3852 --- /dev/null +++ b/incubator/jmzhomeproxy/2.0.8/questions.yaml @@ -0,0 +1,1792 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8080 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/jmzhomeproxy/2.0.7/templates/common.yaml b/incubator/jmzhomeproxy/2.0.8/templates/common.yaml similarity index 100% rename from incubator/jmzhomeproxy/2.0.7/templates/common.yaml rename to incubator/jmzhomeproxy/2.0.8/templates/common.yaml diff --git a/incubator/jump/2.0.7/values.yaml b/incubator/jmzhomeproxy/2.0.8/values.yaml similarity index 100% rename from incubator/jump/2.0.7/values.yaml rename to incubator/jmzhomeproxy/2.0.8/values.yaml diff --git a/incubator/jump/2.0.7/CHANGELOG.md b/incubator/jump/2.0.7/CHANGELOG.md deleted file mode 100644 index 385e1b91d34..00000000000 --- a/incubator/jump/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [jump-2.0.7](https://github.com/truecharts/charts/compare/jump-2.0.6...jump-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [jump-2.0.6](https://github.com/truecharts/charts/compare/jump-2.0.5...jump-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [jump-2.0.5](https://github.com/truecharts/charts/compare/jump-2.0.4...jump-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [jump-2.0.4](https://github.com/truecharts/charts/compare/jump-2.0.3...jump-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [jump-2.0.3](https://github.com/truecharts/charts/compare/jump-2.0.2...jump-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - - - -## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) - - diff --git a/incubator/jump/2.0.7/Chart.yaml b/incubator/jump/2.0.7/Chart.yaml deleted file mode 100644 index e6c99b82093..00000000000 --- a/incubator/jump/2.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "1.3.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Jump is yet another self-hosted startpage for your server designed to be simple, stylish, fast and secure. -home: https://truecharts.org/charts/incubator/jump -icon: https://truecharts.org/img/hotlink-ok/chart-icons/jump.png -keywords: - - dashboard - - jump -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: jump -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/jump - - https://github.com/daledavies/jump - - https://hub.docker.com/r/daledavies/jump -version: 2.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/jump/2.0.7/app-changelog.md b/incubator/jump/2.0.7/app-changelog.md deleted file mode 100644 index a4e1363f87c..00000000000 --- a/incubator/jump/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [jump-2.0.7](https://github.com/truecharts/charts/compare/jump-2.0.6...jump-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/jump/2.0.7/app-readme.md b/incubator/jump/2.0.7/app-readme.md deleted file mode 100644 index aced2f1d342..00000000000 --- a/incubator/jump/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Jump is yet another self-hosted startpage for your server designed to be simple, stylish, fast and secure. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/jump](https://truecharts.org/charts/incubator/jump) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/jump/2.0.7/questions.yaml b/incubator/jump/2.0.7/questions.yaml deleted file mode 100644 index 97e62b2c759..00000000000 --- a/incubator/jump/2.0.7/questions.yaml +++ /dev/null @@ -1,2075 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: UNSPLASHAPIKEY - label: "UNSPLASHAPIKEY" - description: " An API key for Unsplash, enables fetching random background images from Unsplash." - schema: - type: string - private: true - default: "" - - variable: UNSPLASHCOLLECTIONS - label: "UNSPLASHCOLLECTIONS" - description: "List of Unsplash collection ID's (separated by commas) to select random images from." - schema: - type: string - default: "" - - variable: OWMAPIKEY - label: "OWMAPIKEY" - description: "An API key for Open Weather Map, LATLONG (below) must also be defined." - schema: - type: string - private: true - default: "" - - variable: LATLONG - label: "LATLONG" - description: "A latitude and longitude for the default location (e.g. '51.509865,-0.118092')." - schema: - type: string - default: "" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: SITENAME - label: "SITENAME" - description: "Custom site name." - schema: - type: string - default: "" - - variable: SHOWCLOCK - label: "SHOWCLOCK" - description: "Hide the clock." - schema: - type: boolean - default: false - - variable: AMPMCLOCK - label: "AMPMCLOCK" - description: "Show 12 hour clock format if checked." - schema: - type: boolean - default: false - - variable: SHOWGREETING - label: "SHOWGREETING" - description: "Show the label #home instead of a friendly greeting message." - schema: - type: boolean - default: false - - variable: SHOWSEARCH - label: "SHOWSEARCH" - description: "Hide the search button (disable search)." - schema: - type: boolean - default: true - - variable: ALTLAYOUT - label: "ALTLAYOUT" - description: "Display list of sites using an alternative layout." - schema: - type: boolean - default: true - - variable: METRICTEMP - label: "METRICTEMP" - description: "Metric (C) or imperial (F) temperature units." - schema: - type: boolean - default: true - - variable: NOINDEX - label: "NOINDEX" - description: "Include a robots noindex meta tag in site header." - schema: - type: boolean - default: true - - variable: CACHEBYPASS - label: "CACHEBYPASS" - description: "Bypass all caches, useful for testing changes." - schema: - type: boolean - default: true - - variable: BGBLUR - label: "BGBLUR" - description: "Background image blur percentage." - schema: - type: int - default: 50 - - variable: BGBRIGHT - label: "BGBRIGHT" - description: "Background image brightness percentage." - schema: - type: int - default: 90 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10108 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: backgrounds - label: "App Background Storage" - description: "Stores the Application Backgrounds." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: sites - label: "App Sites Storage" - description: "Stores the Application Sites." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: search - label: "App Search Storage" - description: "Stores the Application Search." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/jump/2.0.8/CHANGELOG.md b/incubator/jump/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..c41f1d31818 --- /dev/null +++ b/incubator/jump/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [jump-2.0.8](https://github.com/truecharts/charts/compare/jump-2.0.7...jump-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [jump-2.0.7](https://github.com/truecharts/charts/compare/jump-2.0.6...jump-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [jump-2.0.6](https://github.com/truecharts/charts/compare/jump-2.0.5...jump-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [jump-2.0.5](https://github.com/truecharts/charts/compare/jump-2.0.4...jump-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [jump-2.0.4](https://github.com/truecharts/charts/compare/jump-2.0.3...jump-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [jump-2.0.3](https://github.com/truecharts/charts/compare/jump-2.0.2...jump-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) + + + + +## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) + + + + +## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) + + + + +## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) + + + + +## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) + + + + +## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) + + + + +## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) + + + + +## [jump-2.0.2](https://github.com/truecharts/charts/compare/jump-2.0.1...jump-2.0.2) (2022-11-30) + + + diff --git a/incubator/jump/2.0.8/Chart.yaml b/incubator/jump/2.0.8/Chart.yaml new file mode 100644 index 00000000000..4df7374498e --- /dev/null +++ b/incubator/jump/2.0.8/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "1.3.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Jump is yet another self-hosted startpage for your server designed to be simple, stylish, fast and secure. +home: https://truecharts.org/charts/incubator/jump +icon: https://truecharts.org/img/hotlink-ok/chart-icons/jump.png +keywords: + - dashboard + - jump +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: jump +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/jump + - https://hub.docker.com/daledavies/jump + - https://github.com/daledavies/jump +version: 2.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/jump/2.0.7/README.md b/incubator/jump/2.0.8/README.md similarity index 100% rename from incubator/jump/2.0.7/README.md rename to incubator/jump/2.0.8/README.md diff --git a/incubator/jump/2.0.8/app-changelog.md b/incubator/jump/2.0.8/app-changelog.md new file mode 100644 index 00000000000..26998d4023a --- /dev/null +++ b/incubator/jump/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [jump-2.0.8](https://github.com/truecharts/charts/compare/jump-2.0.7...jump-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/jump/2.0.8/app-readme.md b/incubator/jump/2.0.8/app-readme.md new file mode 100644 index 00000000000..52b346321b8 --- /dev/null +++ b/incubator/jump/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Jump is yet another self-hosted startpage for your server designed to be simple, stylish, fast and secure. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/jump](https://truecharts.org/charts/incubator/jump) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/kavitaemail/2.0.9/charts/common-11.1.2.tgz b/incubator/jump/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/kavitaemail/2.0.9/charts/common-11.1.2.tgz rename to incubator/jump/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/jump/2.0.7/ix_values.yaml b/incubator/jump/2.0.8/ix_values.yaml similarity index 100% rename from incubator/jump/2.0.7/ix_values.yaml rename to incubator/jump/2.0.8/ix_values.yaml diff --git a/incubator/jump/2.0.8/questions.yaml b/incubator/jump/2.0.8/questions.yaml new file mode 100644 index 00000000000..a0985ed679f --- /dev/null +++ b/incubator/jump/2.0.8/questions.yaml @@ -0,0 +1,2116 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: UNSPLASHAPIKEY + label: "UNSPLASHAPIKEY" + description: " An API key for Unsplash, enables fetching random background images from Unsplash." + schema: + type: string + private: true + default: "" + - variable: UNSPLASHCOLLECTIONS + label: "UNSPLASHCOLLECTIONS" + description: "List of Unsplash collection ID's (separated by commas) to select random images from." + schema: + type: string + default: "" + - variable: OWMAPIKEY + label: "OWMAPIKEY" + description: "An API key for Open Weather Map, LATLONG (below) must also be defined." + schema: + type: string + private: true + default: "" + - variable: LATLONG + label: "LATLONG" + description: "A latitude and longitude for the default location (e.g. '51.509865,-0.118092')." + schema: + type: string + default: "" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: SITENAME + label: "SITENAME" + description: "Custom site name." + schema: + type: string + default: "" + - variable: SHOWCLOCK + label: "SHOWCLOCK" + description: "Hide the clock." + schema: + type: boolean + default: false + - variable: AMPMCLOCK + label: "AMPMCLOCK" + description: "Show 12 hour clock format if checked." + schema: + type: boolean + default: false + - variable: SHOWGREETING + label: "SHOWGREETING" + description: "Show the label #home instead of a friendly greeting message." + schema: + type: boolean + default: false + - variable: SHOWSEARCH + label: "SHOWSEARCH" + description: "Hide the search button (disable search)." + schema: + type: boolean + default: true + - variable: ALTLAYOUT + label: "ALTLAYOUT" + description: "Display list of sites using an alternative layout." + schema: + type: boolean + default: true + - variable: METRICTEMP + label: "METRICTEMP" + description: "Metric (C) or imperial (F) temperature units." + schema: + type: boolean + default: true + - variable: NOINDEX + label: "NOINDEX" + description: "Include a robots noindex meta tag in site header." + schema: + type: boolean + default: true + - variable: CACHEBYPASS + label: "CACHEBYPASS" + description: "Bypass all caches, useful for testing changes." + schema: + type: boolean + default: true + - variable: BGBLUR + label: "BGBLUR" + description: "Background image blur percentage." + schema: + type: int + default: 50 + - variable: BGBRIGHT + label: "BGBRIGHT" + description: "Background image brightness percentage." + schema: + type: int + default: 90 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10108 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: backgrounds + label: "App Background Storage" + description: "Stores the Application Backgrounds." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: sites + label: "App Sites Storage" + description: "Stores the Application Sites." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: search + label: "App Search Storage" + description: "Stores the Application Search." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/jump/2.0.7/templates/common.yaml b/incubator/jump/2.0.8/templates/common.yaml similarity index 100% rename from incubator/jump/2.0.7/templates/common.yaml rename to incubator/jump/2.0.8/templates/common.yaml diff --git a/incubator/kavitaemail/2.0.9/values.yaml b/incubator/jump/2.0.8/values.yaml similarity index 100% rename from incubator/kavitaemail/2.0.9/values.yaml rename to incubator/jump/2.0.8/values.yaml diff --git a/incubator/kavitaemail/2.0.10/CHANGELOG.md b/incubator/kavitaemail/2.0.10/CHANGELOG.md new file mode 100644 index 00000000000..9ad6088140d --- /dev/null +++ b/incubator/kavitaemail/2.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [kavitaemail-2.0.10](https://github.com/truecharts/charts/compare/kavitaemail-2.0.9...kavitaemail-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [kavitaemail-2.0.9](https://github.com/truecharts/charts/compare/kavitaemail-2.0.8...kavitaemail-2.0.9) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/kavitaemail to v0.1.12 + + + + +## [kavitaemail-2.0.8](https://github.com/truecharts/charts/compare/kavitaemail-2.0.7...kavitaemail-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [kavitaemail-2.0.7](https://github.com/truecharts/charts/compare/kavitaemail-2.0.6...kavitaemail-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [kavitaemail-2.0.6](https://github.com/truecharts/charts/compare/kavitaemail-2.0.5...kavitaemail-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [kavitaemail-2.0.5](https://github.com/truecharts/charts/compare/kavitaemail-2.0.4...kavitaemail-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [kavitaemail-2.0.4](https://github.com/truecharts/charts/compare/kavitaemail-2.0.3...kavitaemail-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [kavitaemail-2.0.3](https://github.com/truecharts/charts/compare/kavitaemail-2.0.2...kavitaemail-2.0.3) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/kavitaemail to v0.1.11 + + + + +## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) + + + + +## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) + + + + +## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) + + + + +## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) + + + + +## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) diff --git a/incubator/kavitaemail/2.0.10/Chart.yaml b/incubator/kavitaemail/2.0.10/Chart.yaml new file mode 100644 index 00000000000..a15a4d8e0b5 --- /dev/null +++ b/incubator/kavitaemail/2.0.10/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: kavitaemail +version: 2.0.10 +appVersion: "0.1.12" +description: Simple email relay server for kavita. +type: application +deprecated: false +home: https://truecharts.org/charts/incubator/kavitaemail +icon: https://truecharts.org/img/hotlink-ok/chart-icons/kavitaemail.png +keywords: + - kavitaemail + - email +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/kavitaemail + - https://hub.docker.com/kizaing/kavitaemail + - https://truecharts.org/docs/charts/incubator/kavitaemail + - https://github.com/Kareadita/KavitaEmail +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - email + - relay + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/kavitaemail/2.0.9/README.md b/incubator/kavitaemail/2.0.10/README.md similarity index 100% rename from incubator/kavitaemail/2.0.9/README.md rename to incubator/kavitaemail/2.0.10/README.md diff --git a/incubator/kavitaemail/2.0.10/app-changelog.md b/incubator/kavitaemail/2.0.10/app-changelog.md new file mode 100644 index 00000000000..54697d169e8 --- /dev/null +++ b/incubator/kavitaemail/2.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [kavitaemail-2.0.10](https://github.com/truecharts/charts/compare/kavitaemail-2.0.9...kavitaemail-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/kavitaemail/2.0.9/app-readme.md b/incubator/kavitaemail/2.0.10/app-readme.md similarity index 100% rename from incubator/kavitaemail/2.0.9/app-readme.md rename to incubator/kavitaemail/2.0.10/app-readme.md diff --git a/incubator/keeweb/2.0.8/charts/common-11.1.2.tgz b/incubator/kavitaemail/2.0.10/charts/common-11.1.2.tgz similarity index 100% rename from incubator/keeweb/2.0.8/charts/common-11.1.2.tgz rename to incubator/kavitaemail/2.0.10/charts/common-11.1.2.tgz diff --git a/incubator/kavitaemail/2.0.9/ix_values.yaml b/incubator/kavitaemail/2.0.10/ix_values.yaml similarity index 100% rename from incubator/kavitaemail/2.0.9/ix_values.yaml rename to incubator/kavitaemail/2.0.10/ix_values.yaml diff --git a/incubator/kavitaemail/2.0.9/questions.yaml b/incubator/kavitaemail/2.0.10/questions.yaml similarity index 100% rename from incubator/kavitaemail/2.0.9/questions.yaml rename to incubator/kavitaemail/2.0.10/questions.yaml diff --git a/incubator/kavitaemail/2.0.9/templates/common.yaml b/incubator/kavitaemail/2.0.10/templates/common.yaml similarity index 100% rename from incubator/kavitaemail/2.0.9/templates/common.yaml rename to incubator/kavitaemail/2.0.10/templates/common.yaml diff --git a/incubator/keeweb/2.0.8/values.yaml b/incubator/kavitaemail/2.0.10/values.yaml similarity index 100% rename from incubator/keeweb/2.0.8/values.yaml rename to incubator/kavitaemail/2.0.10/values.yaml diff --git a/incubator/kavitaemail/2.0.9/CHANGELOG.md b/incubator/kavitaemail/2.0.9/CHANGELOG.md deleted file mode 100644 index a28486cf647..00000000000 --- a/incubator/kavitaemail/2.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [kavitaemail-2.0.9](https://github.com/truecharts/charts/compare/kavitaemail-2.0.8...kavitaemail-2.0.9) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/kavitaemail to v0.1.12 - - - - -## [kavitaemail-2.0.8](https://github.com/truecharts/charts/compare/kavitaemail-2.0.7...kavitaemail-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [kavitaemail-2.0.7](https://github.com/truecharts/charts/compare/kavitaemail-2.0.6...kavitaemail-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [kavitaemail-2.0.6](https://github.com/truecharts/charts/compare/kavitaemail-2.0.5...kavitaemail-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [kavitaemail-2.0.5](https://github.com/truecharts/charts/compare/kavitaemail-2.0.4...kavitaemail-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [kavitaemail-2.0.4](https://github.com/truecharts/charts/compare/kavitaemail-2.0.3...kavitaemail-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [kavitaemail-2.0.3](https://github.com/truecharts/charts/compare/kavitaemail-2.0.2...kavitaemail-2.0.3) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/kavitaemail to v0.1.11 - - - - -## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) - - - - -## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) - - - - -## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) - - - - -## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) - - - - -## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) - - - - -## [kavitaemail-2.0.2](https://github.com/truecharts/charts/compare/kavitaemail-2.0.1...kavitaemail-2.0.2) (2022-11-30) - - - - diff --git a/incubator/kavitaemail/2.0.9/Chart.yaml b/incubator/kavitaemail/2.0.9/Chart.yaml deleted file mode 100644 index ca0fbf7c29e..00000000000 --- a/incubator/kavitaemail/2.0.9/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: kavitaemail -version: 2.0.9 -appVersion: "0.1.12" -description: Simple email relay server for kavita. -type: application -deprecated: false -home: https://truecharts.org/charts/incubator/kavitaemail -icon: https://truecharts.org/img/hotlink-ok/chart-icons/kavitaemail.png -keywords: - - kavitaemail - - email -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/kavitaemail - - https://truecharts.org/docs/charts/incubator/kavitaemail - - https://github.com/Kareadita/KavitaEmail - - https://hub.docker.com/r/kizaing/kavitaemail -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - # condition: -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - email - - relay - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/kavitaemail/2.0.9/app-changelog.md b/incubator/kavitaemail/2.0.9/app-changelog.md deleted file mode 100644 index ec0335c206f..00000000000 --- a/incubator/kavitaemail/2.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [kavitaemail-2.0.9](https://github.com/truecharts/charts/compare/kavitaemail-2.0.8...kavitaemail-2.0.9) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/kavitaemail to v0.1.12 - - \ No newline at end of file diff --git a/incubator/keeweb/2.0.8/CHANGELOG.md b/incubator/keeweb/2.0.8/CHANGELOG.md deleted file mode 100644 index c247ef730c3..00000000000 --- a/incubator/keeweb/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [keeweb-2.0.8](https://github.com/truecharts/charts/compare/keeweb-2.0.7...keeweb-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [keeweb-2.0.7](https://github.com/truecharts/charts/compare/keeweb-2.0.6...keeweb-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [keeweb-2.0.6](https://github.com/truecharts/charts/compare/keeweb-2.0.5...keeweb-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [keeweb-2.0.5](https://github.com/truecharts/charts/compare/keeweb-2.0.4...keeweb-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [keeweb-2.0.4](https://github.com/truecharts/charts/compare/keeweb-2.0.3...keeweb-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - - - -## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) - - diff --git a/incubator/keeweb/2.0.8/Chart.yaml b/incubator/keeweb/2.0.8/Chart.yaml deleted file mode 100644 index 50c8d172bb8..00000000000 --- a/incubator/keeweb/2.0.8/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: This webapp is a browser and desktop password manager compatible with KeePass databases. It doesn't require any server or additional resources. The app can run either in browser, or as a desktop app. -home: https://truecharts.org/charts/incubator/keeweb -icon: https://truecharts.org/img/hotlink-ok/chart-icons/keeweb.png -keywords: - - keeweb - - Productivity - - Tools-Utilities - - Network-Web - - Network-Management -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: keeweb -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/keeweb - - https://github.com/keeweb/keeweb - - https://hub.docker.com/r/antelle/keeweb -version: 2.0.8 -annotations: - truecharts.org/catagories: | - - Productivity - - Tools-Utilities - - Network-Web - - Network-Management - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/keeweb/2.0.8/app-changelog.md b/incubator/keeweb/2.0.8/app-changelog.md deleted file mode 100644 index 3822bb98014..00000000000 --- a/incubator/keeweb/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [keeweb-2.0.8](https://github.com/truecharts/charts/compare/keeweb-2.0.7...keeweb-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/keeweb/2.0.8/app-readme.md b/incubator/keeweb/2.0.8/app-readme.md deleted file mode 100644 index 806e236d3f0..00000000000 --- a/incubator/keeweb/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This webapp is a browser and desktop password manager compatible with KeePass databases. It doesn't require any server or additional resources. The app can run either in browser, or as a desktop app. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/keeweb](https://truecharts.org/charts/incubator/keeweb) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/keeweb/2.0.8/questions.yaml b/incubator/keeweb/2.0.8/questions.yaml deleted file mode 100644 index 87ebd46c0df..00000000000 --- a/incubator/keeweb/2.0.8/questions.yaml +++ /dev/null @@ -1,1991 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8003 - required: true - - variable: http - label: HTTP Service - description: The HTTP service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: http - label: HTTP Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8004 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: nginx - label: nginx Storage - description: Place here your files dh.pem, cert.pem and key.pem. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: http - label: HTTP Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/keeweb/2.0.9/CHANGELOG.md b/incubator/keeweb/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..fc1d02eb9da --- /dev/null +++ b/incubator/keeweb/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [keeweb-2.0.9](https://github.com/truecharts/charts/compare/keeweb-2.0.8...keeweb-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [keeweb-2.0.8](https://github.com/truecharts/charts/compare/keeweb-2.0.7...keeweb-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [keeweb-2.0.7](https://github.com/truecharts/charts/compare/keeweb-2.0.6...keeweb-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [keeweb-2.0.6](https://github.com/truecharts/charts/compare/keeweb-2.0.5...keeweb-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [keeweb-2.0.5](https://github.com/truecharts/charts/compare/keeweb-2.0.4...keeweb-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [keeweb-2.0.4](https://github.com/truecharts/charts/compare/keeweb-2.0.3...keeweb-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) + + + + +## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) + + + + +## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) + + + + +## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) + + + + +## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) + + + + +## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) + + + + +## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) + + + + +## [keeweb-2.0.3](https://github.com/truecharts/charts/compare/keeweb-2.0.2...keeweb-2.0.3) (2022-11-30) + + + diff --git a/incubator/keeweb/2.0.9/Chart.yaml b/incubator/keeweb/2.0.9/Chart.yaml new file mode 100644 index 00000000000..4aae5fc9700 --- /dev/null +++ b/incubator/keeweb/2.0.9/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: This webapp is a browser and desktop password manager compatible with KeePass databases. It doesn't require any server or additional resources. The app can run either in browser, or as a desktop app. +home: https://truecharts.org/charts/incubator/keeweb +icon: https://truecharts.org/img/hotlink-ok/chart-icons/keeweb.png +keywords: + - keeweb + - Productivity + - Tools-Utilities + - Network-Web + - Network-Management +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: keeweb +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/keeweb + - https://hub.docker.com/antelle/keeweb + - https://github.com/keeweb/keeweb +version: 2.0.9 +annotations: + truecharts.org/catagories: | + - Productivity + - Tools-Utilities + - Network-Web + - Network-Management + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/keeweb/2.0.8/README.md b/incubator/keeweb/2.0.9/README.md similarity index 100% rename from incubator/keeweb/2.0.8/README.md rename to incubator/keeweb/2.0.9/README.md diff --git a/incubator/keeweb/2.0.9/app-changelog.md b/incubator/keeweb/2.0.9/app-changelog.md new file mode 100644 index 00000000000..648be3729fe --- /dev/null +++ b/incubator/keeweb/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [keeweb-2.0.9](https://github.com/truecharts/charts/compare/keeweb-2.0.8...keeweb-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/keeweb/2.0.9/app-readme.md b/incubator/keeweb/2.0.9/app-readme.md new file mode 100644 index 00000000000..2e21230f683 --- /dev/null +++ b/incubator/keeweb/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +This webapp is a browser and desktop password manager compatible with KeePass databases. It doesn't require any server or additional resources. The app can run either in browser, or as a desktop app. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/keeweb](https://truecharts.org/charts/incubator/keeweb) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/kitana/2.0.7/charts/common-11.1.2.tgz b/incubator/keeweb/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/kitana/2.0.7/charts/common-11.1.2.tgz rename to incubator/keeweb/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/keeweb/2.0.8/ix_values.yaml b/incubator/keeweb/2.0.9/ix_values.yaml similarity index 100% rename from incubator/keeweb/2.0.8/ix_values.yaml rename to incubator/keeweb/2.0.9/ix_values.yaml diff --git a/incubator/keeweb/2.0.9/questions.yaml b/incubator/keeweb/2.0.9/questions.yaml new file mode 100644 index 00000000000..82218aea09c --- /dev/null +++ b/incubator/keeweb/2.0.9/questions.yaml @@ -0,0 +1,2053 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8003 + required: true + - variable: http + label: HTTP Service + description: The HTTP service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: http + label: HTTP Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8004 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: nginx + label: nginx Storage + description: Place here your files dh.pem, cert.pem and key.pem. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: http + label: HTTP Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/keeweb/2.0.8/templates/common.yaml b/incubator/keeweb/2.0.9/templates/common.yaml similarity index 100% rename from incubator/keeweb/2.0.8/templates/common.yaml rename to incubator/keeweb/2.0.9/templates/common.yaml diff --git a/incubator/kitana/2.0.7/values.yaml b/incubator/keeweb/2.0.9/values.yaml similarity index 100% rename from incubator/kitana/2.0.7/values.yaml rename to incubator/keeweb/2.0.9/values.yaml diff --git a/incubator/kitana/2.0.7/CHANGELOG.md b/incubator/kitana/2.0.7/CHANGELOG.md deleted file mode 100644 index 616baae95e5..00000000000 --- a/incubator/kitana/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [kitana-2.0.7](https://github.com/truecharts/charts/compare/kitana-2.0.6...kitana-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [kitana-2.0.6](https://github.com/truecharts/charts/compare/kitana-2.0.5...kitana-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [kitana-2.0.5](https://github.com/truecharts/charts/compare/kitana-2.0.4...kitana-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [kitana-2.0.4](https://github.com/truecharts/charts/compare/kitana-2.0.3...kitana-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [kitana-2.0.3](https://github.com/truecharts/charts/compare/kitana-2.0.2...kitana-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - - - -## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) - - diff --git a/incubator/kitana/2.0.7/Chart.yaml b/incubator/kitana/2.0.7/Chart.yaml deleted file mode 100644 index 6f2184f8993..00000000000 --- a/incubator/kitana/2.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - HomeAutomation - - Tools-Utilities - - MediaApp-Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: 'Kitana exposes your Plex plugin interfaces "to the outside world". It does that by authenticating against Plex.TV, then connecting to the Plex Media Server you tell it to, and essentially proxying the plugin UI. It has full PMS connection awareness and allows you to connect locally, remotely, or even via relay.' -home: https://truecharts.org/charts/incubator/kitana -icon: https://truecharts.org/img/hotlink-ok/chart-icons/kitana.png -keywords: - - kitana - - HomeAutomation - - Tools-Utilities - - MediaApp-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: kitana -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/kitana - - https://github.com/pannal/Kitana - - https://hub.docker.com/r/pannal/kitana/ -type: application -version: 2.0.7 diff --git a/incubator/kitana/2.0.7/app-changelog.md b/incubator/kitana/2.0.7/app-changelog.md deleted file mode 100644 index a65aeecbcc7..00000000000 --- a/incubator/kitana/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [kitana-2.0.7](https://github.com/truecharts/charts/compare/kitana-2.0.6...kitana-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/kitana/2.0.7/app-readme.md b/incubator/kitana/2.0.7/app-readme.md deleted file mode 100644 index 176df11c537..00000000000 --- a/incubator/kitana/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Kitana exposes your Plex plugin interfaces "to the outside world". It does that by authenticating against Plex.TV, then connecting to the Plex Media Server you tell it to, and essentially proxying the plugin UI. It has full PMS connection awareness and allows you to connect locally, remotely, or even via relay. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/kitana](https://truecharts.org/charts/incubator/kitana) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/kitana/2.0.7/questions.yaml b/incubator/kitana/2.0.7/questions.yaml deleted file mode 100644 index f9469215757..00000000000 --- a/incubator/kitana/2.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 31337 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path appdata" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/kitana/2.0.8/CHANGELOG.md b/incubator/kitana/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..8774706825f --- /dev/null +++ b/incubator/kitana/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [kitana-2.0.8](https://github.com/truecharts/charts/compare/kitana-2.0.7...kitana-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [kitana-2.0.7](https://github.com/truecharts/charts/compare/kitana-2.0.6...kitana-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [kitana-2.0.6](https://github.com/truecharts/charts/compare/kitana-2.0.5...kitana-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [kitana-2.0.5](https://github.com/truecharts/charts/compare/kitana-2.0.4...kitana-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [kitana-2.0.4](https://github.com/truecharts/charts/compare/kitana-2.0.3...kitana-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [kitana-2.0.3](https://github.com/truecharts/charts/compare/kitana-2.0.2...kitana-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) + + + + +## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) + + + + +## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) + + + + +## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) + + + + +## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) + + + + +## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) + + + + +## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) + + + + +## [kitana-2.0.2](https://github.com/truecharts/charts/compare/kitana-2.0.1...kitana-2.0.2) (2022-11-30) + + + diff --git a/incubator/kitana/2.0.8/Chart.yaml b/incubator/kitana/2.0.8/Chart.yaml new file mode 100644 index 00000000000..770da97240a --- /dev/null +++ b/incubator/kitana/2.0.8/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - HomeAutomation + - Tools-Utilities + - MediaApp-Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: 'Kitana exposes your Plex plugin interfaces "to the outside world". It does that by authenticating against Plex.TV, then connecting to the Plex Media Server you tell it to, and essentially proxying the plugin UI. It has full PMS connection awareness and allows you to connect locally, remotely, or even via relay.' +home: https://truecharts.org/charts/incubator/kitana +icon: https://truecharts.org/img/hotlink-ok/chart-icons/kitana.png +keywords: + - kitana + - HomeAutomation + - Tools-Utilities + - MediaApp-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: kitana +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/kitana + - https://hub.docker.com/pannal/kitana + - https://github.com/pannal/Kitana +type: application +version: 2.0.8 diff --git a/incubator/kitana/2.0.7/README.md b/incubator/kitana/2.0.8/README.md similarity index 100% rename from incubator/kitana/2.0.7/README.md rename to incubator/kitana/2.0.8/README.md diff --git a/incubator/kitana/2.0.8/app-changelog.md b/incubator/kitana/2.0.8/app-changelog.md new file mode 100644 index 00000000000..03da9f0386a --- /dev/null +++ b/incubator/kitana/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [kitana-2.0.8](https://github.com/truecharts/charts/compare/kitana-2.0.7...kitana-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/kitana/2.0.8/app-readme.md b/incubator/kitana/2.0.8/app-readme.md new file mode 100644 index 00000000000..600b176c831 --- /dev/null +++ b/incubator/kitana/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Kitana exposes your Plex plugin interfaces "to the outside world". It does that by authenticating against Plex.TV, then connecting to the Plex Media Server you tell it to, and essentially proxying the plugin UI. It has full PMS connection awareness and allows you to connect locally, remotely, or even via relay. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/kitana](https://truecharts.org/charts/incubator/kitana) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/lemur-cfssl/2.0.7/charts/common-11.1.2.tgz b/incubator/kitana/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/lemur-cfssl/2.0.7/charts/common-11.1.2.tgz rename to incubator/kitana/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/kitana/2.0.7/ix_values.yaml b/incubator/kitana/2.0.8/ix_values.yaml similarity index 100% rename from incubator/kitana/2.0.7/ix_values.yaml rename to incubator/kitana/2.0.8/ix_values.yaml diff --git a/incubator/kitana/2.0.8/questions.yaml b/incubator/kitana/2.0.8/questions.yaml new file mode 100644 index 00000000000..7c7a8da1a7f --- /dev/null +++ b/incubator/kitana/2.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 31337 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path appdata" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/kitana/2.0.7/templates/common.yaml b/incubator/kitana/2.0.8/templates/common.yaml similarity index 100% rename from incubator/kitana/2.0.7/templates/common.yaml rename to incubator/kitana/2.0.8/templates/common.yaml diff --git a/incubator/lemur-cfssl/2.0.7/values.yaml b/incubator/kitana/2.0.8/values.yaml similarity index 100% rename from incubator/lemur-cfssl/2.0.7/values.yaml rename to incubator/kitana/2.0.8/values.yaml diff --git a/incubator/lemur-cfssl/2.0.7/CHANGELOG.md b/incubator/lemur-cfssl/2.0.7/CHANGELOG.md deleted file mode 100644 index faadcc1bbec..00000000000 --- a/incubator/lemur-cfssl/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [lemur-cfssl-2.0.7](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.6...lemur-cfssl-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [lemur-cfssl-2.0.6](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.5...lemur-cfssl-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [lemur-cfssl-2.0.5](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.4...lemur-cfssl-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [lemur-cfssl-2.0.4](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.3...lemur-cfssl-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [lemur-cfssl-2.0.3](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.2...lemur-cfssl-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - - - -## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) - - diff --git a/incubator/lemur-cfssl/2.0.7/Chart.yaml b/incubator/lemur-cfssl/2.0.7/Chart.yaml deleted file mode 100644 index 6165dc05f4e..00000000000 --- a/incubator/lemur-cfssl/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Lemur manages TLS certificate creation. While not able to issue certificates itself, Lemur acts as a broker between CAs and environments providing a central portal for developers to issue TLS certificates with 'sane' defaults." -home: https://truecharts.org/charts/incubator/lemur-cfssl -icon: https://truecharts.org/img/hotlink-ok/chart-icons/lemur-cfssl.png -keywords: - - lemur-cfssl - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: lemur-cfssl -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/lemur-cfssl - - https://github.com/Netflix/lemur - - https://hub.docker.com/r/halianelf/lemur/ -type: application -version: 2.0.7 diff --git a/incubator/lemur-cfssl/2.0.7/app-changelog.md b/incubator/lemur-cfssl/2.0.7/app-changelog.md deleted file mode 100644 index e2775dc02a4..00000000000 --- a/incubator/lemur-cfssl/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [lemur-cfssl-2.0.7](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.6...lemur-cfssl-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/lemur-cfssl/2.0.7/app-readme.md b/incubator/lemur-cfssl/2.0.7/app-readme.md deleted file mode 100644 index db3e6d2065f..00000000000 --- a/incubator/lemur-cfssl/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Lemur manages TLS certificate creation. While not able to issue certificates itself, Lemur acts as a broker between CAs and environments providing a central portal for developers to issue TLS certificates with 'sane' defaults. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/lemur-cfssl](https://truecharts.org/charts/incubator/lemur-cfssl) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/lemur-cfssl/2.0.7/questions.yaml b/incubator/lemur-cfssl/2.0.7/questions.yaml deleted file mode 100644 index a670d9005b5..00000000000 --- a/incubator/lemur-cfssl/2.0.7/questions.yaml +++ /dev/null @@ -1,1550 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: config - label: "config Storage" - description: "Container Path config" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/lemur-cfssl/2.0.8/CHANGELOG.md b/incubator/lemur-cfssl/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..f1fe97ba9f8 --- /dev/null +++ b/incubator/lemur-cfssl/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [lemur-cfssl-2.0.8](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.7...lemur-cfssl-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [lemur-cfssl-2.0.7](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.6...lemur-cfssl-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [lemur-cfssl-2.0.6](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.5...lemur-cfssl-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [lemur-cfssl-2.0.5](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.4...lemur-cfssl-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [lemur-cfssl-2.0.4](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.3...lemur-cfssl-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [lemur-cfssl-2.0.3](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.2...lemur-cfssl-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) + + + + +## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) + + + + +## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) + + + + +## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) + + + + +## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) + + + + +## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) + + + + +## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) + + + + +## [lemur-cfssl-2.0.2](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.1...lemur-cfssl-2.0.2) (2022-11-30) + + + diff --git a/incubator/lemur-cfssl/2.0.8/Chart.yaml b/incubator/lemur-cfssl/2.0.8/Chart.yaml new file mode 100644 index 00000000000..e7379aa5b70 --- /dev/null +++ b/incubator/lemur-cfssl/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Lemur manages TLS certificate creation. While not able to issue certificates itself, Lemur acts as a broker between CAs and environments providing a central portal for developers to issue TLS certificates with 'sane' defaults." +home: https://truecharts.org/charts/incubator/lemur-cfssl +icon: https://truecharts.org/img/hotlink-ok/chart-icons/lemur-cfssl.png +keywords: + - lemur-cfssl + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: lemur-cfssl +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/lemur-cfssl + - https://hub.docker.com/halianelf/lemur + - https://github.com/Netflix/lemur +type: application +version: 2.0.8 diff --git a/incubator/lemur-cfssl/2.0.7/README.md b/incubator/lemur-cfssl/2.0.8/README.md similarity index 100% rename from incubator/lemur-cfssl/2.0.7/README.md rename to incubator/lemur-cfssl/2.0.8/README.md diff --git a/incubator/lemur-cfssl/2.0.8/app-changelog.md b/incubator/lemur-cfssl/2.0.8/app-changelog.md new file mode 100644 index 00000000000..44a737a9c37 --- /dev/null +++ b/incubator/lemur-cfssl/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [lemur-cfssl-2.0.8](https://github.com/truecharts/charts/compare/lemur-cfssl-2.0.7...lemur-cfssl-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/lemur-cfssl/2.0.8/app-readme.md b/incubator/lemur-cfssl/2.0.8/app-readme.md new file mode 100644 index 00000000000..6e6ef43f0e1 --- /dev/null +++ b/incubator/lemur-cfssl/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Lemur manages TLS certificate creation. While not able to issue certificates itself, Lemur acts as a broker between CAs and environments providing a central portal for developers to issue TLS certificates with 'sane' defaults. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/lemur-cfssl](https://truecharts.org/charts/incubator/lemur-cfssl) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/linkwallet/2.0.8/charts/common-11.1.2.tgz b/incubator/lemur-cfssl/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/linkwallet/2.0.8/charts/common-11.1.2.tgz rename to incubator/lemur-cfssl/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/lemur-cfssl/2.0.7/ix_values.yaml b/incubator/lemur-cfssl/2.0.8/ix_values.yaml similarity index 100% rename from incubator/lemur-cfssl/2.0.7/ix_values.yaml rename to incubator/lemur-cfssl/2.0.8/ix_values.yaml diff --git a/incubator/lemur-cfssl/2.0.8/questions.yaml b/incubator/lemur-cfssl/2.0.8/questions.yaml new file mode 100644 index 00000000000..c6df219ffa3 --- /dev/null +++ b/incubator/lemur-cfssl/2.0.8/questions.yaml @@ -0,0 +1,1550 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: config + label: "config Storage" + description: "Container Path config" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/lemur-cfssl/2.0.7/templates/common.yaml b/incubator/lemur-cfssl/2.0.8/templates/common.yaml similarity index 100% rename from incubator/lemur-cfssl/2.0.7/templates/common.yaml rename to incubator/lemur-cfssl/2.0.8/templates/common.yaml diff --git a/incubator/linkwallet/2.0.8/values.yaml b/incubator/lemur-cfssl/2.0.8/values.yaml similarity index 100% rename from incubator/linkwallet/2.0.8/values.yaml rename to incubator/lemur-cfssl/2.0.8/values.yaml diff --git a/incubator/linkwallet/2.0.8/CHANGELOG.md b/incubator/linkwallet/2.0.8/CHANGELOG.md deleted file mode 100644 index 4b1636c3151..00000000000 --- a/incubator/linkwallet/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [linkwallet-2.0.8](https://github.com/truecharts/charts/compare/linkwallet-2.0.7...linkwallet-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [linkwallet-2.0.7](https://github.com/truecharts/charts/compare/linkwallet-2.0.6...linkwallet-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [linkwallet-2.0.6](https://github.com/truecharts/charts/compare/linkwallet-2.0.5...linkwallet-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [linkwallet-2.0.5](https://github.com/truecharts/charts/compare/linkwallet-2.0.4...linkwallet-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [linkwallet-2.0.4](https://github.com/truecharts/charts/compare/linkwallet-2.0.3...linkwallet-2.0.4) (2022-12-18) - -### Chore - -- update container image tccr.io/truecharts/linkwallet to v0.0.36 - - - - -## [linkwallet-2.0.3](https://github.com/truecharts/charts/compare/linkwallet-2.0.2...linkwallet-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) - - - - -## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) - - - - -## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) - - - - -## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) - - - - -## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) - - - - -## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) - - - - -## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) - - - - -## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) - - - diff --git a/incubator/linkwallet/2.0.8/Chart.yaml b/incubator/linkwallet/2.0.8/Chart.yaml deleted file mode 100644 index 0cbfec86a8b..00000000000 --- a/incubator/linkwallet/2.0.8/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "0.0.36" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: A self-hosted bookmark database with full-text page content search. -home: https://truecharts.org/charts/incubator/linkwallet -icon: https://truecharts.org/img/hotlink-ok/chart-icons/linkwallet.png -keywords: - - bookmarks -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: linkwallet -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/linkwallet - - https://github.com/tardisx/linkwallet -version: 2.0.8 -annotations: - truecharts.org/catagories: | - - bookmarks - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/linkwallet/2.0.8/app-changelog.md b/incubator/linkwallet/2.0.8/app-changelog.md deleted file mode 100644 index c22ab1d3413..00000000000 --- a/incubator/linkwallet/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [linkwallet-2.0.8](https://github.com/truecharts/charts/compare/linkwallet-2.0.7...linkwallet-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/linkwallet/2.0.8/app-readme.md b/incubator/linkwallet/2.0.8/app-readme.md deleted file mode 100644 index fbc3432248a..00000000000 --- a/incubator/linkwallet/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A self-hosted bookmark database with full-text page content search. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/linkwallet](https://truecharts.org/charts/incubator/linkwallet) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/linkwallet/2.0.8/questions.yaml b/incubator/linkwallet/2.0.8/questions.yaml deleted file mode 100644 index 1d09d1108d3..00000000000 --- a/incubator/linkwallet/2.0.8/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10353 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: Data Storage - description: Data Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/linkwallet/2.0.9/CHANGELOG.md b/incubator/linkwallet/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..ac9ce0901bf --- /dev/null +++ b/incubator/linkwallet/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [linkwallet-2.0.9](https://github.com/truecharts/charts/compare/linkwallet-2.0.8...linkwallet-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [linkwallet-2.0.8](https://github.com/truecharts/charts/compare/linkwallet-2.0.7...linkwallet-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [linkwallet-2.0.7](https://github.com/truecharts/charts/compare/linkwallet-2.0.6...linkwallet-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [linkwallet-2.0.6](https://github.com/truecharts/charts/compare/linkwallet-2.0.5...linkwallet-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [linkwallet-2.0.5](https://github.com/truecharts/charts/compare/linkwallet-2.0.4...linkwallet-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [linkwallet-2.0.4](https://github.com/truecharts/charts/compare/linkwallet-2.0.3...linkwallet-2.0.4) (2022-12-18) + +### Chore + +- update container image tccr.io/truecharts/linkwallet to v0.0.36 + + + + +## [linkwallet-2.0.3](https://github.com/truecharts/charts/compare/linkwallet-2.0.2...linkwallet-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) + + + + +## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) + + + + +## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) + + + + +## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) + + + + +## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) + + + + +## [linkwallet-2.0.2](https://github.com/truecharts/charts/compare/linkwallet-2.0.1...linkwallet-2.0.2) (2022-11-30) + + + + diff --git a/incubator/linkwallet/2.0.9/Chart.yaml b/incubator/linkwallet/2.0.9/Chart.yaml new file mode 100644 index 00000000000..078f9244a39 --- /dev/null +++ b/incubator/linkwallet/2.0.9/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "0.0.36" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: A self-hosted bookmark database with full-text page content search. +home: https://truecharts.org/charts/incubator/linkwallet +icon: https://truecharts.org/img/hotlink-ok/chart-icons/linkwallet.png +keywords: + - bookmarks +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: linkwallet +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/linkwallet + - https://hub.docker.com/tardisx/linkwallet + - https://github.com/tardisx/linkwallet +version: 2.0.9 +annotations: + truecharts.org/catagories: | + - bookmarks + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/linkwallet/2.0.8/README.md b/incubator/linkwallet/2.0.9/README.md similarity index 100% rename from incubator/linkwallet/2.0.8/README.md rename to incubator/linkwallet/2.0.9/README.md diff --git a/incubator/linkwallet/2.0.9/app-changelog.md b/incubator/linkwallet/2.0.9/app-changelog.md new file mode 100644 index 00000000000..638e5a61579 --- /dev/null +++ b/incubator/linkwallet/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [linkwallet-2.0.9](https://github.com/truecharts/charts/compare/linkwallet-2.0.8...linkwallet-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/linkwallet/2.0.9/app-readme.md b/incubator/linkwallet/2.0.9/app-readme.md new file mode 100644 index 00000000000..e067c9b05d0 --- /dev/null +++ b/incubator/linkwallet/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +A self-hosted bookmark database with full-text page content search. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/linkwallet](https://truecharts.org/charts/incubator/linkwallet) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/livebook/2.0.9/charts/common-11.1.2.tgz b/incubator/linkwallet/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/livebook/2.0.9/charts/common-11.1.2.tgz rename to incubator/linkwallet/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/linkwallet/2.0.8/ix_values.yaml b/incubator/linkwallet/2.0.9/ix_values.yaml similarity index 100% rename from incubator/linkwallet/2.0.8/ix_values.yaml rename to incubator/linkwallet/2.0.9/ix_values.yaml diff --git a/incubator/linkwallet/2.0.9/questions.yaml b/incubator/linkwallet/2.0.9/questions.yaml new file mode 100644 index 00000000000..193707edc1e --- /dev/null +++ b/incubator/linkwallet/2.0.9/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10353 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: Data Storage + description: Data Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/linkwallet/2.0.8/templates/common.yaml b/incubator/linkwallet/2.0.9/templates/common.yaml similarity index 100% rename from incubator/linkwallet/2.0.8/templates/common.yaml rename to incubator/linkwallet/2.0.9/templates/common.yaml diff --git a/incubator/livebook/2.0.9/values.yaml b/incubator/linkwallet/2.0.9/values.yaml similarity index 100% rename from incubator/livebook/2.0.9/values.yaml rename to incubator/linkwallet/2.0.9/values.yaml diff --git a/incubator/livebook/2.0.10/CHANGELOG.md b/incubator/livebook/2.0.10/CHANGELOG.md new file mode 100644 index 00000000000..83142dcb9f8 --- /dev/null +++ b/incubator/livebook/2.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [livebook-2.0.10](https://github.com/truecharts/charts/compare/livebook-2.0.9...livebook-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [livebook-2.0.9](https://github.com/truecharts/charts/compare/livebook-2.0.8...livebook-2.0.9) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/livebook to latest + + + + +## [livebook-2.0.8](https://github.com/truecharts/charts/compare/livebook-2.0.7...livebook-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [livebook-2.0.7](https://github.com/truecharts/charts/compare/livebook-2.0.6...livebook-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [livebook-2.0.6](https://github.com/truecharts/charts/compare/livebook-2.0.5...livebook-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [livebook-2.0.5](https://github.com/truecharts/charts/compare/livebook-2.0.4...livebook-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [livebook-2.0.4](https://github.com/truecharts/charts/compare/livebook-2.0.3...livebook-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [livebook-2.0.3](https://github.com/truecharts/charts/compare/livebook-2.0.2...livebook-2.0.3) (2022-12-09) + +### Chore + +- update container image tccr.io/truecharts/livebook to latest + + + + +## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) + + + + +## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) + + + + +## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) + + + + +## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) + + + + +## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) diff --git a/incubator/livebook/2.0.10/Chart.yaml b/incubator/livebook/2.0.10/Chart.yaml new file mode 100644 index 00000000000..c03972b7909 --- /dev/null +++ b/incubator/livebook/2.0.10/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Livebook is a web application for writing interactive and collaborative code notebooks for Elixir +home: https://truecharts.org/charts/incubator/livebook +icon: https://truecharts.org/img/hotlink-ok/chart-icons/livebook.png +keywords: + - livebook + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: livebook +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/livebook + - https://hub.docker.com/livebook/livebook + - https://livebook.dev/ +type: application +version: 2.0.10 diff --git a/incubator/livebook/2.0.9/README.md b/incubator/livebook/2.0.10/README.md similarity index 100% rename from incubator/livebook/2.0.9/README.md rename to incubator/livebook/2.0.10/README.md diff --git a/incubator/livebook/2.0.10/app-changelog.md b/incubator/livebook/2.0.10/app-changelog.md new file mode 100644 index 00000000000..cf931dd405a --- /dev/null +++ b/incubator/livebook/2.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [livebook-2.0.10](https://github.com/truecharts/charts/compare/livebook-2.0.9...livebook-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/livebook/2.0.9/app-readme.md b/incubator/livebook/2.0.10/app-readme.md similarity index 100% rename from incubator/livebook/2.0.9/app-readme.md rename to incubator/livebook/2.0.10/app-readme.md diff --git a/incubator/livestreamdvr/2.0.8/charts/common-11.1.2.tgz b/incubator/livebook/2.0.10/charts/common-11.1.2.tgz similarity index 100% rename from incubator/livestreamdvr/2.0.8/charts/common-11.1.2.tgz rename to incubator/livebook/2.0.10/charts/common-11.1.2.tgz diff --git a/incubator/livebook/2.0.9/ix_values.yaml b/incubator/livebook/2.0.10/ix_values.yaml similarity index 100% rename from incubator/livebook/2.0.9/ix_values.yaml rename to incubator/livebook/2.0.10/ix_values.yaml diff --git a/incubator/livebook/2.0.10/questions.yaml b/incubator/livebook/2.0.10/questions.yaml new file mode 100644 index 00000000000..262f8dc57b3 --- /dev/null +++ b/incubator/livebook/2.0.10/questions.yaml @@ -0,0 +1,1883 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: LIVEBOOK_PASSWORD + label: "LIVEBOOK_PASSWORD" + description: "Password needed to access livebook (must be at least 12 characters)" + schema: + type: string + default: "livebookiscool" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8787 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Where livebook will save notebooks" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/livebook/2.0.9/templates/common.yaml b/incubator/livebook/2.0.10/templates/common.yaml similarity index 100% rename from incubator/livebook/2.0.9/templates/common.yaml rename to incubator/livebook/2.0.10/templates/common.yaml diff --git a/incubator/livestreamdvr/2.0.8/values.yaml b/incubator/livebook/2.0.10/values.yaml similarity index 100% rename from incubator/livestreamdvr/2.0.8/values.yaml rename to incubator/livebook/2.0.10/values.yaml diff --git a/incubator/livebook/2.0.9/CHANGELOG.md b/incubator/livebook/2.0.9/CHANGELOG.md deleted file mode 100644 index 1343fa431b6..00000000000 --- a/incubator/livebook/2.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [livebook-2.0.9](https://github.com/truecharts/charts/compare/livebook-2.0.8...livebook-2.0.9) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/livebook to latest - - - - -## [livebook-2.0.8](https://github.com/truecharts/charts/compare/livebook-2.0.7...livebook-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [livebook-2.0.7](https://github.com/truecharts/charts/compare/livebook-2.0.6...livebook-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [livebook-2.0.6](https://github.com/truecharts/charts/compare/livebook-2.0.5...livebook-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [livebook-2.0.5](https://github.com/truecharts/charts/compare/livebook-2.0.4...livebook-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [livebook-2.0.4](https://github.com/truecharts/charts/compare/livebook-2.0.3...livebook-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [livebook-2.0.3](https://github.com/truecharts/charts/compare/livebook-2.0.2...livebook-2.0.3) (2022-12-09) - -### Chore - -- update container image tccr.io/truecharts/livebook to latest - - - - -## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) - - - - -## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) - - - - -## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) - - - - -## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) - - - - -## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) - - - - -## [livebook-2.0.2](https://github.com/truecharts/charts/compare/livebook-2.0.1...livebook-2.0.2) (2022-11-30) - - - - diff --git a/incubator/livebook/2.0.9/Chart.yaml b/incubator/livebook/2.0.9/Chart.yaml deleted file mode 100644 index c71756cc967..00000000000 --- a/incubator/livebook/2.0.9/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Livebook is a web application for writing interactive and collaborative code notebooks for Elixir -home: https://truecharts.org/charts/incubator/livebook -icon: https://truecharts.org/img/hotlink-ok/chart-icons/livebook.png -keywords: - - livebook - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: livebook -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/livebook - - https://livebook.dev/ - - https://hub.docker.com/r/livebook/livebook -type: application -version: 2.0.9 diff --git a/incubator/livebook/2.0.9/app-changelog.md b/incubator/livebook/2.0.9/app-changelog.md deleted file mode 100644 index 003ea95e769..00000000000 --- a/incubator/livebook/2.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [livebook-2.0.9](https://github.com/truecharts/charts/compare/livebook-2.0.8...livebook-2.0.9) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/livebook to latest - - \ No newline at end of file diff --git a/incubator/livebook/2.0.9/questions.yaml b/incubator/livebook/2.0.9/questions.yaml deleted file mode 100644 index c3da54ade1c..00000000000 --- a/incubator/livebook/2.0.9/questions.yaml +++ /dev/null @@ -1,1842 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: LIVEBOOK_PASSWORD - label: "LIVEBOOK_PASSWORD" - description: "Password needed to access livebook (must be at least 12 characters)" - schema: - type: string - default: "livebookiscool" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8787 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Where livebook will save notebooks" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/livestreamdvr/2.0.8/CHANGELOG.md b/incubator/livestreamdvr/2.0.8/CHANGELOG.md deleted file mode 100644 index 604f9124f3d..00000000000 --- a/incubator/livestreamdvr/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [livestreamdvr-2.0.8](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.7...livestreamdvr-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [livestreamdvr-2.0.7](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.6...livestreamdvr-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [livestreamdvr-2.0.6](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.5...livestreamdvr-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [livestreamdvr-2.0.5](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.4...livestreamdvr-2.0.5) (2022-12-24) - -### Chore - -- pin dependencies ([#5688](https://github.com/truecharts/charts/issues/5688)) - - - - -## [livestreamdvr-2.0.4](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.3...livestreamdvr-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [livestreamdvr-2.0.3](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.2...livestreamdvr-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) - - - - -## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) - - - - -## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) - - - - -## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) - - - - -## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) - - - - -## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) - - - - -## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) - - - - -## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) - - - diff --git a/incubator/livestreamdvr/2.0.8/Chart.yaml b/incubator/livestreamdvr/2.0.8/Chart.yaml deleted file mode 100644 index 26a6a56c4a4..00000000000 --- a/incubator/livestreamdvr/2.0.8/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Video -apiVersion: v2 -appVersion: "master" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "An automatic twitch recorder." -home: https://truecharts.org/charts/incubator/livestreamdvr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/livestreamdvr.png -keywords: - - livestreamdvr - - MediaApp-Video -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: livestreamdvr -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/livestreamdvr - - https://github.com/MrBrax/LiveStreamDVR - - https://hub.docker.com/r/mrbrax/twitchautomator/ -type: application -version: 2.0.8 diff --git a/incubator/livestreamdvr/2.0.8/app-changelog.md b/incubator/livestreamdvr/2.0.8/app-changelog.md deleted file mode 100644 index 8dbaa368360..00000000000 --- a/incubator/livestreamdvr/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [livestreamdvr-2.0.8](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.7...livestreamdvr-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/livestreamdvr/2.0.8/app-readme.md b/incubator/livestreamdvr/2.0.8/app-readme.md deleted file mode 100644 index 38741f42567..00000000000 --- a/incubator/livestreamdvr/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -An automatic twitch recorder. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/livestreamdvr](https://truecharts.org/charts/incubator/livestreamdvr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/livestreamdvr/2.0.8/questions.yaml b/incubator/livestreamdvr/2.0.8/questions.yaml deleted file mode 100644 index 67b0af50b7c..00000000000 --- a/incubator/livestreamdvr/2.0.8/questions.yaml +++ /dev/null @@ -1,2053 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: UMASK - label: "UMASK" - schema: - type: string - default: "022" - - variable: TCD_ENABLE_FILES_API - label: "TCD_ENABLE_FILES_API" - description: "May enable exploits." - schema: - type: string - default: "0" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8146 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: hostpath1 - label: "hostpath1 Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: hostpath2 - label: "hostpath2 Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: config - label: "config Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: hostpath4 - label: "hostpath4 Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/livestreamdvr/2.0.9/CHANGELOG.md b/incubator/livestreamdvr/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..665d43416b2 --- /dev/null +++ b/incubator/livestreamdvr/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [livestreamdvr-2.0.9](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.8...livestreamdvr-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [livestreamdvr-2.0.8](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.7...livestreamdvr-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [livestreamdvr-2.0.7](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.6...livestreamdvr-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [livestreamdvr-2.0.6](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.5...livestreamdvr-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [livestreamdvr-2.0.5](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.4...livestreamdvr-2.0.5) (2022-12-24) + +### Chore + +- pin dependencies ([#5688](https://github.com/truecharts/charts/issues/5688)) + + + + +## [livestreamdvr-2.0.4](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.3...livestreamdvr-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [livestreamdvr-2.0.3](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.2...livestreamdvr-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) + + + + +## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) + + + + +## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) + + + + +## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) + + + + +## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) + + + + +## [livestreamdvr-2.0.2](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.1...livestreamdvr-2.0.2) (2022-11-30) + + + + diff --git a/incubator/livestreamdvr/2.0.9/Chart.yaml b/incubator/livestreamdvr/2.0.9/Chart.yaml new file mode 100644 index 00000000000..76ea6b8f813 --- /dev/null +++ b/incubator/livestreamdvr/2.0.9/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Video +apiVersion: v2 +appVersion: "master" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "An automatic twitch recorder." +home: https://truecharts.org/charts/incubator/livestreamdvr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/livestreamdvr.png +keywords: + - livestreamdvr + - MediaApp-Video +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: livestreamdvr +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/livestreamdvr + - https://hub.docker.com/mrbrax/twitchautomator + - https://github.com/MrBrax/LiveStreamDVR +type: application +version: 2.0.9 diff --git a/incubator/livestreamdvr/2.0.8/README.md b/incubator/livestreamdvr/2.0.9/README.md similarity index 100% rename from incubator/livestreamdvr/2.0.8/README.md rename to incubator/livestreamdvr/2.0.9/README.md diff --git a/incubator/livestreamdvr/2.0.9/app-changelog.md b/incubator/livestreamdvr/2.0.9/app-changelog.md new file mode 100644 index 00000000000..c35e5021102 --- /dev/null +++ b/incubator/livestreamdvr/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [livestreamdvr-2.0.9](https://github.com/truecharts/charts/compare/livestreamdvr-2.0.8...livestreamdvr-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/livestreamdvr/2.0.9/app-readme.md b/incubator/livestreamdvr/2.0.9/app-readme.md new file mode 100644 index 00000000000..abcca6dc73f --- /dev/null +++ b/incubator/livestreamdvr/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +An automatic twitch recorder. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/livestreamdvr](https://truecharts.org/charts/incubator/livestreamdvr) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mailpile/2.0.7/charts/common-11.1.2.tgz b/incubator/livestreamdvr/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/mailpile/2.0.7/charts/common-11.1.2.tgz rename to incubator/livestreamdvr/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/livestreamdvr/2.0.8/ix_values.yaml b/incubator/livestreamdvr/2.0.9/ix_values.yaml similarity index 100% rename from incubator/livestreamdvr/2.0.8/ix_values.yaml rename to incubator/livestreamdvr/2.0.9/ix_values.yaml diff --git a/incubator/livestreamdvr/2.0.9/questions.yaml b/incubator/livestreamdvr/2.0.9/questions.yaml new file mode 100644 index 00000000000..ba8e4441bc3 --- /dev/null +++ b/incubator/livestreamdvr/2.0.9/questions.yaml @@ -0,0 +1,2094 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: UMASK + label: "UMASK" + schema: + type: string + default: "022" + - variable: TCD_ENABLE_FILES_API + label: "TCD_ENABLE_FILES_API" + description: "May enable exploits." + schema: + type: string + default: "0" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8146 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: hostpath1 + label: "hostpath1 Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostpath2 + label: "hostpath2 Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: config + label: "config Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostpath4 + label: "hostpath4 Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/livestreamdvr/2.0.8/templates/common.yaml b/incubator/livestreamdvr/2.0.9/templates/common.yaml similarity index 100% rename from incubator/livestreamdvr/2.0.8/templates/common.yaml rename to incubator/livestreamdvr/2.0.9/templates/common.yaml diff --git a/incubator/mailpile/2.0.7/values.yaml b/incubator/livestreamdvr/2.0.9/values.yaml similarity index 100% rename from incubator/mailpile/2.0.7/values.yaml rename to incubator/livestreamdvr/2.0.9/values.yaml diff --git a/incubator/mailpile/2.0.7/CHANGELOG.md b/incubator/mailpile/2.0.7/CHANGELOG.md deleted file mode 100644 index 70dae5ba1a8..00000000000 --- a/incubator/mailpile/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mailpile-2.0.7](https://github.com/truecharts/charts/compare/mailpile-2.0.6...mailpile-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mailpile-2.0.6](https://github.com/truecharts/charts/compare/mailpile-2.0.5...mailpile-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mailpile-2.0.5](https://github.com/truecharts/charts/compare/mailpile-2.0.4...mailpile-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mailpile-2.0.4](https://github.com/truecharts/charts/compare/mailpile-2.0.3...mailpile-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mailpile-2.0.3](https://github.com/truecharts/charts/compare/mailpile-2.0.2...mailpile-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - - - -## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) - - diff --git a/incubator/mailpile/2.0.7/Chart.yaml b/incubator/mailpile/2.0.7/Chart.yaml deleted file mode 100644 index 618ce73916b..00000000000 --- a/incubator/mailpile/2.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - - Network-Web - - Network-Messenger -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Mailpile is software, an e-mail client. It runs on your desktop or laptop computer and you interact with it by using your web browser. The goal of Mailpile is to allow people to send e-mail in a more secure and private manner than before. -home: https://truecharts.org/charts/incubator/mailpile -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mailpile.png -keywords: - - mailpile - - Productivity - - Network-Web - - Network-Messenger -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mailpile -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/mailpile - - https://www.mailpile.is/ - - https://hub.docker.com/r/rroemhild/mailpile/ -type: application -version: 2.0.7 diff --git a/incubator/mailpile/2.0.7/app-changelog.md b/incubator/mailpile/2.0.7/app-changelog.md deleted file mode 100644 index 58b83eb7b12..00000000000 --- a/incubator/mailpile/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mailpile-2.0.7](https://github.com/truecharts/charts/compare/mailpile-2.0.6...mailpile-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/mailpile/2.0.7/app-readme.md b/incubator/mailpile/2.0.7/app-readme.md deleted file mode 100644 index f468282b642..00000000000 --- a/incubator/mailpile/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Mailpile is software, an e-mail client. It runs on your desktop or laptop computer and you interact with it by using your web browser. The goal of Mailpile is to allow people to send e-mail in a more secure and private manner than before. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mailpile](https://truecharts.org/charts/incubator/mailpile) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mailpile/2.0.7/questions.yaml b/incubator/mailpile/2.0.7/questions.yaml deleted file mode 100644 index 2d43b58e5dc..00000000000 --- a/incubator/mailpile/2.0.7/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 33411 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: path1 - label: "path1 Storage" - description: "Container Path root.localshareMailpile" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: path2 - label: "path2 Storage" - description: "Container Path root.gnupg" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/mailpile/2.0.8/CHANGELOG.md b/incubator/mailpile/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..2d01cea9c5a --- /dev/null +++ b/incubator/mailpile/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mailpile-2.0.8](https://github.com/truecharts/charts/compare/mailpile-2.0.7...mailpile-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mailpile-2.0.7](https://github.com/truecharts/charts/compare/mailpile-2.0.6...mailpile-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mailpile-2.0.6](https://github.com/truecharts/charts/compare/mailpile-2.0.5...mailpile-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mailpile-2.0.5](https://github.com/truecharts/charts/compare/mailpile-2.0.4...mailpile-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mailpile-2.0.4](https://github.com/truecharts/charts/compare/mailpile-2.0.3...mailpile-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mailpile-2.0.3](https://github.com/truecharts/charts/compare/mailpile-2.0.2...mailpile-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) + + + + +## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) + + + + +## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) + + + + +## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) + + + + +## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) + + + + +## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) + + + + +## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) + + + + +## [mailpile-2.0.2](https://github.com/truecharts/charts/compare/mailpile-2.0.1...mailpile-2.0.2) (2022-11-30) + + + diff --git a/incubator/mailpile/2.0.8/Chart.yaml b/incubator/mailpile/2.0.8/Chart.yaml new file mode 100644 index 00000000000..2aa2fea7ef9 --- /dev/null +++ b/incubator/mailpile/2.0.8/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + - Network-Web + - Network-Messenger +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Mailpile is software, an e-mail client. It runs on your desktop or laptop computer and you interact with it by using your web browser. The goal of Mailpile is to allow people to send e-mail in a more secure and private manner than before. +home: https://truecharts.org/charts/incubator/mailpile +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mailpile.png +keywords: + - mailpile + - Productivity + - Network-Web + - Network-Messenger +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mailpile +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/mailpile + - https://hub.docker.com/rroemhild/mailpile + - https://www.mailpile.is/ +type: application +version: 2.0.8 diff --git a/incubator/mailpile/2.0.7/README.md b/incubator/mailpile/2.0.8/README.md similarity index 100% rename from incubator/mailpile/2.0.7/README.md rename to incubator/mailpile/2.0.8/README.md diff --git a/incubator/mailpile/2.0.8/app-changelog.md b/incubator/mailpile/2.0.8/app-changelog.md new file mode 100644 index 00000000000..c9aa64f9e1b --- /dev/null +++ b/incubator/mailpile/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mailpile-2.0.8](https://github.com/truecharts/charts/compare/mailpile-2.0.7...mailpile-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/mailpile/2.0.8/app-readme.md b/incubator/mailpile/2.0.8/app-readme.md new file mode 100644 index 00000000000..271e6e174a3 --- /dev/null +++ b/incubator/mailpile/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Mailpile is software, an e-mail client. It runs on your desktop or laptop computer and you interact with it by using your web browser. The goal of Mailpile is to allow people to send e-mail in a more secure and private manner than before. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mailpile](https://truecharts.org/charts/incubator/mailpile) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/maloja/2.0.7/charts/common-11.1.2.tgz b/incubator/mailpile/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/maloja/2.0.7/charts/common-11.1.2.tgz rename to incubator/mailpile/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/mailpile/2.0.7/ix_values.yaml b/incubator/mailpile/2.0.8/ix_values.yaml similarity index 100% rename from incubator/mailpile/2.0.7/ix_values.yaml rename to incubator/mailpile/2.0.8/ix_values.yaml diff --git a/incubator/mailpile/2.0.8/questions.yaml b/incubator/mailpile/2.0.8/questions.yaml new file mode 100644 index 00000000000..fde818f8d5c --- /dev/null +++ b/incubator/mailpile/2.0.8/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 33411 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: path1 + label: "path1 Storage" + description: "Container Path root.localshareMailpile" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: path2 + label: "path2 Storage" + description: "Container Path root.gnupg" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/mailpile/2.0.7/templates/common.yaml b/incubator/mailpile/2.0.8/templates/common.yaml similarity index 100% rename from incubator/mailpile/2.0.7/templates/common.yaml rename to incubator/mailpile/2.0.8/templates/common.yaml diff --git a/incubator/maloja/2.0.7/values.yaml b/incubator/mailpile/2.0.8/values.yaml similarity index 100% rename from incubator/maloja/2.0.7/values.yaml rename to incubator/mailpile/2.0.8/values.yaml diff --git a/incubator/maloja/2.0.7/CHANGELOG.md b/incubator/maloja/2.0.7/CHANGELOG.md deleted file mode 100644 index 61eac078722..00000000000 --- a/incubator/maloja/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [maloja-2.0.7](https://github.com/truecharts/charts/compare/maloja-2.0.6...maloja-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [maloja-2.0.6](https://github.com/truecharts/charts/compare/maloja-2.0.5...maloja-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [maloja-2.0.5](https://github.com/truecharts/charts/compare/maloja-2.0.4...maloja-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [maloja-2.0.4](https://github.com/truecharts/charts/compare/maloja-2.0.3...maloja-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [maloja-2.0.3](https://github.com/truecharts/charts/compare/maloja-2.0.2...maloja-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - - - -## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) - - diff --git a/incubator/maloja/2.0.7/Chart.yaml b/incubator/maloja/2.0.7/Chart.yaml deleted file mode 100644 index a06843b7a42..00000000000 --- a/incubator/maloja/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaServer-Music -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Self-hosted music scrobble database to create personal listening statistics and charts as a substitute for Last.fm / Libre.fm / GNU FM." -home: https://truecharts.org/charts/incubator/maloja -icon: https://truecharts.org/img/hotlink-ok/chart-icons/maloja.png -keywords: - - maloja - - MediaServer-Music -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: maloja -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/maloja - - https://maloja.krateng.ch/ - - https://hub.docker.com/r/krateng/maloja -type: application -version: 2.0.7 diff --git a/incubator/maloja/2.0.7/app-changelog.md b/incubator/maloja/2.0.7/app-changelog.md deleted file mode 100644 index df893bdaf2d..00000000000 --- a/incubator/maloja/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [maloja-2.0.7](https://github.com/truecharts/charts/compare/maloja-2.0.6...maloja-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/maloja/2.0.7/app-readme.md b/incubator/maloja/2.0.7/app-readme.md deleted file mode 100644 index 7871e22f895..00000000000 --- a/incubator/maloja/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Self-hosted music scrobble database to create personal listening statistics and charts as a substitute for Last.fm / Libre.fm / GNU FM. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/maloja](https://truecharts.org/charts/incubator/maloja) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/maloja/2.0.7/questions.yaml b/incubator/maloja/2.0.7/questions.yaml deleted file mode 100644 index 97b494d4db2..00000000000 --- a/incubator/maloja/2.0.7/questions.yaml +++ /dev/null @@ -1,1848 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: MALOJA_HOST - label: "MALOJA_HOST" - description: "Specifies to Maloja what address to listen on (should not change)" - schema: - type: string - default: "0.0.0.0" - - variable: MALOJA_DATA_DIRECTORY - label: "MALOJA_DATA_DIRECTORY" - description: "Specifies to Maloja which directory to use for dataconfiguration files" - schema: - type: string - default: "/config" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 42010 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Container Path config" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/maloja/2.0.8/CHANGELOG.md b/incubator/maloja/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..945ae56c2a8 --- /dev/null +++ b/incubator/maloja/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [maloja-2.0.8](https://github.com/truecharts/charts/compare/maloja-2.0.7...maloja-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [maloja-2.0.7](https://github.com/truecharts/charts/compare/maloja-2.0.6...maloja-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [maloja-2.0.6](https://github.com/truecharts/charts/compare/maloja-2.0.5...maloja-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [maloja-2.0.5](https://github.com/truecharts/charts/compare/maloja-2.0.4...maloja-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [maloja-2.0.4](https://github.com/truecharts/charts/compare/maloja-2.0.3...maloja-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [maloja-2.0.3](https://github.com/truecharts/charts/compare/maloja-2.0.2...maloja-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) + + + + +## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) + + + + +## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) + + + + +## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) + + + + +## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) + + + + +## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) + + + + +## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) + + + + +## [maloja-2.0.2](https://github.com/truecharts/charts/compare/maloja-2.0.1...maloja-2.0.2) (2022-11-30) + + + diff --git a/incubator/maloja/2.0.8/Chart.yaml b/incubator/maloja/2.0.8/Chart.yaml new file mode 100644 index 00000000000..4627e463465 --- /dev/null +++ b/incubator/maloja/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaServer-Music +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Self-hosted music scrobble database to create personal listening statistics and charts as a substitute for Last.fm / Libre.fm / GNU FM." +home: https://truecharts.org/charts/incubator/maloja +icon: https://truecharts.org/img/hotlink-ok/chart-icons/maloja.png +keywords: + - maloja + - MediaServer-Music +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: maloja +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/maloja + - https://hub.docker.com/krateng/maloja + - https://maloja.krateng.ch/ +type: application +version: 2.0.8 diff --git a/incubator/maloja/2.0.7/README.md b/incubator/maloja/2.0.8/README.md similarity index 100% rename from incubator/maloja/2.0.7/README.md rename to incubator/maloja/2.0.8/README.md diff --git a/incubator/maloja/2.0.8/app-changelog.md b/incubator/maloja/2.0.8/app-changelog.md new file mode 100644 index 00000000000..185a391c861 --- /dev/null +++ b/incubator/maloja/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [maloja-2.0.8](https://github.com/truecharts/charts/compare/maloja-2.0.7...maloja-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/maloja/2.0.8/app-readme.md b/incubator/maloja/2.0.8/app-readme.md new file mode 100644 index 00000000000..26babd3c2ff --- /dev/null +++ b/incubator/maloja/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Self-hosted music scrobble database to create personal listening statistics and charts as a substitute for Last.fm / Libre.fm / GNU FM. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/maloja](https://truecharts.org/charts/incubator/maloja) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mango/2.0.7/charts/common-11.1.2.tgz b/incubator/maloja/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/mango/2.0.7/charts/common-11.1.2.tgz rename to incubator/maloja/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/maloja/2.0.7/ix_values.yaml b/incubator/maloja/2.0.8/ix_values.yaml similarity index 100% rename from incubator/maloja/2.0.7/ix_values.yaml rename to incubator/maloja/2.0.8/ix_values.yaml diff --git a/incubator/maloja/2.0.8/questions.yaml b/incubator/maloja/2.0.8/questions.yaml new file mode 100644 index 00000000000..ccbf2c1e519 --- /dev/null +++ b/incubator/maloja/2.0.8/questions.yaml @@ -0,0 +1,1889 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: MALOJA_HOST + label: "MALOJA_HOST" + description: "Specifies to Maloja what address to listen on (should not change)" + schema: + type: string + default: "0.0.0.0" + - variable: MALOJA_DATA_DIRECTORY + label: "MALOJA_DATA_DIRECTORY" + description: "Specifies to Maloja which directory to use for dataconfiguration files" + schema: + type: string + default: "/config" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 42010 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "Container Path config" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/maloja/2.0.7/templates/common.yaml b/incubator/maloja/2.0.8/templates/common.yaml similarity index 100% rename from incubator/maloja/2.0.7/templates/common.yaml rename to incubator/maloja/2.0.8/templates/common.yaml diff --git a/incubator/mango/2.0.7/values.yaml b/incubator/maloja/2.0.8/values.yaml similarity index 100% rename from incubator/mango/2.0.7/values.yaml rename to incubator/maloja/2.0.8/values.yaml diff --git a/incubator/mango/2.0.7/CHANGELOG.md b/incubator/mango/2.0.7/CHANGELOG.md deleted file mode 100644 index 2e5b28bb194..00000000000 --- a/incubator/mango/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mango-2.0.7](https://github.com/truecharts/charts/compare/mango-2.0.6...mango-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mango-2.0.6](https://github.com/truecharts/charts/compare/mango-2.0.5...mango-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mango-2.0.5](https://github.com/truecharts/charts/compare/mango-2.0.4...mango-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mango-2.0.4](https://github.com/truecharts/charts/compare/mango-2.0.3...mango-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mango-2.0.3](https://github.com/truecharts/charts/compare/mango-2.0.2...mango-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - - - -## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) - - diff --git a/incubator/mango/2.0.7/Chart.yaml b/incubator/mango/2.0.7/Chart.yaml deleted file mode 100644 index cd743f41312..00000000000 --- a/incubator/mango/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Books -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Mango is a self-hosted manga server and reader. Its features include[br]\n" -home: https://truecharts.org/charts/incubator/mango -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mango.png -keywords: - - mango - - MediaApp-Books -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mango -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/mango - - https://github.com/hkalexling/mango - - https://hub.docker.com/r/hkalexling/mango -type: application -version: 2.0.7 diff --git a/incubator/mango/2.0.7/app-changelog.md b/incubator/mango/2.0.7/app-changelog.md deleted file mode 100644 index fca232b01b6..00000000000 --- a/incubator/mango/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mango-2.0.7](https://github.com/truecharts/charts/compare/mango-2.0.6...mango-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/mango/2.0.7/app-readme.md b/incubator/mango/2.0.7/app-readme.md deleted file mode 100644 index 64fec6046e9..00000000000 --- a/incubator/mango/2.0.7/app-readme.md +++ /dev/null @@ -1,9 +0,0 @@ -Mango is a self-hosted manga server and reader. Its features include[br] - - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mango](https://truecharts.org/charts/incubator/mango) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mango/2.0.7/questions.yaml b/incubator/mango/2.0.7/questions.yaml deleted file mode 100644 index 0989eef15d7..00000000000 --- a/incubator/mango/2.0.7/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 9000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Mango config" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: data - label: "data Storage" - description: "Manga appdata" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/mango/2.0.8/CHANGELOG.md b/incubator/mango/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..541c2375f89 --- /dev/null +++ b/incubator/mango/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mango-2.0.8](https://github.com/truecharts/charts/compare/mango-2.0.7...mango-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mango-2.0.7](https://github.com/truecharts/charts/compare/mango-2.0.6...mango-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mango-2.0.6](https://github.com/truecharts/charts/compare/mango-2.0.5...mango-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mango-2.0.5](https://github.com/truecharts/charts/compare/mango-2.0.4...mango-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mango-2.0.4](https://github.com/truecharts/charts/compare/mango-2.0.3...mango-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mango-2.0.3](https://github.com/truecharts/charts/compare/mango-2.0.2...mango-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) + + + + +## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) + + + + +## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) + + + + +## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) + + + + +## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) + + + + +## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) + + + + +## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) + + + + +## [mango-2.0.2](https://github.com/truecharts/charts/compare/mango-2.0.1...mango-2.0.2) (2022-11-30) + + + diff --git a/incubator/mango/2.0.8/Chart.yaml b/incubator/mango/2.0.8/Chart.yaml new file mode 100644 index 00000000000..00e18f7ed17 --- /dev/null +++ b/incubator/mango/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Books +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Mango is a self-hosted manga server and reader. Its features include[br]\n" +home: https://truecharts.org/charts/incubator/mango +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mango.png +keywords: + - mango + - MediaApp-Books +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mango +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/mango + - https://hub.docker.com/hkalexling/mango + - https://github.com/hkalexling/mango +type: application +version: 2.0.8 diff --git a/incubator/mango/2.0.7/README.md b/incubator/mango/2.0.8/README.md similarity index 100% rename from incubator/mango/2.0.7/README.md rename to incubator/mango/2.0.8/README.md diff --git a/incubator/mango/2.0.8/app-changelog.md b/incubator/mango/2.0.8/app-changelog.md new file mode 100644 index 00000000000..ec9627fed58 --- /dev/null +++ b/incubator/mango/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mango-2.0.8](https://github.com/truecharts/charts/compare/mango-2.0.7...mango-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/mango/2.0.8/app-readme.md b/incubator/mango/2.0.8/app-readme.md new file mode 100644 index 00000000000..f360a6ed80a --- /dev/null +++ b/incubator/mango/2.0.8/app-readme.md @@ -0,0 +1,9 @@ +Mango is a self-hosted manga server and reader. Its features include[br] + + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mango](https://truecharts.org/charts/incubator/mango) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mediaelch/2.0.7/charts/common-11.1.2.tgz b/incubator/mango/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/mediaelch/2.0.7/charts/common-11.1.2.tgz rename to incubator/mango/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/mango/2.0.7/ix_values.yaml b/incubator/mango/2.0.8/ix_values.yaml similarity index 100% rename from incubator/mango/2.0.7/ix_values.yaml rename to incubator/mango/2.0.8/ix_values.yaml diff --git a/incubator/mango/2.0.8/questions.yaml b/incubator/mango/2.0.8/questions.yaml new file mode 100644 index 00000000000..9651628495a --- /dev/null +++ b/incubator/mango/2.0.8/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "Mango config" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: "data Storage" + description: "Manga appdata" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/mango/2.0.7/templates/common.yaml b/incubator/mango/2.0.8/templates/common.yaml similarity index 100% rename from incubator/mango/2.0.7/templates/common.yaml rename to incubator/mango/2.0.8/templates/common.yaml diff --git a/incubator/mediaelch/2.0.7/values.yaml b/incubator/mango/2.0.8/values.yaml similarity index 100% rename from incubator/mediaelch/2.0.7/values.yaml rename to incubator/mango/2.0.8/values.yaml diff --git a/incubator/mediaelch/2.0.7/CHANGELOG.md b/incubator/mediaelch/2.0.7/CHANGELOG.md deleted file mode 100644 index 9b907de2ad6..00000000000 --- a/incubator/mediaelch/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mediaelch-2.0.7](https://github.com/truecharts/charts/compare/mediaelch-2.0.6...mediaelch-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mediaelch-2.0.6](https://github.com/truecharts/charts/compare/mediaelch-2.0.5...mediaelch-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mediaelch-2.0.5](https://github.com/truecharts/charts/compare/mediaelch-2.0.4...mediaelch-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mediaelch-2.0.4](https://github.com/truecharts/charts/compare/mediaelch-2.0.3...mediaelch-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mediaelch-2.0.3](https://github.com/truecharts/charts/compare/mediaelch-2.0.2...mediaelch-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - - - -## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) - - diff --git a/incubator/mediaelch/2.0.7/Chart.yaml b/incubator/mediaelch/2.0.7/Chart.yaml deleted file mode 100644 index d9346e3f3bf..00000000000 --- a/incubator/mediaelch/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools - - MediaApp-Video -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Mediaelch is a Tool to manage your movie and show libary regarding the metadata and artwork. -home: https://truecharts.org/charts/incubator/mediaelch -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mediaelch.png -keywords: - - mediaelch - - Tools - - MediaApp-Video -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mediaelch -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/mediaelch - - https://github.com/Komet/MediaElch - - https://hub.docker.com/repository/docker/masonxx/mediaelch -type: application -version: 2.0.7 diff --git a/incubator/mediaelch/2.0.7/app-changelog.md b/incubator/mediaelch/2.0.7/app-changelog.md deleted file mode 100644 index 35cb2d33b56..00000000000 --- a/incubator/mediaelch/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mediaelch-2.0.7](https://github.com/truecharts/charts/compare/mediaelch-2.0.6...mediaelch-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/mediaelch/2.0.7/app-readme.md b/incubator/mediaelch/2.0.7/app-readme.md deleted file mode 100644 index ace28705731..00000000000 --- a/incubator/mediaelch/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Mediaelch is a Tool to manage your movie and show libary regarding the metadata and artwork. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mediaelch](https://truecharts.org/charts/incubator/mediaelch) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mediaelch/2.0.7/questions.yaml b/incubator/mediaelch/2.0.7/questions.yaml deleted file mode 100644 index cbb19ba8c94..00000000000 --- a/incubator/mediaelch/2.0.7/questions.yaml +++ /dev/null @@ -1,1840 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: UMASK - label: "UMASK" - schema: - type: string - default: "000" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5800 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: mediaelch - label: "mediaelch Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/mediaelch/2.0.8/CHANGELOG.md b/incubator/mediaelch/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..e12bfb89d24 --- /dev/null +++ b/incubator/mediaelch/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mediaelch-2.0.8](https://github.com/truecharts/charts/compare/mediaelch-2.0.7...mediaelch-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mediaelch-2.0.7](https://github.com/truecharts/charts/compare/mediaelch-2.0.6...mediaelch-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mediaelch-2.0.6](https://github.com/truecharts/charts/compare/mediaelch-2.0.5...mediaelch-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mediaelch-2.0.5](https://github.com/truecharts/charts/compare/mediaelch-2.0.4...mediaelch-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mediaelch-2.0.4](https://github.com/truecharts/charts/compare/mediaelch-2.0.3...mediaelch-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mediaelch-2.0.3](https://github.com/truecharts/charts/compare/mediaelch-2.0.2...mediaelch-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) + + + + +## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) + + + + +## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) + + + + +## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) + + + + +## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) + + + + +## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) + + + + +## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) + + + + +## [mediaelch-2.0.2](https://github.com/truecharts/charts/compare/mediaelch-2.0.1...mediaelch-2.0.2) (2022-11-30) + + + diff --git a/incubator/mediaelch/2.0.8/Chart.yaml b/incubator/mediaelch/2.0.8/Chart.yaml new file mode 100644 index 00000000000..444f1327acd --- /dev/null +++ b/incubator/mediaelch/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools + - MediaApp-Video +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Mediaelch is a Tool to manage your movie and show libary regarding the metadata and artwork. +home: https://truecharts.org/charts/incubator/mediaelch +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mediaelch.png +keywords: + - mediaelch + - Tools + - MediaApp-Video +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mediaelch +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/mediaelch + - https://hub.docker.com/masonxx/mediaelch + - https://github.com/Komet/MediaElch +type: application +version: 2.0.8 diff --git a/incubator/mediaelch/2.0.7/README.md b/incubator/mediaelch/2.0.8/README.md similarity index 100% rename from incubator/mediaelch/2.0.7/README.md rename to incubator/mediaelch/2.0.8/README.md diff --git a/incubator/mediaelch/2.0.8/app-changelog.md b/incubator/mediaelch/2.0.8/app-changelog.md new file mode 100644 index 00000000000..efbf22e30ed --- /dev/null +++ b/incubator/mediaelch/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mediaelch-2.0.8](https://github.com/truecharts/charts/compare/mediaelch-2.0.7...mediaelch-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/mediaelch/2.0.8/app-readme.md b/incubator/mediaelch/2.0.8/app-readme.md new file mode 100644 index 00000000000..e23c073c0ef --- /dev/null +++ b/incubator/mediaelch/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Mediaelch is a Tool to manage your movie and show libary regarding the metadata and artwork. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mediaelch](https://truecharts.org/charts/incubator/mediaelch) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mediagoblin/2.0.7/charts/common-11.1.2.tgz b/incubator/mediaelch/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/mediagoblin/2.0.7/charts/common-11.1.2.tgz rename to incubator/mediaelch/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/mediaelch/2.0.7/ix_values.yaml b/incubator/mediaelch/2.0.8/ix_values.yaml similarity index 100% rename from incubator/mediaelch/2.0.7/ix_values.yaml rename to incubator/mediaelch/2.0.8/ix_values.yaml diff --git a/incubator/mediaelch/2.0.8/questions.yaml b/incubator/mediaelch/2.0.8/questions.yaml new file mode 100644 index 00000000000..8e8e9098fd3 --- /dev/null +++ b/incubator/mediaelch/2.0.8/questions.yaml @@ -0,0 +1,1881 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: UMASK + label: "UMASK" + schema: + type: string + default: "000" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5800 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: mediaelch + label: "mediaelch Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/mediaelch/2.0.7/templates/common.yaml b/incubator/mediaelch/2.0.8/templates/common.yaml similarity index 100% rename from incubator/mediaelch/2.0.7/templates/common.yaml rename to incubator/mediaelch/2.0.8/templates/common.yaml diff --git a/incubator/mediagoblin/2.0.7/values.yaml b/incubator/mediaelch/2.0.8/values.yaml similarity index 100% rename from incubator/mediagoblin/2.0.7/values.yaml rename to incubator/mediaelch/2.0.8/values.yaml diff --git a/incubator/mediagoblin/2.0.7/CHANGELOG.md b/incubator/mediagoblin/2.0.7/CHANGELOG.md deleted file mode 100644 index b79eb20e67b..00000000000 --- a/incubator/mediagoblin/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mediagoblin-2.0.7](https://github.com/truecharts/charts/compare/mediagoblin-2.0.6...mediagoblin-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mediagoblin-2.0.6](https://github.com/truecharts/charts/compare/mediagoblin-2.0.5...mediagoblin-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mediagoblin-2.0.5](https://github.com/truecharts/charts/compare/mediagoblin-2.0.4...mediagoblin-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mediagoblin-2.0.4](https://github.com/truecharts/charts/compare/mediagoblin-2.0.3...mediagoblin-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mediagoblin-2.0.3](https://github.com/truecharts/charts/compare/mediagoblin-2.0.2...mediagoblin-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - - - -## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) - - diff --git a/incubator/mediagoblin/2.0.7/Chart.yaml b/incubator/mediagoblin/2.0.7/Chart.yaml deleted file mode 100644 index f6e35a135b2..00000000000 --- a/incubator/mediagoblin/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Photos -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "MediaGoblin is a free software media publishing platform that anyone can run. You can think of it as a decentralized alternative to Flickr, YouTube, SoundCloud, etc. [br][br][b][u][span style='color: #ff9900;']Default user/password[/span][/u][/b][br]User: [B][u]admin[/B][/u][br]Password: [B][u]admin[/B][/u][/b]" -home: https://truecharts.org/charts/incubator/mediagoblin -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mediagoblin.png -keywords: - - mediagoblin - - MediaApp-Photos -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mediagoblin -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/mediagoblin - - https://mediagoblin.org/ - - https://hub.docker.com/r/mtlynch/mediagoblin/ -type: application -version: 2.0.7 diff --git a/incubator/mediagoblin/2.0.7/app-changelog.md b/incubator/mediagoblin/2.0.7/app-changelog.md deleted file mode 100644 index 081182884b7..00000000000 --- a/incubator/mediagoblin/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mediagoblin-2.0.7](https://github.com/truecharts/charts/compare/mediagoblin-2.0.6...mediagoblin-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/mediagoblin/2.0.7/app-readme.md b/incubator/mediagoblin/2.0.7/app-readme.md deleted file mode 100644 index 2f736333aef..00000000000 --- a/incubator/mediagoblin/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -MediaGoblin is a free software media publishing platform that anyone can run. You can think of it as a decentralized alternative to Flickr, YouTube, SoundCloud, etc. [br][br][b][u][span style='color: #ff9900;']Default user/password[/span][/u][/b][br]User: [B][u]admin[/B][/u][br]Password: [B][u]admin[/B][/u][/b] - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mediagoblin](https://truecharts.org/charts/incubator/mediagoblin) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mediagoblin/2.0.7/questions.yaml b/incubator/mediagoblin/2.0.7/questions.yaml deleted file mode 100644 index 537c729a642..00000000000 --- a/incubator/mediagoblin/2.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 6543 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: appdata - label: "appdata Storage" - description: "Appdata" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/mediagoblin/2.0.8/CHANGELOG.md b/incubator/mediagoblin/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..c842bbcb8a3 --- /dev/null +++ b/incubator/mediagoblin/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mediagoblin-2.0.8](https://github.com/truecharts/charts/compare/mediagoblin-2.0.7...mediagoblin-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mediagoblin-2.0.7](https://github.com/truecharts/charts/compare/mediagoblin-2.0.6...mediagoblin-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mediagoblin-2.0.6](https://github.com/truecharts/charts/compare/mediagoblin-2.0.5...mediagoblin-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mediagoblin-2.0.5](https://github.com/truecharts/charts/compare/mediagoblin-2.0.4...mediagoblin-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mediagoblin-2.0.4](https://github.com/truecharts/charts/compare/mediagoblin-2.0.3...mediagoblin-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mediagoblin-2.0.3](https://github.com/truecharts/charts/compare/mediagoblin-2.0.2...mediagoblin-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) + + + + +## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) + + + + +## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) + + + + +## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) + + + + +## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) + + + + +## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) + + + + +## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) + + + + +## [mediagoblin-2.0.2](https://github.com/truecharts/charts/compare/mediagoblin-2.0.1...mediagoblin-2.0.2) (2022-11-30) + + + diff --git a/incubator/mediagoblin/2.0.8/Chart.yaml b/incubator/mediagoblin/2.0.8/Chart.yaml new file mode 100644 index 00000000000..437557f9c68 --- /dev/null +++ b/incubator/mediagoblin/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Photos +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "MediaGoblin is a free software media publishing platform that anyone can run. You can think of it as a decentralized alternative to Flickr, YouTube, SoundCloud, etc. [br][br][b][u][span style='color: #ff9900;']Default user/password[/span][/u][/b][br]User: [B][u]admin[/B][/u][br]Password: [B][u]admin[/B][/u][/b]" +home: https://truecharts.org/charts/incubator/mediagoblin +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mediagoblin.png +keywords: + - mediagoblin + - MediaApp-Photos +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mediagoblin +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/mediagoblin + - https://hub.docker.com/mtlynch/mediagoblin + - https://mediagoblin.org/ +type: application +version: 2.0.8 diff --git a/incubator/mediagoblin/2.0.7/README.md b/incubator/mediagoblin/2.0.8/README.md similarity index 100% rename from incubator/mediagoblin/2.0.7/README.md rename to incubator/mediagoblin/2.0.8/README.md diff --git a/incubator/mediagoblin/2.0.8/app-changelog.md b/incubator/mediagoblin/2.0.8/app-changelog.md new file mode 100644 index 00000000000..78ef8bcb3fd --- /dev/null +++ b/incubator/mediagoblin/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mediagoblin-2.0.8](https://github.com/truecharts/charts/compare/mediagoblin-2.0.7...mediagoblin-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/mediagoblin/2.0.8/app-readme.md b/incubator/mediagoblin/2.0.8/app-readme.md new file mode 100644 index 00000000000..a851ee4cc56 --- /dev/null +++ b/incubator/mediagoblin/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +MediaGoblin is a free software media publishing platform that anyone can run. You can think of it as a decentralized alternative to Flickr, YouTube, SoundCloud, etc. [br][br][b][u][span style='color: #ff9900;']Default user/password[/span][/u][/b][br]User: [B][u]admin[/B][/u][br]Password: [B][u]admin[/B][/u][/b] + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mediagoblin](https://truecharts.org/charts/incubator/mediagoblin) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mineos/2.0.7/charts/common-11.1.2.tgz b/incubator/mediagoblin/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/mineos/2.0.7/charts/common-11.1.2.tgz rename to incubator/mediagoblin/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/mediagoblin/2.0.7/ix_values.yaml b/incubator/mediagoblin/2.0.8/ix_values.yaml similarity index 100% rename from incubator/mediagoblin/2.0.7/ix_values.yaml rename to incubator/mediagoblin/2.0.8/ix_values.yaml diff --git a/incubator/mediagoblin/2.0.8/questions.yaml b/incubator/mediagoblin/2.0.8/questions.yaml new file mode 100644 index 00000000000..91041143719 --- /dev/null +++ b/incubator/mediagoblin/2.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6543 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: appdata + label: "appdata Storage" + description: "Appdata" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/mediagoblin/2.0.7/templates/common.yaml b/incubator/mediagoblin/2.0.8/templates/common.yaml similarity index 100% rename from incubator/mediagoblin/2.0.7/templates/common.yaml rename to incubator/mediagoblin/2.0.8/templates/common.yaml diff --git a/incubator/mineos/2.0.7/values.yaml b/incubator/mediagoblin/2.0.8/values.yaml similarity index 100% rename from incubator/mineos/2.0.7/values.yaml rename to incubator/mediagoblin/2.0.8/values.yaml diff --git a/incubator/mineos/2.0.7/CHANGELOG.md b/incubator/mineos/2.0.7/CHANGELOG.md deleted file mode 100644 index b324b766e6d..00000000000 --- a/incubator/mineos/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mineos-2.0.7](https://github.com/truecharts/charts/compare/mineos-2.0.6...mineos-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mineos-2.0.6](https://github.com/truecharts/charts/compare/mineos-2.0.5...mineos-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mineos-2.0.5](https://github.com/truecharts/charts/compare/mineos-2.0.4...mineos-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mineos-2.0.4](https://github.com/truecharts/charts/compare/mineos-2.0.3...mineos-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mineos-2.0.3](https://github.com/truecharts/charts/compare/mineos-2.0.2...mineos-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - - - -## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) - - diff --git a/incubator/mineos/2.0.7/Chart.yaml b/incubator/mineos/2.0.7/Chart.yaml deleted file mode 100644 index a9acd2b2a7d..00000000000 --- a/incubator/mineos/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: mineos -version: 2.0.7 -appVersion: "latest" -description: MineOS is a server front-end to ease managing Minecraft administrative tasks. -type: application -deprecated: false -home: https://truecharts.org/charts/incubator/mineos -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mineos.png -keywords: - - gameserver - - minecraft -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/mineos - - https://hub.docker.com/r/hexparrot/mineos - - https://github.com/hexparrot/mineos-node -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - # condition: -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - games - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/mineos/2.0.7/app-changelog.md b/incubator/mineos/2.0.7/app-changelog.md deleted file mode 100644 index 1034f3b242a..00000000000 --- a/incubator/mineos/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mineos-2.0.7](https://github.com/truecharts/charts/compare/mineos-2.0.6...mineos-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/mineos/2.0.7/app-readme.md b/incubator/mineos/2.0.7/app-readme.md deleted file mode 100644 index 830c3f755ac..00000000000 --- a/incubator/mineos/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -MineOS is a server front-end to ease managing Minecraft administrative tasks. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mineos](https://truecharts.org/charts/incubator/mineos) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mineos/2.0.7/questions.yaml b/incubator/mineos/2.0.7/questions.yaml deleted file mode 100644 index e2222674662..00000000000 --- a/incubator/mineos/2.0.7/questions.yaml +++ /dev/null @@ -1,2332 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: USER_NAME - label: "USER NAME" - description: "User Login for the Web Interface." - schema: - type: string - required: true - default: "" - - variable: USER_PASSWORD - label: "USER PASSWORD" - description: "User Password for the Web Interface." - schema: - type: string - private: true - required: true - default: "" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: USE_HTTPS - label: "USE HTTPS" - description: "Should the web interface use HTTPS(true) or HTTP?(false)" - schema: - type: boolean - default: false - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10278 - required: true - - variable: minecraft-java-tcp - label: "Minecraft Java Service" - description: "Minecraft Java Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: mc-port-1-tcp - label: "MC Port 1 TCP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25565 - required: true - - variable: mc-port-2-tcp - label: "MC Port 2 TCP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25566 - required: true - - variable: mc-port-3-tcp - label: "MC Port 3 TCP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25567 - required: true - - variable: mc-port-4-tcp - label: "MC Port 4 TCP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25568 - required: true - - variable: mc-port-5-tcp - label: "MC Port 5 TCP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25569 - required: true - - variable: mc-port-6-tcp - label: "MC Port 6 TCP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25570 - required: true - - variable: minecraft-java-udp - label: "Minecraft Java Service" - description: "Minecraft Java Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: mc-port-1-udp - label: "MC Port 1 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25565 - required: true - - variable: mc-port-2-udp - label: "MC Port 2 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25566 - required: true - - variable: mc-port-3-udp - label: "MC Port 3 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25567 - required: true - - variable: mc-port-4-udp - label: "MC Port 4 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25568 - required: true - - variable: mc-port-5-udp - label: "MC Port 5 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25569 - required: true - - variable: mc-port-6-udp - label: "MC Port 6 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25570 - required: true - - variable: minecraft-br - label: "Minecraft Bedrock Service" - description: "Minecraft Bedrock Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: br-port-1-udp - label: "MC Port 1 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 19132 - required: true - - variable: br-port-2-udp - label: "MC Port 2 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 19133 - required: true - - variable: br-port-3-udp - label: "MC Port 3 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 19134 - required: true - - variable: br-port-4-udp - label: "MC Port 4 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 19135 - required: true - - variable: br-port-5-udp - label: "MC Port 5 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 19136 - required: true - - variable: br-port-6-udp - label: "MC Port 6 UDP" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 19137 - required: true - - variable: minecraft-rcon - label: "Minecraft RCON Service" - description: "Minecraft RCON Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: mc-rcon-1 - label: "MC Port 1 RCON" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25575 - required: true - - variable: mc-rcon-2 - label: "MC Port 2 RCON" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25576 - required: true - - variable: mc-rcon-3 - label: "MC Port 3 RCON" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25577 - required: true - - variable: mc-rcon-4 - label: "MC Port 4 RCON" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25578 - required: true - - variable: mc-rcon-5 - label: "MC Port 1 RCON" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25579 - required: true - - variable: mc-rcon-6 - label: "MC Port 6 RCON" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25580 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/mineos/2.0.8/CHANGELOG.md b/incubator/mineos/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..d0a8e9fdaef --- /dev/null +++ b/incubator/mineos/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mineos-2.0.8](https://github.com/truecharts/charts/compare/mineos-2.0.7...mineos-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mineos-2.0.7](https://github.com/truecharts/charts/compare/mineos-2.0.6...mineos-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mineos-2.0.6](https://github.com/truecharts/charts/compare/mineos-2.0.5...mineos-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mineos-2.0.5](https://github.com/truecharts/charts/compare/mineos-2.0.4...mineos-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mineos-2.0.4](https://github.com/truecharts/charts/compare/mineos-2.0.3...mineos-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mineos-2.0.3](https://github.com/truecharts/charts/compare/mineos-2.0.2...mineos-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) + + + + +## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) + + + + +## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) + + + + +## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) + + + + +## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) + + + + +## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) + + + + +## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) + + + + +## [mineos-2.0.2](https://github.com/truecharts/charts/compare/mineos-2.0.1...mineos-2.0.2) (2022-11-30) + + + diff --git a/incubator/mineos/2.0.8/Chart.yaml b/incubator/mineos/2.0.8/Chart.yaml new file mode 100644 index 00000000000..48a9153aa32 --- /dev/null +++ b/incubator/mineos/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: mineos +version: 2.0.8 +appVersion: "latest" +description: MineOS is a server front-end to ease managing Minecraft administrative tasks. +type: application +deprecated: false +home: https://truecharts.org/charts/incubator/mineos +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mineos.png +keywords: + - gameserver + - minecraft +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/mineos + - https://hub.docker.com/hexparrot/mineos + - https://github.com/hexparrot/mineos-node +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - games + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/mineos/2.0.7/README.md b/incubator/mineos/2.0.8/README.md similarity index 100% rename from incubator/mineos/2.0.7/README.md rename to incubator/mineos/2.0.8/README.md diff --git a/incubator/mineos/2.0.8/app-changelog.md b/incubator/mineos/2.0.8/app-changelog.md new file mode 100644 index 00000000000..42258b884a6 --- /dev/null +++ b/incubator/mineos/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mineos-2.0.8](https://github.com/truecharts/charts/compare/mineos-2.0.7...mineos-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/mineos/2.0.8/app-readme.md b/incubator/mineos/2.0.8/app-readme.md new file mode 100644 index 00000000000..ced9022dcc3 --- /dev/null +++ b/incubator/mineos/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +MineOS is a server front-end to ease managing Minecraft administrative tasks. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mineos](https://truecharts.org/charts/incubator/mineos) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/misskey/3.0.23/charts/common-11.1.2.tgz b/incubator/mineos/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/misskey/3.0.23/charts/common-11.1.2.tgz rename to incubator/mineos/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/mineos/2.0.7/ix_values.yaml b/incubator/mineos/2.0.8/ix_values.yaml similarity index 100% rename from incubator/mineos/2.0.7/ix_values.yaml rename to incubator/mineos/2.0.8/ix_values.yaml diff --git a/incubator/mineos/2.0.8/questions.yaml b/incubator/mineos/2.0.8/questions.yaml new file mode 100644 index 00000000000..fa0a6ec2883 --- /dev/null +++ b/incubator/mineos/2.0.8/questions.yaml @@ -0,0 +1,2373 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: USER_NAME + label: "USER NAME" + description: "User Login for the Web Interface." + schema: + type: string + required: true + default: "" + - variable: USER_PASSWORD + label: "USER PASSWORD" + description: "User Password for the Web Interface." + schema: + type: string + private: true + required: true + default: "" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: USE_HTTPS + label: "USE HTTPS" + description: "Should the web interface use HTTPS(true) or HTTP?(false)" + schema: + type: boolean + default: false + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10278 + required: true + - variable: minecraft-java-tcp + label: "Minecraft Java Service" + description: "Minecraft Java Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: mc-port-1-tcp + label: "MC Port 1 TCP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25565 + required: true + - variable: mc-port-2-tcp + label: "MC Port 2 TCP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25566 + required: true + - variable: mc-port-3-tcp + label: "MC Port 3 TCP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25567 + required: true + - variable: mc-port-4-tcp + label: "MC Port 4 TCP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25568 + required: true + - variable: mc-port-5-tcp + label: "MC Port 5 TCP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25569 + required: true + - variable: mc-port-6-tcp + label: "MC Port 6 TCP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25570 + required: true + - variable: minecraft-java-udp + label: "Minecraft Java Service" + description: "Minecraft Java Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: mc-port-1-udp + label: "MC Port 1 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25565 + required: true + - variable: mc-port-2-udp + label: "MC Port 2 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25566 + required: true + - variable: mc-port-3-udp + label: "MC Port 3 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25567 + required: true + - variable: mc-port-4-udp + label: "MC Port 4 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25568 + required: true + - variable: mc-port-5-udp + label: "MC Port 5 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25569 + required: true + - variable: mc-port-6-udp + label: "MC Port 6 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25570 + required: true + - variable: minecraft-br + label: "Minecraft Bedrock Service" + description: "Minecraft Bedrock Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: br-port-1-udp + label: "MC Port 1 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 19132 + required: true + - variable: br-port-2-udp + label: "MC Port 2 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 19133 + required: true + - variable: br-port-3-udp + label: "MC Port 3 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 19134 + required: true + - variable: br-port-4-udp + label: "MC Port 4 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 19135 + required: true + - variable: br-port-5-udp + label: "MC Port 5 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 19136 + required: true + - variable: br-port-6-udp + label: "MC Port 6 UDP" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 19137 + required: true + - variable: minecraft-rcon + label: "Minecraft RCON Service" + description: "Minecraft RCON Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: mc-rcon-1 + label: "MC Port 1 RCON" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25575 + required: true + - variable: mc-rcon-2 + label: "MC Port 2 RCON" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25576 + required: true + - variable: mc-rcon-3 + label: "MC Port 3 RCON" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25577 + required: true + - variable: mc-rcon-4 + label: "MC Port 4 RCON" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25578 + required: true + - variable: mc-rcon-5 + label: "MC Port 1 RCON" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25579 + required: true + - variable: mc-rcon-6 + label: "MC Port 6 RCON" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25580 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/mineos/2.0.7/templates/common.yaml b/incubator/mineos/2.0.8/templates/common.yaml similarity index 100% rename from incubator/mineos/2.0.7/templates/common.yaml rename to incubator/mineos/2.0.8/templates/common.yaml diff --git a/incubator/misskey/3.0.23/values.yaml b/incubator/mineos/2.0.8/values.yaml similarity index 100% rename from incubator/misskey/3.0.23/values.yaml rename to incubator/mineos/2.0.8/values.yaml diff --git a/incubator/misskey/3.0.23/CHANGELOG.md b/incubator/misskey/3.0.23/CHANGELOG.md deleted file mode 100644 index fff6100ad0e..00000000000 --- a/incubator/misskey/3.0.23/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [misskey-3.0.23](https://github.com/truecharts/charts/compare/misskey-3.0.22...misskey-3.0.23) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [misskey-3.0.22](https://github.com/truecharts/charts/compare/misskey-3.0.21...misskey-3.0.22) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [misskey-3.0.21](https://github.com/truecharts/charts/compare/misskey-3.0.20...misskey-3.0.21) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/misskey to v13.0.0 - - - - -## [misskey-3.0.20](https://github.com/truecharts/charts/compare/misskey-3.0.19...misskey-3.0.20) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [misskey-3.0.19](https://github.com/truecharts/charts/compare/misskey-3.0.18...misskey-3.0.19) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [misskey-3.0.18](https://github.com/truecharts/charts/compare/misskey-3.0.17...misskey-3.0.18) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [misskey-3.0.17](https://github.com/truecharts/charts/compare/misskey-3.0.16...misskey-3.0.17) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [misskey-3.0.16](https://github.com/truecharts/charts/compare/misskey-3.0.15...misskey-3.0.16) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [misskey-3.0.15](https://github.com/truecharts/charts/compare/misskey-3.0.14...misskey-3.0.15) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [misskey-3.0.14](https://github.com/truecharts/charts/compare/misskey-3.0.13...misskey-3.0.14) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [misskey-3.0.13](https://github.com/truecharts/charts/compare/misskey-3.0.12...misskey-3.0.13) (2022-12-18) - -### Chore diff --git a/incubator/misskey/3.0.23/Chart.yaml b/incubator/misskey/3.0.23/Chart.yaml deleted file mode 100644 index 740fd751aee..00000000000 --- a/incubator/misskey/3.0.23/Chart.yaml +++ /dev/null @@ -1,41 +0,0 @@ -apiVersion: v2 -appVersion: "13.0.0" -home: https://truecharts.org/charts/incubator/misskey -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -deprecated: false -description: "Misskey is an open source, decentralized social media platform that's free forever!" -icon: https://truecharts.org/img/hotlink-ok/chart-icons/misskey.png -keywords: - - Misskey - - Social - - Friend - - Social Media - - Fediverse - - ActivityPub -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: misskey -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/misskey - - https://github.com/misskey-dev/misskey/ - - https://hub.docker.com/r/misskey/misskey/ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Social -type: application -version: 3.0.23 diff --git a/incubator/misskey/3.0.23/app-changelog.md b/incubator/misskey/3.0.23/app-changelog.md deleted file mode 100644 index ffd1f21835b..00000000000 --- a/incubator/misskey/3.0.23/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [misskey-3.0.23](https://github.com/truecharts/charts/compare/misskey-3.0.22...misskey-3.0.23) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/incubator/misskey/3.0.24/CHANGELOG.md b/incubator/misskey/3.0.24/CHANGELOG.md new file mode 100644 index 00000000000..caf23b3d624 --- /dev/null +++ b/incubator/misskey/3.0.24/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [misskey-3.0.24](https://github.com/truecharts/charts/compare/misskey-3.0.23...misskey-3.0.24) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [misskey-3.0.23](https://github.com/truecharts/charts/compare/misskey-3.0.22...misskey-3.0.23) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [misskey-3.0.22](https://github.com/truecharts/charts/compare/misskey-3.0.21...misskey-3.0.22) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [misskey-3.0.21](https://github.com/truecharts/charts/compare/misskey-3.0.20...misskey-3.0.21) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/misskey to v13.0.0 + + + + +## [misskey-3.0.20](https://github.com/truecharts/charts/compare/misskey-3.0.19...misskey-3.0.20) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [misskey-3.0.19](https://github.com/truecharts/charts/compare/misskey-3.0.18...misskey-3.0.19) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [misskey-3.0.18](https://github.com/truecharts/charts/compare/misskey-3.0.17...misskey-3.0.18) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [misskey-3.0.17](https://github.com/truecharts/charts/compare/misskey-3.0.16...misskey-3.0.17) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [misskey-3.0.16](https://github.com/truecharts/charts/compare/misskey-3.0.15...misskey-3.0.16) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [misskey-3.0.15](https://github.com/truecharts/charts/compare/misskey-3.0.14...misskey-3.0.15) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [misskey-3.0.14](https://github.com/truecharts/charts/compare/misskey-3.0.13...misskey-3.0.14) (2022-12-19) + +### Chore diff --git a/incubator/misskey/3.0.24/Chart.yaml b/incubator/misskey/3.0.24/Chart.yaml new file mode 100644 index 00000000000..2cb801cd729 --- /dev/null +++ b/incubator/misskey/3.0.24/Chart.yaml @@ -0,0 +1,41 @@ +apiVersion: v2 +appVersion: "13.0.0" +home: https://truecharts.org/charts/incubator/misskey +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +deprecated: false +description: "Misskey is an open source, decentralized social media platform that's free forever!" +icon: https://truecharts.org/img/hotlink-ok/chart-icons/misskey.png +keywords: + - Misskey + - Social + - Friend + - Social Media + - Fediverse + - ActivityPub +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: misskey +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/misskey + - https://hub.docker.com/misskey/misskey + - https://github.com/misskey-dev/misskey/ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Social +type: application +version: 3.0.24 diff --git a/incubator/misskey/3.0.23/README.md b/incubator/misskey/3.0.24/README.md similarity index 100% rename from incubator/misskey/3.0.23/README.md rename to incubator/misskey/3.0.24/README.md diff --git a/incubator/misskey/3.0.24/app-changelog.md b/incubator/misskey/3.0.24/app-changelog.md new file mode 100644 index 00000000000..dea29c0a715 --- /dev/null +++ b/incubator/misskey/3.0.24/app-changelog.md @@ -0,0 +1,9 @@ + + +## [misskey-3.0.24](https://github.com/truecharts/charts/compare/misskey-3.0.23...misskey-3.0.24) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/misskey/3.0.23/app-readme.md b/incubator/misskey/3.0.24/app-readme.md similarity index 100% rename from incubator/misskey/3.0.23/app-readme.md rename to incubator/misskey/3.0.24/app-readme.md diff --git a/incubator/mocodo-mcd/2.0.9/charts/common-11.1.2.tgz b/incubator/misskey/3.0.24/charts/common-11.1.2.tgz similarity index 100% rename from incubator/mocodo-mcd/2.0.9/charts/common-11.1.2.tgz rename to incubator/misskey/3.0.24/charts/common-11.1.2.tgz diff --git a/incubator/misskey/3.0.23/charts/postgresql-11.0.22.tgz b/incubator/misskey/3.0.24/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/misskey/3.0.23/charts/postgresql-11.0.22.tgz rename to incubator/misskey/3.0.24/charts/postgresql-11.0.22.tgz diff --git a/incubator/misskey/3.0.23/charts/redis-5.0.29.tgz b/incubator/misskey/3.0.24/charts/redis-5.0.29.tgz similarity index 100% rename from incubator/misskey/3.0.23/charts/redis-5.0.29.tgz rename to incubator/misskey/3.0.24/charts/redis-5.0.29.tgz diff --git a/incubator/misskey/3.0.23/ix_values.yaml b/incubator/misskey/3.0.24/ix_values.yaml similarity index 100% rename from incubator/misskey/3.0.23/ix_values.yaml rename to incubator/misskey/3.0.24/ix_values.yaml diff --git a/incubator/misskey/3.0.23/questions.yaml b/incubator/misskey/3.0.24/questions.yaml similarity index 100% rename from incubator/misskey/3.0.23/questions.yaml rename to incubator/misskey/3.0.24/questions.yaml diff --git a/incubator/misskey/3.0.23/templates/_configmap.tpl b/incubator/misskey/3.0.24/templates/_configmap.tpl similarity index 100% rename from incubator/misskey/3.0.23/templates/_configmap.tpl rename to incubator/misskey/3.0.24/templates/_configmap.tpl diff --git a/incubator/misskey/3.0.23/templates/common.yaml b/incubator/misskey/3.0.24/templates/common.yaml similarity index 100% rename from incubator/misskey/3.0.23/templates/common.yaml rename to incubator/misskey/3.0.24/templates/common.yaml diff --git a/incubator/mocodo-mcd/2.0.9/values.yaml b/incubator/misskey/3.0.24/values.yaml similarity index 100% rename from incubator/mocodo-mcd/2.0.9/values.yaml rename to incubator/misskey/3.0.24/values.yaml diff --git a/incubator/mocodo-mcd/2.0.10/CHANGELOG.md b/incubator/mocodo-mcd/2.0.10/CHANGELOG.md new file mode 100644 index 00000000000..af37ae817c4 --- /dev/null +++ b/incubator/mocodo-mcd/2.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mocodo-mcd-2.0.10](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.9...mocodo-mcd-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mocodo-mcd-2.0.9](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.8...mocodo-mcd-2.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mocodo-mcd-2.0.8](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.7...mocodo-mcd-2.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mocodo-mcd-2.0.7](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.6...mocodo-mcd-2.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mocodo-mcd-2.0.6](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.5...mocodo-mcd-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mocodo-mcd-2.0.5](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.4...mocodo-mcd-2.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) + + + + +## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) + + + + +## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) + + + + +## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) + + + + +## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) + +### Chore diff --git a/incubator/mocodo-mcd/2.0.10/Chart.yaml b/incubator/mocodo-mcd/2.0.10/Chart.yaml new file mode 100644 index 00000000000..257bf9b5b08 --- /dev/null +++ b/incubator/mocodo-mcd/2.0.10/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Mocodo est un logiciel d'aide l'enseignement et la conception des bases de donnes relationnelles." +home: https://truecharts.org/charts/incubator/mocodo-mcd +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mocodo-mcd.png +keywords: + - mocodo-mcd + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mocodo-mcd +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/mocodo-mcd + - https://hub.docker.com/olprog/mocodo + - https://rawgit.com/laowantong/mocodo/master/doc/fr_refman.html#utiliser_mocodo_en_ligne_de_commande +type: application +version: 2.0.10 diff --git a/incubator/mocodo-mcd/2.0.9/README.md b/incubator/mocodo-mcd/2.0.10/README.md similarity index 100% rename from incubator/mocodo-mcd/2.0.9/README.md rename to incubator/mocodo-mcd/2.0.10/README.md diff --git a/incubator/mocodo-mcd/2.0.10/app-changelog.md b/incubator/mocodo-mcd/2.0.10/app-changelog.md new file mode 100644 index 00000000000..27ecec4c00f --- /dev/null +++ b/incubator/mocodo-mcd/2.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mocodo-mcd-2.0.10](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.9...mocodo-mcd-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/mocodo-mcd/2.0.10/app-readme.md b/incubator/mocodo-mcd/2.0.10/app-readme.md new file mode 100644 index 00000000000..97c5b2f5fd4 --- /dev/null +++ b/incubator/mocodo-mcd/2.0.10/app-readme.md @@ -0,0 +1,8 @@ +Mocodo est un logiciel d'aide l'enseignement et la conception des bases de donnes relationnelles. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mocodo-mcd](https://truecharts.org/charts/incubator/mocodo-mcd) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mojopaste/2.0.7/charts/common-11.1.2.tgz b/incubator/mocodo-mcd/2.0.10/charts/common-11.1.2.tgz similarity index 100% rename from incubator/mojopaste/2.0.7/charts/common-11.1.2.tgz rename to incubator/mocodo-mcd/2.0.10/charts/common-11.1.2.tgz diff --git a/incubator/mocodo-mcd/2.0.9/ix_values.yaml b/incubator/mocodo-mcd/2.0.10/ix_values.yaml similarity index 100% rename from incubator/mocodo-mcd/2.0.9/ix_values.yaml rename to incubator/mocodo-mcd/2.0.10/ix_values.yaml diff --git a/incubator/mocodo-mcd/2.0.10/questions.yaml b/incubator/mocodo-mcd/2.0.10/questions.yaml new file mode 100644 index 00000000000..2b1866e4c04 --- /dev/null +++ b/incubator/mocodo-mcd/2.0.10/questions.yaml @@ -0,0 +1,1869 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8888 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: "path Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/mocodo-mcd/2.0.9/templates/common.yaml b/incubator/mocodo-mcd/2.0.10/templates/common.yaml similarity index 100% rename from incubator/mocodo-mcd/2.0.9/templates/common.yaml rename to incubator/mocodo-mcd/2.0.10/templates/common.yaml diff --git a/incubator/mojopaste/2.0.7/values.yaml b/incubator/mocodo-mcd/2.0.10/values.yaml similarity index 100% rename from incubator/mojopaste/2.0.7/values.yaml rename to incubator/mocodo-mcd/2.0.10/values.yaml diff --git a/incubator/mocodo-mcd/2.0.9/CHANGELOG.md b/incubator/mocodo-mcd/2.0.9/CHANGELOG.md deleted file mode 100644 index c2a769871ce..00000000000 --- a/incubator/mocodo-mcd/2.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mocodo-mcd-2.0.9](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.8...mocodo-mcd-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mocodo-mcd-2.0.8](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.7...mocodo-mcd-2.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mocodo-mcd-2.0.7](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.6...mocodo-mcd-2.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mocodo-mcd-2.0.6](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.5...mocodo-mcd-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mocodo-mcd-2.0.5](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.4...mocodo-mcd-2.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) - - - - -## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) - - - - -## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) - - - - -## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) - - - - -## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/mocodo-mcd to latest ([#4919](https://github.com/truecharts/charts/issues/4919)) - - - - -## [mocodo-mcd-2.0.4](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.2...mocodo-mcd-2.0.4) (2022-11-30) - -### Chore diff --git a/incubator/mocodo-mcd/2.0.9/Chart.yaml b/incubator/mocodo-mcd/2.0.9/Chart.yaml deleted file mode 100644 index 007de83e9a1..00000000000 --- a/incubator/mocodo-mcd/2.0.9/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Mocodo est un logiciel d'aide l'enseignement et la conception des bases de donnes relationnelles." -home: https://truecharts.org/charts/incubator/mocodo-mcd -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mocodo-mcd.png -keywords: - - mocodo-mcd - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mocodo-mcd -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/mocodo-mcd - - https://rawgit.com/laowantong/mocodo/master/doc/fr_refman.html#utiliser_mocodo_en_ligne_de_commande - - https://hub.docker.com/r/olprog/mocodo -type: application -version: 2.0.9 diff --git a/incubator/mocodo-mcd/2.0.9/app-changelog.md b/incubator/mocodo-mcd/2.0.9/app-changelog.md deleted file mode 100644 index 3f7322f577f..00000000000 --- a/incubator/mocodo-mcd/2.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mocodo-mcd-2.0.9](https://github.com/truecharts/charts/compare/mocodo-mcd-2.0.8...mocodo-mcd-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/mocodo-mcd/2.0.9/app-readme.md b/incubator/mocodo-mcd/2.0.9/app-readme.md deleted file mode 100644 index 524c741d494..00000000000 --- a/incubator/mocodo-mcd/2.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Mocodo est un logiciel d'aide l'enseignement et la conception des bases de donnes relationnelles. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mocodo-mcd](https://truecharts.org/charts/incubator/mocodo-mcd) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mocodo-mcd/2.0.9/questions.yaml b/incubator/mocodo-mcd/2.0.9/questions.yaml deleted file mode 100644 index 62496276e5a..00000000000 --- a/incubator/mocodo-mcd/2.0.9/questions.yaml +++ /dev/null @@ -1,1828 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8888 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: "path Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/mojopaste/2.0.7/CHANGELOG.md b/incubator/mojopaste/2.0.7/CHANGELOG.md deleted file mode 100644 index 3908aa2ab4b..00000000000 --- a/incubator/mojopaste/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mojopaste-2.0.7](https://github.com/truecharts/charts/compare/mojopaste-2.0.6...mojopaste-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mojopaste-2.0.6](https://github.com/truecharts/charts/compare/mojopaste-2.0.5...mojopaste-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mojopaste-2.0.5](https://github.com/truecharts/charts/compare/mojopaste-2.0.4...mojopaste-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mojopaste-2.0.4](https://github.com/truecharts/charts/compare/mojopaste-2.0.3...mojopaste-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mojopaste-2.0.3](https://github.com/truecharts/charts/compare/mojopaste-2.0.2...mojopaste-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - - - -## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) - - diff --git a/incubator/mojopaste/2.0.7/Chart.yaml b/incubator/mojopaste/2.0.7/Chart.yaml deleted file mode 100644 index 6158f6ad417..00000000000 --- a/incubator/mojopaste/2.0.7/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity - - Tools-Utilities - - Network-Web -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Mojopaste is a pastebin application. There's about one million of these out there, but if you have the need to run something internally at work or you just fancy having your own pastebin, this is your application." -home: https://truecharts.org/charts/incubator/mojopaste -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mojopaste.png -keywords: - - mojopaste - - Cloud - - Productivity - - Tools-Utilities - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mojopaste -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/mojopaste - - https://github.com/jhthorsen/app-mojopaste - - https://hub.docker.com/r/jhthorsen/mojopaste -type: application -version: 2.0.7 diff --git a/incubator/mojopaste/2.0.7/app-changelog.md b/incubator/mojopaste/2.0.7/app-changelog.md deleted file mode 100644 index ef4b3fd26c9..00000000000 --- a/incubator/mojopaste/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mojopaste-2.0.7](https://github.com/truecharts/charts/compare/mojopaste-2.0.6...mojopaste-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/mojopaste/2.0.7/app-readme.md b/incubator/mojopaste/2.0.7/app-readme.md deleted file mode 100644 index 9dee93f304f..00000000000 --- a/incubator/mojopaste/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Mojopaste is a pastebin application. There's about one million of these out there, but if you have the need to run something internally at work or you just fancy having your own pastebin, this is your application. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mojopaste](https://truecharts.org/charts/incubator/mojopaste) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/mojopaste/2.0.7/questions.yaml b/incubator/mojopaste/2.0.7/questions.yaml deleted file mode 100644 index 03973491305..00000000000 --- a/incubator/mojopaste/2.0.7/questions.yaml +++ /dev/null @@ -1,1841 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PASTE_ENABLE_CHARTS - label: "PASTE_ENABLE_CHARTS" - description: "The application can make charts from the input data. (10)" - schema: - type: string - default: "0" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3300 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/mojopaste/2.0.8/CHANGELOG.md b/incubator/mojopaste/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..53091d8179f --- /dev/null +++ b/incubator/mojopaste/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mojopaste-2.0.8](https://github.com/truecharts/charts/compare/mojopaste-2.0.7...mojopaste-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mojopaste-2.0.7](https://github.com/truecharts/charts/compare/mojopaste-2.0.6...mojopaste-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mojopaste-2.0.6](https://github.com/truecharts/charts/compare/mojopaste-2.0.5...mojopaste-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mojopaste-2.0.5](https://github.com/truecharts/charts/compare/mojopaste-2.0.4...mojopaste-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mojopaste-2.0.4](https://github.com/truecharts/charts/compare/mojopaste-2.0.3...mojopaste-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mojopaste-2.0.3](https://github.com/truecharts/charts/compare/mojopaste-2.0.2...mojopaste-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) + + + + +## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) + + + + +## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) + + + + +## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) + + + + +## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) + + + + +## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) + + + + +## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) + + + + +## [mojopaste-2.0.2](https://github.com/truecharts/charts/compare/mojopaste-2.0.1...mojopaste-2.0.2) (2022-11-30) + + + diff --git a/incubator/mojopaste/2.0.8/Chart.yaml b/incubator/mojopaste/2.0.8/Chart.yaml new file mode 100644 index 00000000000..56038def9d5 --- /dev/null +++ b/incubator/mojopaste/2.0.8/Chart.yaml @@ -0,0 +1,35 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity + - Tools-Utilities + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Mojopaste is a pastebin application. There's about one million of these out there, but if you have the need to run something internally at work or you just fancy having your own pastebin, this is your application." +home: https://truecharts.org/charts/incubator/mojopaste +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mojopaste.png +keywords: + - mojopaste + - Cloud + - Productivity + - Tools-Utilities + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mojopaste +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/mojopaste + - https://hub.docker.com/jhthorsen/mojopaste + - https://github.com/jhthorsen/app-mojopaste +type: application +version: 2.0.8 diff --git a/incubator/mojopaste/2.0.7/README.md b/incubator/mojopaste/2.0.8/README.md similarity index 100% rename from incubator/mojopaste/2.0.7/README.md rename to incubator/mojopaste/2.0.8/README.md diff --git a/incubator/mojopaste/2.0.8/app-changelog.md b/incubator/mojopaste/2.0.8/app-changelog.md new file mode 100644 index 00000000000..9175acb03ab --- /dev/null +++ b/incubator/mojopaste/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mojopaste-2.0.8](https://github.com/truecharts/charts/compare/mojopaste-2.0.7...mojopaste-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/mojopaste/2.0.8/app-readme.md b/incubator/mojopaste/2.0.8/app-readme.md new file mode 100644 index 00000000000..81c7de27695 --- /dev/null +++ b/incubator/mojopaste/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Mojopaste is a pastebin application. There's about one million of these out there, but if you have the need to run something internally at work or you just fancy having your own pastebin, this is your application. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/mojopaste](https://truecharts.org/charts/incubator/mojopaste) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/netbox/3.0.27/charts/common-11.1.2.tgz b/incubator/mojopaste/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/netbox/3.0.27/charts/common-11.1.2.tgz rename to incubator/mojopaste/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/mojopaste/2.0.7/ix_values.yaml b/incubator/mojopaste/2.0.8/ix_values.yaml similarity index 100% rename from incubator/mojopaste/2.0.7/ix_values.yaml rename to incubator/mojopaste/2.0.8/ix_values.yaml diff --git a/incubator/mojopaste/2.0.8/questions.yaml b/incubator/mojopaste/2.0.8/questions.yaml new file mode 100644 index 00000000000..14ae4603b94 --- /dev/null +++ b/incubator/mojopaste/2.0.8/questions.yaml @@ -0,0 +1,1882 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PASTE_ENABLE_CHARTS + label: "PASTE_ENABLE_CHARTS" + description: "The application can make charts from the input data. (10)" + schema: + type: string + default: "0" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3300 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/mojopaste/2.0.7/templates/common.yaml b/incubator/mojopaste/2.0.8/templates/common.yaml similarity index 100% rename from incubator/mojopaste/2.0.7/templates/common.yaml rename to incubator/mojopaste/2.0.8/templates/common.yaml diff --git a/incubator/netbox/3.0.27/values.yaml b/incubator/mojopaste/2.0.8/values.yaml similarity index 100% rename from incubator/netbox/3.0.27/values.yaml rename to incubator/mojopaste/2.0.8/values.yaml diff --git a/incubator/netbox/3.0.27/CHANGELOG.md b/incubator/netbox/3.0.27/CHANGELOG.md deleted file mode 100644 index ee8e58bedf1..00000000000 --- a/incubator/netbox/3.0.27/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [netbox-3.0.27](https://github.com/truecharts/charts/compare/netbox-3.0.26...netbox-3.0.27) (2023-01-26) - -### Chore - -- update container image tccr.io/truecharts/netbox to 3.4.3 - - - - -## [netbox-3.0.26](https://github.com/truecharts/charts/compare/netbox-3.0.25...netbox-3.0.26) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [netbox-3.0.25](https://github.com/truecharts/charts/compare/netbox-3.0.24...netbox-3.0.25) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [netbox-3.0.24](https://github.com/truecharts/charts/compare/netbox-3.0.23...netbox-3.0.24) (2023-01-21) - -### Chore - -- update container image tccr.io/truecharts/netbox to v3.4.3 - - - - -## [netbox-3.0.23](https://github.com/truecharts/charts/compare/netbox-3.0.22...netbox-3.0.23) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [netbox-3.0.22](https://github.com/truecharts/charts/compare/netbox-3.0.21...netbox-3.0.22) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/netbox to v3.4.2 - - - - -## [netbox-3.0.21](https://github.com/truecharts/charts/compare/netbox-3.0.20...netbox-3.0.21) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [netbox-3.0.20](https://github.com/truecharts/charts/compare/netbox-3.0.19...netbox-3.0.20) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [netbox-3.0.19](https://github.com/truecharts/charts/compare/netbox-3.0.18...netbox-3.0.19) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [netbox-3.0.18](https://github.com/truecharts/charts/compare/netbox-3.0.17...netbox-3.0.18) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [netbox-3.0.17](https://github.com/truecharts/charts/compare/netbox-3.0.16...netbox-3.0.17) (2022-12-25) - -### Chore diff --git a/incubator/netbox/3.0.27/Chart.yaml b/incubator/netbox/3.0.27/Chart.yaml deleted file mode 100644 index a07cb3d6d54..00000000000 --- a/incubator/netbox/3.0.27/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v2 -appVersion: "3.4.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -description: NetBox is the leading solution for modeling and documenting modern networks. -home: https://truecharts.org/charts/incubator/netbox -icon: https://truecharts.org/img/hotlink-ok/chart-icons/netbox.png -keywords: - - network - - netbox -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: netbox -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/netbox - - https://github.com/netbox-community/netbox-docker -version: 3.0.27 -annotations: - truecharts.org/catagories: | - - network - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/netbox/3.0.27/app-changelog.md b/incubator/netbox/3.0.27/app-changelog.md deleted file mode 100644 index 0192f530ebc..00000000000 --- a/incubator/netbox/3.0.27/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [netbox-3.0.27](https://github.com/truecharts/charts/compare/netbox-3.0.26...netbox-3.0.27) (2023-01-26) - -### Chore - -- update container image tccr.io/truecharts/netbox to 3.4.3 - - \ No newline at end of file diff --git a/incubator/netbox/3.0.28/CHANGELOG.md b/incubator/netbox/3.0.28/CHANGELOG.md new file mode 100644 index 00000000000..a091d7eeb7f --- /dev/null +++ b/incubator/netbox/3.0.28/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [netbox-3.0.28](https://github.com/truecharts/charts/compare/netbox-3.0.27...netbox-3.0.28) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [netbox-3.0.27](https://github.com/truecharts/charts/compare/netbox-3.0.26...netbox-3.0.27) (2023-01-26) + +### Chore + +- update container image tccr.io/truecharts/netbox to 3.4.3 + + + + +## [netbox-3.0.26](https://github.com/truecharts/charts/compare/netbox-3.0.25...netbox-3.0.26) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [netbox-3.0.25](https://github.com/truecharts/charts/compare/netbox-3.0.24...netbox-3.0.25) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [netbox-3.0.24](https://github.com/truecharts/charts/compare/netbox-3.0.23...netbox-3.0.24) (2023-01-21) + +### Chore + +- update container image tccr.io/truecharts/netbox to v3.4.3 + + + + +## [netbox-3.0.23](https://github.com/truecharts/charts/compare/netbox-3.0.22...netbox-3.0.23) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [netbox-3.0.22](https://github.com/truecharts/charts/compare/netbox-3.0.21...netbox-3.0.22) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/netbox to v3.4.2 + + + + +## [netbox-3.0.21](https://github.com/truecharts/charts/compare/netbox-3.0.20...netbox-3.0.21) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [netbox-3.0.20](https://github.com/truecharts/charts/compare/netbox-3.0.19...netbox-3.0.20) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [netbox-3.0.19](https://github.com/truecharts/charts/compare/netbox-3.0.18...netbox-3.0.19) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [netbox-3.0.18](https://github.com/truecharts/charts/compare/netbox-3.0.17...netbox-3.0.18) (2022-12-26) + +### Chore diff --git a/incubator/netbox/3.0.28/Chart.yaml b/incubator/netbox/3.0.28/Chart.yaml new file mode 100644 index 00000000000..21df7530737 --- /dev/null +++ b/incubator/netbox/3.0.28/Chart.yaml @@ -0,0 +1,36 @@ +apiVersion: v2 +appVersion: "3.4.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: NetBox is the leading solution for modeling and documenting modern networks. +home: https://truecharts.org/charts/incubator/netbox +icon: https://truecharts.org/img/hotlink-ok/chart-icons/netbox.png +keywords: + - network + - netbox +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: netbox +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/netbox + - https://hub.docker.com/netboxcommunity/netbox + - https://github.com/netbox-community/netbox-docker +version: 3.0.28 +annotations: + truecharts.org/catagories: | + - network + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/netbox/3.0.27/README.md b/incubator/netbox/3.0.28/README.md similarity index 100% rename from incubator/netbox/3.0.27/README.md rename to incubator/netbox/3.0.28/README.md diff --git a/incubator/netbox/3.0.28/app-changelog.md b/incubator/netbox/3.0.28/app-changelog.md new file mode 100644 index 00000000000..d53701759d0 --- /dev/null +++ b/incubator/netbox/3.0.28/app-changelog.md @@ -0,0 +1,9 @@ + + +## [netbox-3.0.28](https://github.com/truecharts/charts/compare/netbox-3.0.27...netbox-3.0.28) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/netbox/3.0.27/app-readme.md b/incubator/netbox/3.0.28/app-readme.md similarity index 100% rename from incubator/netbox/3.0.27/app-readme.md rename to incubator/netbox/3.0.28/app-readme.md diff --git a/incubator/nitter/1.0.6/charts/common-11.1.2.tgz b/incubator/netbox/3.0.28/charts/common-11.1.2.tgz similarity index 100% rename from incubator/nitter/1.0.6/charts/common-11.1.2.tgz rename to incubator/netbox/3.0.28/charts/common-11.1.2.tgz diff --git a/incubator/netbox/3.0.27/charts/postgresql-11.0.22.tgz b/incubator/netbox/3.0.28/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/netbox/3.0.27/charts/postgresql-11.0.22.tgz rename to incubator/netbox/3.0.28/charts/postgresql-11.0.22.tgz diff --git a/incubator/netbox/3.0.27/charts/redis-5.0.29.tgz b/incubator/netbox/3.0.28/charts/redis-5.0.29.tgz similarity index 100% rename from incubator/netbox/3.0.27/charts/redis-5.0.29.tgz rename to incubator/netbox/3.0.28/charts/redis-5.0.29.tgz diff --git a/incubator/netbox/3.0.27/ix_values.yaml b/incubator/netbox/3.0.28/ix_values.yaml similarity index 100% rename from incubator/netbox/3.0.27/ix_values.yaml rename to incubator/netbox/3.0.28/ix_values.yaml diff --git a/incubator/netbox/3.0.27/questions.yaml b/incubator/netbox/3.0.28/questions.yaml similarity index 100% rename from incubator/netbox/3.0.27/questions.yaml rename to incubator/netbox/3.0.28/questions.yaml diff --git a/incubator/netbox/3.0.27/templates/_housekeeper.tpl b/incubator/netbox/3.0.28/templates/_housekeeper.tpl similarity index 100% rename from incubator/netbox/3.0.27/templates/_housekeeper.tpl rename to incubator/netbox/3.0.28/templates/_housekeeper.tpl diff --git a/incubator/netbox/3.0.27/templates/_secret.tpl b/incubator/netbox/3.0.28/templates/_secret.tpl similarity index 100% rename from incubator/netbox/3.0.27/templates/_secret.tpl rename to incubator/netbox/3.0.28/templates/_secret.tpl diff --git a/incubator/netbox/3.0.27/templates/_worker.tpl b/incubator/netbox/3.0.28/templates/_worker.tpl similarity index 100% rename from incubator/netbox/3.0.27/templates/_worker.tpl rename to incubator/netbox/3.0.28/templates/_worker.tpl diff --git a/incubator/netbox/3.0.27/templates/common.yaml b/incubator/netbox/3.0.28/templates/common.yaml similarity index 100% rename from incubator/netbox/3.0.27/templates/common.yaml rename to incubator/netbox/3.0.28/templates/common.yaml diff --git a/incubator/netbox/3.0.27/templates/prometheusrules.yaml b/incubator/netbox/3.0.28/templates/prometheusrules.yaml similarity index 100% rename from incubator/netbox/3.0.27/templates/prometheusrules.yaml rename to incubator/netbox/3.0.28/templates/prometheusrules.yaml diff --git a/incubator/netbox/3.0.27/templates/servicemonitor.yaml b/incubator/netbox/3.0.28/templates/servicemonitor.yaml similarity index 100% rename from incubator/netbox/3.0.27/templates/servicemonitor.yaml rename to incubator/netbox/3.0.28/templates/servicemonitor.yaml diff --git a/incubator/nitter/1.0.6/values.yaml b/incubator/netbox/3.0.28/values.yaml similarity index 100% rename from incubator/nitter/1.0.6/values.yaml rename to incubator/netbox/3.0.28/values.yaml diff --git a/incubator/nitter/1.0.6/CHANGELOG.md b/incubator/nitter/1.0.6/CHANGELOG.md deleted file mode 100644 index cc0ef5cb0ac..00000000000 --- a/incubator/nitter/1.0.6/CHANGELOG.md +++ /dev/null @@ -1,62 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [nitter-1.0.6](https://github.com/truecharts/charts/compare/nitter-1.0.5...nitter-1.0.6) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/nitter to latest - - - - -## [nitter-1.0.5](https://github.com/truecharts/charts/compare/nitter-1.0.4...nitter-1.0.5) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [nitter-1.0.4](https://github.com/truecharts/charts/compare/nitter-1.0.3...nitter-1.0.4) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [nitter-1.0.3](https://github.com/truecharts/charts/compare/nitter-1.0.2...nitter-1.0.3) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/nitter to latest - - - - -## [nitter-1.0.2](https://github.com/truecharts/charts/compare/nitter-1.0.1...nitter-1.0.2) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [nitter-1.0.1](https://github.com/truecharts/charts/compare/nitter-1.0.0...nitter-1.0.1) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/nitter to latest - - - - -## [nitter-1.0.0]nitter-1.0.0 (2023-01-01) - diff --git a/incubator/nitter/1.0.6/Chart.yaml b/incubator/nitter/1.0.6/Chart.yaml deleted file mode 100644 index a2418a96d87..00000000000 --- a/incubator/nitter/1.0.6/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -deprecated: false -description: A free and open source alternative Twitter front-end focused on privacy and performance. -home: https://truecharts.org/charts/incubator/nitter -icon: https://truecharts.org/img/hotlink-ok/chart-icons/nitter.png -keywords: - - nitter - - libre -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: nitter -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/nitter - - https://github.com/zedeus/nitter -type: application -version: 1.0.6 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/nitter/1.0.6/README.md b/incubator/nitter/1.0.6/README.md deleted file mode 100644 index 7e59600739c..00000000000 --- a/incubator/nitter/1.0.6/README.md +++ /dev/null @@ -1 +0,0 @@ -# README diff --git a/incubator/nitter/1.0.6/app-changelog.md b/incubator/nitter/1.0.6/app-changelog.md deleted file mode 100644 index f03469b016d..00000000000 --- a/incubator/nitter/1.0.6/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [nitter-1.0.6](https://github.com/truecharts/charts/compare/nitter-1.0.5...nitter-1.0.6) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/nitter to latest - - \ No newline at end of file diff --git a/incubator/nitter/1.0.7/CHANGELOG.md b/incubator/nitter/1.0.7/CHANGELOG.md new file mode 100644 index 00000000000..c4100369ffe --- /dev/null +++ b/incubator/nitter/1.0.7/CHANGELOG.md @@ -0,0 +1,71 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [nitter-1.0.7](https://github.com/truecharts/charts/compare/nitter-1.0.6...nitter-1.0.7) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [nitter-1.0.6](https://github.com/truecharts/charts/compare/nitter-1.0.5...nitter-1.0.6) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/nitter to latest + + + + +## [nitter-1.0.5](https://github.com/truecharts/charts/compare/nitter-1.0.4...nitter-1.0.5) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [nitter-1.0.4](https://github.com/truecharts/charts/compare/nitter-1.0.3...nitter-1.0.4) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [nitter-1.0.3](https://github.com/truecharts/charts/compare/nitter-1.0.2...nitter-1.0.3) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/nitter to latest + + + + +## [nitter-1.0.2](https://github.com/truecharts/charts/compare/nitter-1.0.1...nitter-1.0.2) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [nitter-1.0.1](https://github.com/truecharts/charts/compare/nitter-1.0.0...nitter-1.0.1) (2023-01-04) + +### Chore + +- update container image tccr.io/truecharts/nitter to latest + + + + +## [nitter-1.0.0]nitter-1.0.0 (2023-01-01) + diff --git a/incubator/nitter/1.0.7/Chart.yaml b/incubator/nitter/1.0.7/Chart.yaml new file mode 100644 index 00000000000..cdb3ee45761 --- /dev/null +++ b/incubator/nitter/1.0.7/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +deprecated: false +description: A free and open source alternative Twitter front-end focused on privacy and performance. +home: https://truecharts.org/charts/incubator/nitter +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nitter.png +keywords: + - nitter + - libre +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: nitter +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/nitter + - https://hub.docker.com/zedeus/nitter + - https://github.com/zedeus/nitter +type: application +version: 1.0.7 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/noisedash/2.0.9/README.md b/incubator/nitter/1.0.7/README.md similarity index 100% rename from incubator/noisedash/2.0.9/README.md rename to incubator/nitter/1.0.7/README.md diff --git a/incubator/nitter/1.0.7/app-changelog.md b/incubator/nitter/1.0.7/app-changelog.md new file mode 100644 index 00000000000..8c105495b60 --- /dev/null +++ b/incubator/nitter/1.0.7/app-changelog.md @@ -0,0 +1,9 @@ + + +## [nitter-1.0.7](https://github.com/truecharts/charts/compare/nitter-1.0.6...nitter-1.0.7) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/nitter/1.0.6/app-readme.md b/incubator/nitter/1.0.7/app-readme.md similarity index 100% rename from incubator/nitter/1.0.6/app-readme.md rename to incubator/nitter/1.0.7/app-readme.md diff --git a/incubator/noisedash/2.0.9/charts/common-11.1.2.tgz b/incubator/nitter/1.0.7/charts/common-11.1.2.tgz similarity index 100% rename from incubator/noisedash/2.0.9/charts/common-11.1.2.tgz rename to incubator/nitter/1.0.7/charts/common-11.1.2.tgz diff --git a/incubator/nitter/1.0.6/charts/redis-5.0.29.tgz b/incubator/nitter/1.0.7/charts/redis-5.0.29.tgz similarity index 100% rename from incubator/nitter/1.0.6/charts/redis-5.0.29.tgz rename to incubator/nitter/1.0.7/charts/redis-5.0.29.tgz diff --git a/incubator/nitter/1.0.6/ix_values.yaml b/incubator/nitter/1.0.7/ix_values.yaml similarity index 100% rename from incubator/nitter/1.0.6/ix_values.yaml rename to incubator/nitter/1.0.7/ix_values.yaml diff --git a/incubator/nitter/1.0.6/questions.yaml b/incubator/nitter/1.0.7/questions.yaml similarity index 100% rename from incubator/nitter/1.0.6/questions.yaml rename to incubator/nitter/1.0.7/questions.yaml diff --git a/incubator/nitter/1.0.6/templates/_secret.tpl b/incubator/nitter/1.0.7/templates/_secret.tpl similarity index 100% rename from incubator/nitter/1.0.6/templates/_secret.tpl rename to incubator/nitter/1.0.7/templates/_secret.tpl diff --git a/incubator/nitter/1.0.6/templates/common.yaml b/incubator/nitter/1.0.7/templates/common.yaml similarity index 100% rename from incubator/nitter/1.0.6/templates/common.yaml rename to incubator/nitter/1.0.7/templates/common.yaml diff --git a/incubator/noisedash/2.0.9/values.yaml b/incubator/nitter/1.0.7/values.yaml similarity index 100% rename from incubator/noisedash/2.0.9/values.yaml rename to incubator/nitter/1.0.7/values.yaml diff --git a/incubator/noisedash/2.0.10/CHANGELOG.md b/incubator/noisedash/2.0.10/CHANGELOG.md new file mode 100644 index 00000000000..3334cabb8ca --- /dev/null +++ b/incubator/noisedash/2.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [noisedash-2.0.10](https://github.com/truecharts/charts/compare/noisedash-2.0.9...noisedash-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [noisedash-2.0.9](https://github.com/truecharts/charts/compare/noisedash-2.0.8...noisedash-2.0.9) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/noisedash to v0.6.8 + + + + +## [noisedash-2.0.8](https://github.com/truecharts/charts/compare/noisedash-2.0.7...noisedash-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [noisedash-2.0.7](https://github.com/truecharts/charts/compare/noisedash-2.0.6...noisedash-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [noisedash-2.0.6](https://github.com/truecharts/charts/compare/noisedash-2.0.5...noisedash-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [noisedash-2.0.5](https://github.com/truecharts/charts/compare/noisedash-2.0.4...noisedash-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [noisedash-2.0.4](https://github.com/truecharts/charts/compare/noisedash-2.0.3...noisedash-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) + + + + +## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) + + + + +## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) + + + + +## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) + + + + +## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) + + + + +## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) + + + + diff --git a/incubator/noisedash/2.0.10/Chart.yaml b/incubator/noisedash/2.0.10/Chart.yaml new file mode 100644 index 00000000000..aa5a6595077 --- /dev/null +++ b/incubator/noisedash/2.0.10/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "0.6.8" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Self-hosted web tool for generating ambient noises +home: https://truecharts.org/charts/incubator/noisedash +icon: https://truecharts.org/img/hotlink-ok/chart-icons/noisedash.png +keywords: + - noise +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: noisedash +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/noisedash + - https://hub.docker.com/noisedash/noisedash + - https://github.com/kaythomas0/noisedash +version: 2.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/nosqlclient/2.0.7/README.md b/incubator/noisedash/2.0.10/README.md similarity index 100% rename from incubator/nosqlclient/2.0.7/README.md rename to incubator/noisedash/2.0.10/README.md diff --git a/incubator/noisedash/2.0.10/app-changelog.md b/incubator/noisedash/2.0.10/app-changelog.md new file mode 100644 index 00000000000..f0a024be301 --- /dev/null +++ b/incubator/noisedash/2.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [noisedash-2.0.10](https://github.com/truecharts/charts/compare/noisedash-2.0.9...noisedash-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/noisedash/2.0.10/app-readme.md b/incubator/noisedash/2.0.10/app-readme.md new file mode 100644 index 00000000000..3b46d462b18 --- /dev/null +++ b/incubator/noisedash/2.0.10/app-readme.md @@ -0,0 +1,8 @@ +Self-hosted web tool for generating ambient noises + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/noisedash](https://truecharts.org/charts/incubator/noisedash) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/nosqlclient/2.0.7/charts/common-11.1.2.tgz b/incubator/noisedash/2.0.10/charts/common-11.1.2.tgz similarity index 100% rename from incubator/nosqlclient/2.0.7/charts/common-11.1.2.tgz rename to incubator/noisedash/2.0.10/charts/common-11.1.2.tgz diff --git a/incubator/noisedash/2.0.9/ix_values.yaml b/incubator/noisedash/2.0.10/ix_values.yaml similarity index 100% rename from incubator/noisedash/2.0.9/ix_values.yaml rename to incubator/noisedash/2.0.10/ix_values.yaml diff --git a/incubator/noisedash/2.0.10/questions.yaml b/incubator/noisedash/2.0.10/questions.yaml new file mode 100644 index 00000000000..c08a0104757 --- /dev/null +++ b/incubator/noisedash/2.0.10/questions.yaml @@ -0,0 +1,1954 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: noisedash + group: App Configuration + label: Noisedash Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: max_sample_size_in_bytes + label: Max Sample Size in Bytes + description: Sets the max size for samples + schema: + type: int + required: true + default: 10737418240 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10328 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: samples + label: App Samples Storage + description: Stores the Application Samples. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: db + label: App DB Storage + description: Stores the Application DB. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/noisedash/2.0.9/templates/_configmap.tpl b/incubator/noisedash/2.0.10/templates/_configmap.tpl similarity index 100% rename from incubator/noisedash/2.0.9/templates/_configmap.tpl rename to incubator/noisedash/2.0.10/templates/_configmap.tpl diff --git a/incubator/noisedash/2.0.9/templates/common.yaml b/incubator/noisedash/2.0.10/templates/common.yaml similarity index 100% rename from incubator/noisedash/2.0.9/templates/common.yaml rename to incubator/noisedash/2.0.10/templates/common.yaml diff --git a/incubator/nosqlclient/2.0.7/values.yaml b/incubator/noisedash/2.0.10/values.yaml similarity index 100% rename from incubator/nosqlclient/2.0.7/values.yaml rename to incubator/noisedash/2.0.10/values.yaml diff --git a/incubator/noisedash/2.0.9/CHANGELOG.md b/incubator/noisedash/2.0.9/CHANGELOG.md deleted file mode 100644 index 931801a6def..00000000000 --- a/incubator/noisedash/2.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [noisedash-2.0.9](https://github.com/truecharts/charts/compare/noisedash-2.0.8...noisedash-2.0.9) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/noisedash to v0.6.8 - - - - -## [noisedash-2.0.8](https://github.com/truecharts/charts/compare/noisedash-2.0.7...noisedash-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [noisedash-2.0.7](https://github.com/truecharts/charts/compare/noisedash-2.0.6...noisedash-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [noisedash-2.0.6](https://github.com/truecharts/charts/compare/noisedash-2.0.5...noisedash-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [noisedash-2.0.5](https://github.com/truecharts/charts/compare/noisedash-2.0.4...noisedash-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [noisedash-2.0.4](https://github.com/truecharts/charts/compare/noisedash-2.0.3...noisedash-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) - - - - -## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) - - - - -## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) - - - - -## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) - - - - -## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) - - - - -## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) - - - - -## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) - - - - -## [noisedash-2.0.3](https://github.com/truecharts/charts/compare/noisedash-2.0.2...noisedash-2.0.3) (2022-11-30) - - - diff --git a/incubator/noisedash/2.0.9/Chart.yaml b/incubator/noisedash/2.0.9/Chart.yaml deleted file mode 100644 index f819baec7c0..00000000000 --- a/incubator/noisedash/2.0.9/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "0.6.8" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Self-hosted web tool for generating ambient noises -home: https://truecharts.org/charts/incubator/noisedash -icon: https://truecharts.org/img/hotlink-ok/chart-icons/noisedash.png -keywords: - - noise -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: noisedash -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/noisedash - - https://github.com/kaythomas0/noisedash -version: 2.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/noisedash/2.0.9/app-changelog.md b/incubator/noisedash/2.0.9/app-changelog.md deleted file mode 100644 index bb75f62ecb2..00000000000 --- a/incubator/noisedash/2.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [noisedash-2.0.9](https://github.com/truecharts/charts/compare/noisedash-2.0.8...noisedash-2.0.9) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/noisedash to v0.6.8 - - \ No newline at end of file diff --git a/incubator/noisedash/2.0.9/app-readme.md b/incubator/noisedash/2.0.9/app-readme.md deleted file mode 100644 index a7a1370a75c..00000000000 --- a/incubator/noisedash/2.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Self-hosted web tool for generating ambient noises - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/noisedash](https://truecharts.org/charts/incubator/noisedash) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/noisedash/2.0.9/questions.yaml b/incubator/noisedash/2.0.9/questions.yaml deleted file mode 100644 index 86994413409..00000000000 --- a/incubator/noisedash/2.0.9/questions.yaml +++ /dev/null @@ -1,1913 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: noisedash - group: App Configuration - label: Noisedash Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: max_sample_size_in_bytes - label: Max Sample Size in Bytes - description: Sets the max size for samples - schema: - type: int - required: true - default: 10737418240 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10328 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: samples - label: App Samples Storage - description: Stores the Application Samples. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: db - label: App DB Storage - description: Stores the Application DB. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/nosqlclient/2.0.7/CHANGELOG.md b/incubator/nosqlclient/2.0.7/CHANGELOG.md deleted file mode 100644 index 9ebcffb7f64..00000000000 --- a/incubator/nosqlclient/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [nosqlclient-2.0.7](https://github.com/truecharts/charts/compare/nosqlclient-2.0.6...nosqlclient-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [nosqlclient-2.0.6](https://github.com/truecharts/charts/compare/nosqlclient-2.0.5...nosqlclient-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [nosqlclient-2.0.5](https://github.com/truecharts/charts/compare/nosqlclient-2.0.4...nosqlclient-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [nosqlclient-2.0.4](https://github.com/truecharts/charts/compare/nosqlclient-2.0.3...nosqlclient-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [nosqlclient-2.0.3](https://github.com/truecharts/charts/compare/nosqlclient-2.0.2...nosqlclient-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - - - -## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) - - diff --git a/incubator/nosqlclient/2.0.7/Chart.yaml b/incubator/nosqlclient/2.0.7/Chart.yaml deleted file mode 100644 index 5f71b038cf1..00000000000 --- a/incubator/nosqlclient/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities - - Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Cross-platform and self hosted, easy to use, intuitive mongodb management tool - Formerly Mongoclient -home: https://truecharts.org/charts/incubator/nosqlclient -icon: https://truecharts.org/img/hotlink-ok/chart-icons/nosqlclient.png -keywords: - - nosqlclient - - Tools-Utilities - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: nosqlclient -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/nosqlclient - - https://github.com/nosqlclient/nosqlclient - - https://hub.docker.com/r/mongoclient/mongoclient/ -type: application -version: 2.0.7 diff --git a/incubator/nosqlclient/2.0.7/app-changelog.md b/incubator/nosqlclient/2.0.7/app-changelog.md deleted file mode 100644 index 5f351d2e52d..00000000000 --- a/incubator/nosqlclient/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [nosqlclient-2.0.7](https://github.com/truecharts/charts/compare/nosqlclient-2.0.6...nosqlclient-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/nosqlclient/2.0.7/app-readme.md b/incubator/nosqlclient/2.0.7/app-readme.md deleted file mode 100644 index e9750d2598f..00000000000 --- a/incubator/nosqlclient/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Cross-platform and self hosted, easy to use, intuitive mongodb management tool - Formerly Mongoclient - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/nosqlclient](https://truecharts.org/charts/incubator/nosqlclient) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/nosqlclient/2.0.7/questions.yaml b/incubator/nosqlclient/2.0.7/questions.yaml deleted file mode 100644 index 25f3f37c42a..00000000000 --- a/incubator/nosqlclient/2.0.7/questions.yaml +++ /dev/null @@ -1,1842 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: MONGO_URL - label: "MONGO_URL" - description: "Container Variable MONGOURL" - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: appdata - label: "appdata Storage" - description: "Container Path datadb" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/nosqlclient/2.0.8/CHANGELOG.md b/incubator/nosqlclient/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..e2280e56178 --- /dev/null +++ b/incubator/nosqlclient/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [nosqlclient-2.0.8](https://github.com/truecharts/charts/compare/nosqlclient-2.0.7...nosqlclient-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [nosqlclient-2.0.7](https://github.com/truecharts/charts/compare/nosqlclient-2.0.6...nosqlclient-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [nosqlclient-2.0.6](https://github.com/truecharts/charts/compare/nosqlclient-2.0.5...nosqlclient-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [nosqlclient-2.0.5](https://github.com/truecharts/charts/compare/nosqlclient-2.0.4...nosqlclient-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [nosqlclient-2.0.4](https://github.com/truecharts/charts/compare/nosqlclient-2.0.3...nosqlclient-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [nosqlclient-2.0.3](https://github.com/truecharts/charts/compare/nosqlclient-2.0.2...nosqlclient-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) + + + + +## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) + + + + +## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) + + + + +## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) + + + + +## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) + + + + +## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) + + + + +## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) + + + + +## [nosqlclient-2.0.2](https://github.com/truecharts/charts/compare/nosqlclient-2.0.1...nosqlclient-2.0.2) (2022-11-30) + + + diff --git a/incubator/nosqlclient/2.0.8/Chart.yaml b/incubator/nosqlclient/2.0.8/Chart.yaml new file mode 100644 index 00000000000..bdecbda4082 --- /dev/null +++ b/incubator/nosqlclient/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Cross-platform and self hosted, easy to use, intuitive mongodb management tool - Formerly Mongoclient +home: https://truecharts.org/charts/incubator/nosqlclient +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nosqlclient.png +keywords: + - nosqlclient + - Tools-Utilities + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: nosqlclient +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/nosqlclient + - https://hub.docker.com/mongoclient/mongoclient + - https://github.com/nosqlclient/nosqlclient +type: application +version: 2.0.8 diff --git a/incubator/notarius/2.0.7/README.md b/incubator/nosqlclient/2.0.8/README.md similarity index 100% rename from incubator/notarius/2.0.7/README.md rename to incubator/nosqlclient/2.0.8/README.md diff --git a/incubator/nosqlclient/2.0.8/app-changelog.md b/incubator/nosqlclient/2.0.8/app-changelog.md new file mode 100644 index 00000000000..1633c171b5e --- /dev/null +++ b/incubator/nosqlclient/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [nosqlclient-2.0.8](https://github.com/truecharts/charts/compare/nosqlclient-2.0.7...nosqlclient-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/nosqlclient/2.0.8/app-readme.md b/incubator/nosqlclient/2.0.8/app-readme.md new file mode 100644 index 00000000000..54d78ca8397 --- /dev/null +++ b/incubator/nosqlclient/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Cross-platform and self hosted, easy to use, intuitive mongodb management tool - Formerly Mongoclient + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/nosqlclient](https://truecharts.org/charts/incubator/nosqlclient) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/notarius/2.0.7/charts/common-11.1.2.tgz b/incubator/nosqlclient/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/notarius/2.0.7/charts/common-11.1.2.tgz rename to incubator/nosqlclient/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/nosqlclient/2.0.7/ix_values.yaml b/incubator/nosqlclient/2.0.8/ix_values.yaml similarity index 100% rename from incubator/nosqlclient/2.0.7/ix_values.yaml rename to incubator/nosqlclient/2.0.8/ix_values.yaml diff --git a/incubator/nosqlclient/2.0.8/questions.yaml b/incubator/nosqlclient/2.0.8/questions.yaml new file mode 100644 index 00000000000..de91a021c8b --- /dev/null +++ b/incubator/nosqlclient/2.0.8/questions.yaml @@ -0,0 +1,1883 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: MONGO_URL + label: "MONGO_URL" + description: "Container Variable MONGOURL" + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: appdata + label: "appdata Storage" + description: "Container Path datadb" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/nosqlclient/2.0.7/templates/common.yaml b/incubator/nosqlclient/2.0.8/templates/common.yaml similarity index 100% rename from incubator/nosqlclient/2.0.7/templates/common.yaml rename to incubator/nosqlclient/2.0.8/templates/common.yaml diff --git a/incubator/notarius/2.0.7/values.yaml b/incubator/nosqlclient/2.0.8/values.yaml similarity index 100% rename from incubator/notarius/2.0.7/values.yaml rename to incubator/nosqlclient/2.0.8/values.yaml diff --git a/incubator/notarius/2.0.7/CHANGELOG.md b/incubator/notarius/2.0.7/CHANGELOG.md deleted file mode 100644 index e1fc729dd15..00000000000 --- a/incubator/notarius/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [notarius-2.0.7](https://github.com/truecharts/charts/compare/notarius-2.0.6...notarius-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [notarius-2.0.6](https://github.com/truecharts/charts/compare/notarius-2.0.5...notarius-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [notarius-2.0.5](https://github.com/truecharts/charts/compare/notarius-2.0.4...notarius-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [notarius-2.0.4](https://github.com/truecharts/charts/compare/notarius-2.0.3...notarius-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [notarius-2.0.3](https://github.com/truecharts/charts/compare/notarius-2.0.2...notarius-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - - - -## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) - - diff --git a/incubator/notarius/2.0.7/Chart.yaml b/incubator/notarius/2.0.7/Chart.yaml deleted file mode 100644 index 1a80f455b50..00000000000 --- a/incubator/notarius/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "" -home: https://truecharts.org/charts/incubator/notarius -icon: https://truecharts.org/img/hotlink-ok/chart-icons/notarius.png -keywords: - - notarius - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: notarius -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/notarius - - https://github.com/agusalex/Notarius - - https://hub.docker.com/r/agusalex/Notarius -type: application -version: 2.0.7 diff --git a/incubator/notarius/2.0.7/app-changelog.md b/incubator/notarius/2.0.7/app-changelog.md deleted file mode 100644 index f306abe7370..00000000000 --- a/incubator/notarius/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [notarius-2.0.7](https://github.com/truecharts/charts/compare/notarius-2.0.6...notarius-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/notarius/2.0.7/app-readme.md b/incubator/notarius/2.0.7/app-readme.md deleted file mode 100644 index ade4156832e..00000000000 --- a/incubator/notarius/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ - - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/notarius](https://truecharts.org/charts/incubator/notarius) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/notarius/2.0.7/questions.yaml b/incubator/notarius/2.0.7/questions.yaml deleted file mode 100644 index c688869148e..00000000000 --- a/incubator/notarius/2.0.7/questions.yaml +++ /dev/null @@ -1,1402 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/notarius/2.0.8/CHANGELOG.md b/incubator/notarius/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..44a73852d75 --- /dev/null +++ b/incubator/notarius/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [notarius-2.0.8](https://github.com/truecharts/charts/compare/notarius-2.0.7...notarius-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [notarius-2.0.7](https://github.com/truecharts/charts/compare/notarius-2.0.6...notarius-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [notarius-2.0.6](https://github.com/truecharts/charts/compare/notarius-2.0.5...notarius-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [notarius-2.0.5](https://github.com/truecharts/charts/compare/notarius-2.0.4...notarius-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [notarius-2.0.4](https://github.com/truecharts/charts/compare/notarius-2.0.3...notarius-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [notarius-2.0.3](https://github.com/truecharts/charts/compare/notarius-2.0.2...notarius-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) + + + + +## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) + + + + +## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) + + + + +## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) + + + + +## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) + + + + +## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) + + + + +## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) + + + + +## [notarius-2.0.2](https://github.com/truecharts/charts/compare/notarius-2.0.1...notarius-2.0.2) (2022-11-30) + + + diff --git a/incubator/notarius/2.0.8/Chart.yaml b/incubator/notarius/2.0.8/Chart.yaml new file mode 100644 index 00000000000..be9f7f84501 --- /dev/null +++ b/incubator/notarius/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "" +home: https://truecharts.org/charts/incubator/notarius +icon: https://truecharts.org/img/hotlink-ok/chart-icons/notarius.png +keywords: + - notarius + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: notarius +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/notarius + - https://hub.docker.com/agusalex/notarius + - https://github.com/agusalex/Notarius +type: application +version: 2.0.8 diff --git a/incubator/notea/2.0.7/README.md b/incubator/notarius/2.0.8/README.md similarity index 100% rename from incubator/notea/2.0.7/README.md rename to incubator/notarius/2.0.8/README.md diff --git a/incubator/notarius/2.0.8/app-changelog.md b/incubator/notarius/2.0.8/app-changelog.md new file mode 100644 index 00000000000..35892829ae9 --- /dev/null +++ b/incubator/notarius/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [notarius-2.0.8](https://github.com/truecharts/charts/compare/notarius-2.0.7...notarius-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/notarius/2.0.8/app-readme.md b/incubator/notarius/2.0.8/app-readme.md new file mode 100644 index 00000000000..2af25b335c8 --- /dev/null +++ b/incubator/notarius/2.0.8/app-readme.md @@ -0,0 +1,8 @@ + + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/notarius](https://truecharts.org/charts/incubator/notarius) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/notea/2.0.7/charts/common-11.1.2.tgz b/incubator/notarius/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/notea/2.0.7/charts/common-11.1.2.tgz rename to incubator/notarius/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/notarius/2.0.7/ix_values.yaml b/incubator/notarius/2.0.8/ix_values.yaml similarity index 100% rename from incubator/notarius/2.0.7/ix_values.yaml rename to incubator/notarius/2.0.8/ix_values.yaml diff --git a/incubator/notarius/2.0.8/questions.yaml b/incubator/notarius/2.0.8/questions.yaml new file mode 100644 index 00000000000..7a0e5c3cf49 --- /dev/null +++ b/incubator/notarius/2.0.8/questions.yaml @@ -0,0 +1,1402 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/notarius/2.0.7/templates/common.yaml b/incubator/notarius/2.0.8/templates/common.yaml similarity index 100% rename from incubator/notarius/2.0.7/templates/common.yaml rename to incubator/notarius/2.0.8/templates/common.yaml diff --git a/incubator/notea/2.0.7/values.yaml b/incubator/notarius/2.0.8/values.yaml similarity index 100% rename from incubator/notea/2.0.7/values.yaml rename to incubator/notarius/2.0.8/values.yaml diff --git a/incubator/notea/2.0.7/CHANGELOG.md b/incubator/notea/2.0.7/CHANGELOG.md deleted file mode 100644 index 62c9072f7cc..00000000000 --- a/incubator/notea/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [notea-2.0.7](https://github.com/truecharts/charts/compare/notea-2.0.6...notea-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [notea-2.0.6](https://github.com/truecharts/charts/compare/notea-2.0.5...notea-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [notea-2.0.5](https://github.com/truecharts/charts/compare/notea-2.0.4...notea-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [notea-2.0.4](https://github.com/truecharts/charts/compare/notea-2.0.3...notea-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [notea-2.0.3](https://github.com/truecharts/charts/compare/notea-2.0.2...notea-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - - - -## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) - - diff --git a/incubator/notea/2.0.7/Chart.yaml b/incubator/notea/2.0.7/Chart.yaml deleted file mode 100644 index dd663e422b4..00000000000 --- a/incubator/notea/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Self hosted note taking, alternative to Notions. Look at Github for config -home: https://truecharts.org/charts/incubator/notea -icon: https://truecharts.org/img/hotlink-ok/chart-icons/notea.png -keywords: - - notea - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: notea -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/notea - - https://github.com/diamkil/docker-notea - - https://registry.hub.docker.com/r/diamkil/notea/ -type: application -version: 2.0.7 diff --git a/incubator/notea/2.0.7/app-changelog.md b/incubator/notea/2.0.7/app-changelog.md deleted file mode 100644 index ef86bd5b27c..00000000000 --- a/incubator/notea/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [notea-2.0.7](https://github.com/truecharts/charts/compare/notea-2.0.6...notea-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/notea/2.0.7/app-readme.md b/incubator/notea/2.0.7/app-readme.md deleted file mode 100644 index a34fb941a0e..00000000000 --- a/incubator/notea/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Self hosted note taking, alternative to Notions. Look at Github for config - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/notea](https://truecharts.org/charts/incubator/notea) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/notea/2.0.7/questions.yaml b/incubator/notea/2.0.7/questions.yaml deleted file mode 100644 index c1de1e30d56..00000000000 --- a/incubator/notea/2.0.7/questions.yaml +++ /dev/null @@ -1,1427 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PASSWORD - label: "PASSWORD" - description: "Set the password to use on Noteas Website" - schema: - type: string - default: "" - - variable: STORE_USER - label: "STORE_USER" - description: "User for MinIO Backend" - schema: - type: string - default: "" - - variable: STORE_PASSWORD - label: "STORE_PASSWORD" - description: "Password for MinIO Backend" - schema: - type: string - default: "" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/notea/2.0.8/CHANGELOG.md b/incubator/notea/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..16105be9ef5 --- /dev/null +++ b/incubator/notea/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [notea-2.0.8](https://github.com/truecharts/charts/compare/notea-2.0.7...notea-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [notea-2.0.7](https://github.com/truecharts/charts/compare/notea-2.0.6...notea-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [notea-2.0.6](https://github.com/truecharts/charts/compare/notea-2.0.5...notea-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [notea-2.0.5](https://github.com/truecharts/charts/compare/notea-2.0.4...notea-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [notea-2.0.4](https://github.com/truecharts/charts/compare/notea-2.0.3...notea-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [notea-2.0.3](https://github.com/truecharts/charts/compare/notea-2.0.2...notea-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) + + + + +## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) + + + + +## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) + + + + +## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) + + + + +## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) + + + + +## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) + + + + +## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) + + + + +## [notea-2.0.2](https://github.com/truecharts/charts/compare/notea-2.0.1...notea-2.0.2) (2022-11-30) + + + diff --git a/incubator/notea/2.0.8/Chart.yaml b/incubator/notea/2.0.8/Chart.yaml new file mode 100644 index 00000000000..799db830c77 --- /dev/null +++ b/incubator/notea/2.0.8/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Self hosted note taking, alternative to Notions. Look at Github for config +home: https://truecharts.org/charts/incubator/notea +icon: https://truecharts.org/img/hotlink-ok/chart-icons/notea.png +keywords: + - notea + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: notea +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/notea + - https://hub.docker.com/diamkil/notea + - https://github.com/diamkil/docker-notea + - https://registry.hub.docker.com/r/diamkil/notea/ +type: application +version: 2.0.8 diff --git a/incubator/observium/2.0.8/README.md b/incubator/notea/2.0.8/README.md similarity index 100% rename from incubator/observium/2.0.8/README.md rename to incubator/notea/2.0.8/README.md diff --git a/incubator/notea/2.0.8/app-changelog.md b/incubator/notea/2.0.8/app-changelog.md new file mode 100644 index 00000000000..45d7aed5824 --- /dev/null +++ b/incubator/notea/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [notea-2.0.8](https://github.com/truecharts/charts/compare/notea-2.0.7...notea-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/notea/2.0.8/app-readme.md b/incubator/notea/2.0.8/app-readme.md new file mode 100644 index 00000000000..71ed3443b34 --- /dev/null +++ b/incubator/notea/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Self hosted note taking, alternative to Notions. Look at Github for config + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/notea](https://truecharts.org/charts/incubator/notea) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/observium/2.0.8/charts/common-11.1.2.tgz b/incubator/notea/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/observium/2.0.8/charts/common-11.1.2.tgz rename to incubator/notea/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/notea/2.0.7/ix_values.yaml b/incubator/notea/2.0.8/ix_values.yaml similarity index 100% rename from incubator/notea/2.0.7/ix_values.yaml rename to incubator/notea/2.0.8/ix_values.yaml diff --git a/incubator/notea/2.0.8/questions.yaml b/incubator/notea/2.0.8/questions.yaml new file mode 100644 index 00000000000..48146b6722e --- /dev/null +++ b/incubator/notea/2.0.8/questions.yaml @@ -0,0 +1,1427 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PASSWORD + label: "PASSWORD" + description: "Set the password to use on Noteas Website" + schema: + type: string + default: "" + - variable: STORE_USER + label: "STORE_USER" + description: "User for MinIO Backend" + schema: + type: string + default: "" + - variable: STORE_PASSWORD + label: "STORE_PASSWORD" + description: "Password for MinIO Backend" + schema: + type: string + default: "" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/notea/2.0.7/templates/common.yaml b/incubator/notea/2.0.8/templates/common.yaml similarity index 100% rename from incubator/notea/2.0.7/templates/common.yaml rename to incubator/notea/2.0.8/templates/common.yaml diff --git a/incubator/observium/2.0.8/values.yaml b/incubator/notea/2.0.8/values.yaml similarity index 100% rename from incubator/observium/2.0.8/values.yaml rename to incubator/notea/2.0.8/values.yaml diff --git a/incubator/observium/2.0.8/CHANGELOG.md b/incubator/observium/2.0.8/CHANGELOG.md deleted file mode 100644 index 7b0f4d9da8f..00000000000 --- a/incubator/observium/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [observium-2.0.8](https://github.com/truecharts/charts/compare/observium-2.0.7...observium-2.0.8) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/observium to latest - - - - -## [observium-2.0.7](https://github.com/truecharts/charts/compare/observium-2.0.6...observium-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [observium-2.0.6](https://github.com/truecharts/charts/compare/observium-2.0.5...observium-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [observium-2.0.5](https://github.com/truecharts/charts/compare/observium-2.0.4...observium-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [observium-2.0.4](https://github.com/truecharts/charts/compare/observium-2.0.3...observium-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [observium-2.0.3](https://github.com/truecharts/charts/compare/observium-2.0.2...observium-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) - - - - -## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) - - - - -## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) - - - - -## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) - - - - -## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) - - - - -## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) - - - - -## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) - - - - -## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) - - - diff --git a/incubator/observium/2.0.8/Chart.yaml b/incubator/observium/2.0.8/Chart.yaml deleted file mode 100644 index 0258b1551f3..00000000000 --- a/incubator/observium/2.0.8/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Network-Management -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Observium is an autodiscovering network monitoring platform supporting a wide range of hardware platforms and operating systems.[br][br]" -home: https://truecharts.org/charts/incubator/observium -icon: https://truecharts.org/img/hotlink-ok/chart-icons/observium.png -keywords: - - observium - - Network-Management -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: observium -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/observium - - https://www.observium.org/ - - https://hub.docker.com/r/uberchuckie/observium/ -type: application -version: 2.0.8 diff --git a/incubator/observium/2.0.8/app-changelog.md b/incubator/observium/2.0.8/app-changelog.md deleted file mode 100644 index ae5f3920c46..00000000000 --- a/incubator/observium/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [observium-2.0.8](https://github.com/truecharts/charts/compare/observium-2.0.7...observium-2.0.8) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/observium to latest - - \ No newline at end of file diff --git a/incubator/observium/2.0.8/app-readme.md b/incubator/observium/2.0.8/app-readme.md deleted file mode 100644 index 01162541f9e..00000000000 --- a/incubator/observium/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Observium is an autodiscovering network monitoring platform supporting a wide range of hardware platforms and operating systems.[br][br] - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/observium](https://truecharts.org/charts/incubator/observium) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/observium/2.0.8/questions.yaml b/incubator/observium/2.0.8/questions.yaml deleted file mode 100644 index a7cb057cc26..00000000000 --- a/incubator/observium/2.0.8/questions.yaml +++ /dev/null @@ -1,1879 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8668 - required: true - - variable: udpport1 - label: 'udpport1 service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: udpport1 - label: "udpport1 Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8514 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: observium - label: "observium Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/observium/2.0.9/CHANGELOG.md b/incubator/observium/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..574600749b3 --- /dev/null +++ b/incubator/observium/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [observium-2.0.9](https://github.com/truecharts/charts/compare/observium-2.0.8...observium-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [observium-2.0.8](https://github.com/truecharts/charts/compare/observium-2.0.7...observium-2.0.8) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/observium to latest + + + + +## [observium-2.0.7](https://github.com/truecharts/charts/compare/observium-2.0.6...observium-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [observium-2.0.6](https://github.com/truecharts/charts/compare/observium-2.0.5...observium-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [observium-2.0.5](https://github.com/truecharts/charts/compare/observium-2.0.4...observium-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [observium-2.0.4](https://github.com/truecharts/charts/compare/observium-2.0.3...observium-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [observium-2.0.3](https://github.com/truecharts/charts/compare/observium-2.0.2...observium-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) + + + + +## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) + + + + +## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) + + + + +## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) + + + + +## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) + + + + +## [observium-2.0.2](https://github.com/truecharts/charts/compare/observium-2.0.1...observium-2.0.2) (2022-11-30) + + + + diff --git a/incubator/observium/2.0.9/Chart.yaml b/incubator/observium/2.0.9/Chart.yaml new file mode 100644 index 00000000000..d0b66d5afcc --- /dev/null +++ b/incubator/observium/2.0.9/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Network-Management +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Observium is an autodiscovering network monitoring platform supporting a wide range of hardware platforms and operating systems.[br][br]" +home: https://truecharts.org/charts/incubator/observium +icon: https://truecharts.org/img/hotlink-ok/chart-icons/observium.png +keywords: + - observium + - Network-Management +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: observium +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/observium + - https://hub.docker.com/uberchuckie/observium + - https://www.observium.org/ +type: application +version: 2.0.9 diff --git a/incubator/openaudible/2.0.7/README.md b/incubator/observium/2.0.9/README.md similarity index 100% rename from incubator/openaudible/2.0.7/README.md rename to incubator/observium/2.0.9/README.md diff --git a/incubator/observium/2.0.9/app-changelog.md b/incubator/observium/2.0.9/app-changelog.md new file mode 100644 index 00000000000..fdbb2db4278 --- /dev/null +++ b/incubator/observium/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [observium-2.0.9](https://github.com/truecharts/charts/compare/observium-2.0.8...observium-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/observium/2.0.9/app-readme.md b/incubator/observium/2.0.9/app-readme.md new file mode 100644 index 00000000000..7e642ab39f6 --- /dev/null +++ b/incubator/observium/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +Observium is an autodiscovering network monitoring platform supporting a wide range of hardware platforms and operating systems.[br][br] + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/observium](https://truecharts.org/charts/incubator/observium) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/openaudible/2.0.7/charts/common-11.1.2.tgz b/incubator/observium/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/openaudible/2.0.7/charts/common-11.1.2.tgz rename to incubator/observium/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/observium/2.0.8/ix_values.yaml b/incubator/observium/2.0.9/ix_values.yaml similarity index 100% rename from incubator/observium/2.0.8/ix_values.yaml rename to incubator/observium/2.0.9/ix_values.yaml diff --git a/incubator/observium/2.0.9/questions.yaml b/incubator/observium/2.0.9/questions.yaml new file mode 100644 index 00000000000..36f56ed7e5b --- /dev/null +++ b/incubator/observium/2.0.9/questions.yaml @@ -0,0 +1,1920 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8668 + required: true + - variable: udpport1 + label: 'udpport1 service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: udpport1 + label: "udpport1 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8514 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: observium + label: "observium Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/observium/2.0.8/templates/common.yaml b/incubator/observium/2.0.9/templates/common.yaml similarity index 100% rename from incubator/observium/2.0.8/templates/common.yaml rename to incubator/observium/2.0.9/templates/common.yaml diff --git a/incubator/openaudible/2.0.7/values.yaml b/incubator/observium/2.0.9/values.yaml similarity index 100% rename from incubator/openaudible/2.0.7/values.yaml rename to incubator/observium/2.0.9/values.yaml diff --git a/incubator/openaudible/2.0.7/CHANGELOG.md b/incubator/openaudible/2.0.7/CHANGELOG.md deleted file mode 100644 index f9938f6306b..00000000000 --- a/incubator/openaudible/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [openaudible-2.0.7](https://github.com/truecharts/charts/compare/openaudible-2.0.6...openaudible-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [openaudible-2.0.6](https://github.com/truecharts/charts/compare/openaudible-2.0.5...openaudible-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [openaudible-2.0.5](https://github.com/truecharts/charts/compare/openaudible-2.0.4...openaudible-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [openaudible-2.0.4](https://github.com/truecharts/charts/compare/openaudible-2.0.3...openaudible-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [openaudible-2.0.3](https://github.com/truecharts/charts/compare/openaudible-2.0.2...openaudible-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - - - -## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) - - diff --git a/incubator/openaudible/2.0.7/Chart.yaml b/incubator/openaudible/2.0.7/Chart.yaml deleted file mode 100644 index cc47e237f1f..00000000000 --- a/incubator/openaudible/2.0.7/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: All your audiobooks in one place -home: https://truecharts.org/charts/incubator/openaudible -icon: https://truecharts.org/img/hotlink-ok/chart-icons/openaudible.png -keywords: - - audible -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: openaudible -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/openaudible - - https://github.com/openaudible/openaudible_docker -version: 2.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/openaudible/2.0.7/app-changelog.md b/incubator/openaudible/2.0.7/app-changelog.md deleted file mode 100644 index 95bde19c7dd..00000000000 --- a/incubator/openaudible/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [openaudible-2.0.7](https://github.com/truecharts/charts/compare/openaudible-2.0.6...openaudible-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/openaudible/2.0.7/app-readme.md b/incubator/openaudible/2.0.7/app-readme.md deleted file mode 100644 index e1bec96c600..00000000000 --- a/incubator/openaudible/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -All your audiobooks in one place - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/openaudible](https://truecharts.org/charts/incubator/openaudible) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/openaudible/2.0.7/questions.yaml b/incubator/openaudible/2.0.7/questions.yaml deleted file mode 100644 index 4c544c529e0..00000000000 --- a/incubator/openaudible/2.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10325 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Configuration. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/openaudible/2.0.8/CHANGELOG.md b/incubator/openaudible/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..27386b86f32 --- /dev/null +++ b/incubator/openaudible/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [openaudible-2.0.8](https://github.com/truecharts/charts/compare/openaudible-2.0.7...openaudible-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [openaudible-2.0.7](https://github.com/truecharts/charts/compare/openaudible-2.0.6...openaudible-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [openaudible-2.0.6](https://github.com/truecharts/charts/compare/openaudible-2.0.5...openaudible-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [openaudible-2.0.5](https://github.com/truecharts/charts/compare/openaudible-2.0.4...openaudible-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [openaudible-2.0.4](https://github.com/truecharts/charts/compare/openaudible-2.0.3...openaudible-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [openaudible-2.0.3](https://github.com/truecharts/charts/compare/openaudible-2.0.2...openaudible-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) + + + + +## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) + + + + +## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) + + + + +## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) + + + + +## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) + + + + +## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) + + + + +## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) + + + + +## [openaudible-2.0.2](https://github.com/truecharts/charts/compare/openaudible-2.0.1...openaudible-2.0.2) (2022-11-30) + + + diff --git a/incubator/openaudible/2.0.8/Chart.yaml b/incubator/openaudible/2.0.8/Chart.yaml new file mode 100644 index 00000000000..80b7175fdf2 --- /dev/null +++ b/incubator/openaudible/2.0.8/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: All your audiobooks in one place +home: https://truecharts.org/charts/incubator/openaudible +icon: https://truecharts.org/img/hotlink-ok/chart-icons/openaudible.png +keywords: + - audible +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: openaudible +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/openaudible + - https://hub.docker.com/openaudible/openaudible + - https://github.com/openaudible/openaudible_docker +version: 2.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/openproject/3.0.21/README.md b/incubator/openaudible/2.0.8/README.md similarity index 100% rename from incubator/openproject/3.0.21/README.md rename to incubator/openaudible/2.0.8/README.md diff --git a/incubator/openaudible/2.0.8/app-changelog.md b/incubator/openaudible/2.0.8/app-changelog.md new file mode 100644 index 00000000000..0718df01ca6 --- /dev/null +++ b/incubator/openaudible/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [openaudible-2.0.8](https://github.com/truecharts/charts/compare/openaudible-2.0.7...openaudible-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/openaudible/2.0.8/app-readme.md b/incubator/openaudible/2.0.8/app-readme.md new file mode 100644 index 00000000000..c20e3c5fe5a --- /dev/null +++ b/incubator/openaudible/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +All your audiobooks in one place + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/openaudible](https://truecharts.org/charts/incubator/openaudible) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/openbooks/0.0.1/charts/common-11.1.2.tgz b/incubator/openaudible/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/openbooks/0.0.1/charts/common-11.1.2.tgz rename to incubator/openaudible/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/openaudible/2.0.7/ix_values.yaml b/incubator/openaudible/2.0.8/ix_values.yaml similarity index 100% rename from incubator/openaudible/2.0.7/ix_values.yaml rename to incubator/openaudible/2.0.8/ix_values.yaml diff --git a/incubator/openaudible/2.0.8/questions.yaml b/incubator/openaudible/2.0.8/questions.yaml new file mode 100644 index 00000000000..e16260ad91f --- /dev/null +++ b/incubator/openaudible/2.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10325 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/openaudible/2.0.7/templates/common.yaml b/incubator/openaudible/2.0.8/templates/common.yaml similarity index 100% rename from incubator/openaudible/2.0.7/templates/common.yaml rename to incubator/openaudible/2.0.8/templates/common.yaml diff --git a/incubator/openbooks/0.0.1/values.yaml b/incubator/openaudible/2.0.8/values.yaml similarity index 100% rename from incubator/openbooks/0.0.1/values.yaml rename to incubator/openaudible/2.0.8/values.yaml diff --git a/incubator/openbooks/0.0.1/CHANGELOG.md b/incubator/openbooks/0.0.1/CHANGELOG.md deleted file mode 100644 index e2d867481c2..00000000000 --- a/incubator/openbooks/0.0.1/CHANGELOG.md +++ /dev/null @@ -1,8 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [openbooks-0.0.1]openbooks-0.0.1 (2023-01-15) - diff --git a/incubator/openbooks/0.0.1/Chart.yaml b/incubator/openbooks/0.0.1/Chart.yaml deleted file mode 100644 index 59b4b9e3c12..00000000000 --- a/incubator/openbooks/0.0.1/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "4.5.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: IRC Highway eBook Downloads. -home: https://truecharts.org/charts/incubator/openbooks -icon: https://truecharts.org/img/hotlink-ok/chart-icons/openbooks.png -keywords: - - openbooks - - media -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: openbooks -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/openbooks - - https://github.com/evan-buss/openbooks - - https://hub.docker.com/r/evanbuss/openbooks -type: application -version: 0.0.1 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/openbooks/0.0.1/README.md b/incubator/openbooks/0.0.1/README.md deleted file mode 100644 index 7e59600739c..00000000000 --- a/incubator/openbooks/0.0.1/README.md +++ /dev/null @@ -1 +0,0 @@ -# README diff --git a/incubator/openbooks/0.0.1/app-changelog.md b/incubator/openbooks/0.0.1/app-changelog.md deleted file mode 100644 index 42dbe92e4a8..00000000000 --- a/incubator/openbooks/0.0.1/app-changelog.md +++ /dev/null @@ -1,4 +0,0 @@ - - -## [openbooks-0.0.1]openbooks-0.0.1 (2023-01-15) - diff --git a/incubator/openbooks/0.0.1/questions.yaml b/incubator/openbooks/0.0.1/questions.yaml deleted file mode 100644 index 858ac3596c8..00000000000 --- a/incubator/openbooks/0.0.1/questions.yaml +++ /dev/null @@ -1,1891 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: openbooks - group: App Configuration - label: OpenBooks Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: user_name - label: User Name - description: Username used to connect to IRC server. - schema: - type: string - default: "" - required: true - - variable: server - label: Server - description: The IRC server:port to connect to. - schema: - type: string - default: "irc.irchighway.net:6697" - required: true - - variable: tls - label: TLS - description: Connect to IRC server over TLS. - schema: - type: boolean - default: true - - variable: search - label: Search - description: The IRC search operator to use. - schema: - type: string - default: search - enum: - - value: search - description: Search - - value: searchook - description: Searchook - - variable: debug - label: Debug - description: Display additional debug information, including all config values. - schema: - type: boolean - default: false - - variable: log - label: Log - description: Save raw IRC logs for each client connection. - schema: - type: boolean - default: false - - variable: persist - label: Persist - description: Save eBook files after sending to browser. - schema: - type: boolean - default: true - - variable: no_browser_downloads - label: No Browser Downloads - description: Don't send files to browser but save them to disk. - schema: - type: boolean - default: true - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10608 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: books - label: App Books Storage - description: Stores the Application Books. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/openbooks/0.0.2/CHANGELOG.md b/incubator/openbooks/0.0.2/CHANGELOG.md new file mode 100644 index 00000000000..73c0b1bc918 --- /dev/null +++ b/incubator/openbooks/0.0.2/CHANGELOG.md @@ -0,0 +1,17 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [openbooks-0.0.2](https://github.com/truecharts/charts/compare/openbooks-0.0.1...openbooks-0.0.2) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [openbooks-0.0.1]openbooks-0.0.1 (2023-01-15) + diff --git a/incubator/openbooks/0.0.2/Chart.yaml b/incubator/openbooks/0.0.2/Chart.yaml new file mode 100644 index 00000000000..e75a35d34e0 --- /dev/null +++ b/incubator/openbooks/0.0.2/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "4.5.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: IRC Highway eBook Downloads. +home: https://truecharts.org/charts/incubator/openbooks +icon: https://truecharts.org/img/hotlink-ok/chart-icons/openbooks.png +keywords: + - openbooks + - media +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: openbooks +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/openbooks + - https://hub.docker.com/evanbuss/openbooks + - https://github.com/evan-buss/openbooks +type: application +version: 0.0.2 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/openra/2.0.7/README.md b/incubator/openbooks/0.0.2/README.md similarity index 100% rename from incubator/openra/2.0.7/README.md rename to incubator/openbooks/0.0.2/README.md diff --git a/incubator/openbooks/0.0.2/app-changelog.md b/incubator/openbooks/0.0.2/app-changelog.md new file mode 100644 index 00000000000..21f2cffb095 --- /dev/null +++ b/incubator/openbooks/0.0.2/app-changelog.md @@ -0,0 +1,9 @@ + + +## [openbooks-0.0.2](https://github.com/truecharts/charts/compare/openbooks-0.0.1...openbooks-0.0.2) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/openbooks/0.0.1/app-readme.md b/incubator/openbooks/0.0.2/app-readme.md similarity index 100% rename from incubator/openbooks/0.0.1/app-readme.md rename to incubator/openbooks/0.0.2/app-readme.md diff --git a/incubator/openproject/3.0.21/charts/common-11.1.2.tgz b/incubator/openbooks/0.0.2/charts/common-11.1.2.tgz similarity index 100% rename from incubator/openproject/3.0.21/charts/common-11.1.2.tgz rename to incubator/openbooks/0.0.2/charts/common-11.1.2.tgz diff --git a/incubator/openbooks/0.0.1/ix_values.yaml b/incubator/openbooks/0.0.2/ix_values.yaml similarity index 100% rename from incubator/openbooks/0.0.1/ix_values.yaml rename to incubator/openbooks/0.0.2/ix_values.yaml diff --git a/incubator/openbooks/0.0.2/questions.yaml b/incubator/openbooks/0.0.2/questions.yaml new file mode 100644 index 00000000000..d9c25511cf5 --- /dev/null +++ b/incubator/openbooks/0.0.2/questions.yaml @@ -0,0 +1,1932 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: openbooks + group: App Configuration + label: OpenBooks Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: user_name + label: User Name + description: Username used to connect to IRC server. + schema: + type: string + default: "" + required: true + - variable: server + label: Server + description: The IRC server:port to connect to. + schema: + type: string + default: "irc.irchighway.net:6697" + required: true + - variable: tls + label: TLS + description: Connect to IRC server over TLS. + schema: + type: boolean + default: true + - variable: search + label: Search + description: The IRC search operator to use. + schema: + type: string + default: search + enum: + - value: search + description: Search + - value: searchook + description: Searchook + - variable: debug + label: Debug + description: Display additional debug information, including all config values. + schema: + type: boolean + default: false + - variable: log + label: Log + description: Save raw IRC logs for each client connection. + schema: + type: boolean + default: false + - variable: persist + label: Persist + description: Save eBook files after sending to browser. + schema: + type: boolean + default: true + - variable: no_browser_downloads + label: No Browser Downloads + description: Don't send files to browser but save them to disk. + schema: + type: boolean + default: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10608 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: books + label: App Books Storage + description: Stores the Application Books. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/openbooks/0.0.1/templates/_args.tpl b/incubator/openbooks/0.0.2/templates/_args.tpl similarity index 100% rename from incubator/openbooks/0.0.1/templates/_args.tpl rename to incubator/openbooks/0.0.2/templates/_args.tpl diff --git a/incubator/openbooks/0.0.1/templates/common.yaml b/incubator/openbooks/0.0.2/templates/common.yaml similarity index 100% rename from incubator/openbooks/0.0.1/templates/common.yaml rename to incubator/openbooks/0.0.2/templates/common.yaml diff --git a/incubator/openproject/3.0.21/values.yaml b/incubator/openbooks/0.0.2/values.yaml similarity index 100% rename from incubator/openproject/3.0.21/values.yaml rename to incubator/openbooks/0.0.2/values.yaml diff --git a/incubator/openproject/3.0.21/CHANGELOG.md b/incubator/openproject/3.0.21/CHANGELOG.md deleted file mode 100644 index 19b80c1de1d..00000000000 --- a/incubator/openproject/3.0.21/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [openproject-3.0.21](https://github.com/truecharts/charts/compare/openproject-3.0.20...openproject-3.0.21) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/openproject to v12.4.3 - - - - -## [openproject-3.0.20](https://github.com/truecharts/charts/compare/openproject-3.0.19...openproject-3.0.20) (2023-01-30) - - - - -## [openproject-3.0.19](https://github.com/truecharts/charts/compare/openproject-3.0.18...openproject-3.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [openproject-3.0.18](https://github.com/truecharts/charts/compare/openproject-3.0.17...openproject-3.0.18) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [openproject-3.0.17](https://github.com/truecharts/charts/compare/openproject-3.0.16...openproject-3.0.17) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [openproject-3.0.16](https://github.com/truecharts/charts/compare/openproject-3.0.15...openproject-3.0.16) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [openproject-3.0.15](https://github.com/truecharts/charts/compare/openproject-3.0.14...openproject-3.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [openproject-3.0.14](https://github.com/truecharts/charts/compare/openproject-3.0.13...openproject-3.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [openproject-3.0.13](https://github.com/truecharts/charts/compare/openproject-3.0.12...openproject-3.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [openproject-3.0.12](https://github.com/truecharts/charts/compare/openproject-3.0.11...openproject-3.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [openproject-3.0.11](https://github.com/truecharts/charts/compare/openproject-3.0.10...openproject-3.0.11) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - diff --git a/incubator/openproject/3.0.21/Chart.yaml b/incubator/openproject/3.0.21/Chart.yaml deleted file mode 100644 index 21ac37930a5..00000000000 --- a/incubator/openproject/3.0.21/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -appVersion: "12.4.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -deprecated: false -description: OpenProject is a web-based project management system for location-independent team collaboration. -home: https://truecharts.org/charts/incubator/openproject -icon: https://truecharts.org/img/hotlink-ok/chart-icons/openproject.png -keywords: - - openproject - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: openproject -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/openproject - - http://openproject.org - - https://hub.docker.com/u/openproject -type: application -version: 3.0.21 -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - truecharts.org/grade: U diff --git a/incubator/openproject/3.0.21/app-changelog.md b/incubator/openproject/3.0.21/app-changelog.md deleted file mode 100644 index a29d5f83e14..00000000000 --- a/incubator/openproject/3.0.21/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [openproject-3.0.21](https://github.com/truecharts/charts/compare/openproject-3.0.20...openproject-3.0.21) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/openproject to v12.4.3 - - \ No newline at end of file diff --git a/incubator/openproject/3.0.22/CHANGELOG.md b/incubator/openproject/3.0.22/CHANGELOG.md new file mode 100644 index 00000000000..a7b7a4e7be1 --- /dev/null +++ b/incubator/openproject/3.0.22/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [openproject-3.0.22](https://github.com/truecharts/charts/compare/openproject-3.0.21...openproject-3.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [openproject-3.0.21](https://github.com/truecharts/charts/compare/openproject-3.0.20...openproject-3.0.21) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/openproject to v12.4.3 + + + + +## [openproject-3.0.20](https://github.com/truecharts/charts/compare/openproject-3.0.19...openproject-3.0.20) (2023-01-30) + + + + +## [openproject-3.0.19](https://github.com/truecharts/charts/compare/openproject-3.0.18...openproject-3.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [openproject-3.0.18](https://github.com/truecharts/charts/compare/openproject-3.0.17...openproject-3.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [openproject-3.0.17](https://github.com/truecharts/charts/compare/openproject-3.0.16...openproject-3.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [openproject-3.0.16](https://github.com/truecharts/charts/compare/openproject-3.0.15...openproject-3.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [openproject-3.0.15](https://github.com/truecharts/charts/compare/openproject-3.0.14...openproject-3.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [openproject-3.0.14](https://github.com/truecharts/charts/compare/openproject-3.0.13...openproject-3.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [openproject-3.0.13](https://github.com/truecharts/charts/compare/openproject-3.0.12...openproject-3.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [openproject-3.0.12](https://github.com/truecharts/charts/compare/openproject-3.0.11...openproject-3.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + diff --git a/incubator/openproject/3.0.22/Chart.yaml b/incubator/openproject/3.0.22/Chart.yaml new file mode 100644 index 00000000000..0cdd175d709 --- /dev/null +++ b/incubator/openproject/3.0.22/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "12.4.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +deprecated: false +description: OpenProject is a web-based project management system for location-independent team collaboration. +home: https://truecharts.org/charts/incubator/openproject +icon: https://truecharts.org/img/hotlink-ok/chart-icons/openproject.png +keywords: + - openproject + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: openproject +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/openproject + - https://hub.docker.com/openproject/community + - http://openproject.org +type: application +version: 3.0.22 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + truecharts.org/grade: U diff --git a/incubator/owntracks/0.0.5/README.md b/incubator/openproject/3.0.22/README.md similarity index 100% rename from incubator/owntracks/0.0.5/README.md rename to incubator/openproject/3.0.22/README.md diff --git a/incubator/openproject/3.0.22/app-changelog.md b/incubator/openproject/3.0.22/app-changelog.md new file mode 100644 index 00000000000..6928c681ed5 --- /dev/null +++ b/incubator/openproject/3.0.22/app-changelog.md @@ -0,0 +1,9 @@ + + +## [openproject-3.0.22](https://github.com/truecharts/charts/compare/openproject-3.0.21...openproject-3.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/openproject/3.0.21/app-readme.md b/incubator/openproject/3.0.22/app-readme.md similarity index 100% rename from incubator/openproject/3.0.21/app-readme.md rename to incubator/openproject/3.0.22/app-readme.md diff --git a/incubator/openra/2.0.7/charts/common-11.1.2.tgz b/incubator/openproject/3.0.22/charts/common-11.1.2.tgz similarity index 100% rename from incubator/openra/2.0.7/charts/common-11.1.2.tgz rename to incubator/openproject/3.0.22/charts/common-11.1.2.tgz diff --git a/incubator/openproject/3.0.21/charts/postgresql-11.0.22.tgz b/incubator/openproject/3.0.22/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/openproject/3.0.21/charts/postgresql-11.0.22.tgz rename to incubator/openproject/3.0.22/charts/postgresql-11.0.22.tgz diff --git a/incubator/openproject/3.0.21/ix_values.yaml b/incubator/openproject/3.0.22/ix_values.yaml similarity index 100% rename from incubator/openproject/3.0.21/ix_values.yaml rename to incubator/openproject/3.0.22/ix_values.yaml diff --git a/incubator/openproject/3.0.21/questions.yaml b/incubator/openproject/3.0.22/questions.yaml similarity index 100% rename from incubator/openproject/3.0.21/questions.yaml rename to incubator/openproject/3.0.22/questions.yaml diff --git a/incubator/openproject/3.0.21/templates/_secrets.tpl b/incubator/openproject/3.0.22/templates/_secrets.tpl similarity index 100% rename from incubator/openproject/3.0.21/templates/_secrets.tpl rename to incubator/openproject/3.0.22/templates/_secrets.tpl diff --git a/incubator/openproject/3.0.21/templates/common.yaml b/incubator/openproject/3.0.22/templates/common.yaml similarity index 100% rename from incubator/openproject/3.0.21/templates/common.yaml rename to incubator/openproject/3.0.22/templates/common.yaml diff --git a/incubator/openra/2.0.7/values.yaml b/incubator/openproject/3.0.22/values.yaml similarity index 100% rename from incubator/openra/2.0.7/values.yaml rename to incubator/openproject/3.0.22/values.yaml diff --git a/incubator/openra/2.0.7/CHANGELOG.md b/incubator/openra/2.0.7/CHANGELOG.md deleted file mode 100644 index d6dabc60284..00000000000 --- a/incubator/openra/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [openra-2.0.7](https://github.com/truecharts/charts/compare/openra-2.0.6...openra-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [openra-2.0.6](https://github.com/truecharts/charts/compare/openra-2.0.5...openra-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [openra-2.0.5](https://github.com/truecharts/charts/compare/openra-2.0.4...openra-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [openra-2.0.4](https://github.com/truecharts/charts/compare/openra-2.0.3...openra-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [openra-2.0.3](https://github.com/truecharts/charts/compare/openra-2.0.2...openra-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - - - -## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) - - diff --git a/incubator/openra/2.0.7/Chart.yaml b/incubator/openra/2.0.7/Chart.yaml deleted file mode 100644 index 0591b9bfb82..00000000000 --- a/incubator/openra/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Network-Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Mudislanders Template for mounting OpenRA's dedicated server by rmoriz [br][br]" -home: https://truecharts.org/charts/incubator/openra -icon: https://truecharts.org/img/hotlink-ok/chart-icons/openra.png -keywords: - - openra - - Network-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: openra -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/openra - - http://openra.net/ - - https://hub.docker.com/r/rmoriz/openra -type: application -version: 2.0.7 diff --git a/incubator/openra/2.0.7/app-changelog.md b/incubator/openra/2.0.7/app-changelog.md deleted file mode 100644 index 2a7d555f064..00000000000 --- a/incubator/openra/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [openra-2.0.7](https://github.com/truecharts/charts/compare/openra-2.0.6...openra-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/openra/2.0.7/app-readme.md b/incubator/openra/2.0.7/app-readme.md deleted file mode 100644 index 4a9e21b1de6..00000000000 --- a/incubator/openra/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Mudislanders Template for mounting OpenRA's dedicated server by rmoriz [br][br] - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/openra](https://truecharts.org/charts/incubator/openra) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/openra/2.0.7/questions.yaml b/incubator/openra/2.0.7/questions.yaml deleted file mode 100644 index a134246bfee..00000000000 --- a/incubator/openra/2.0.7/questions.yaml +++ /dev/null @@ -1,1818 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ListenPort - label: "ListenPort" - description: "ListenPort for multiple servers " - schema: - type: string - default: "1234" - - variable: ExternalPort - label: "ExternalPort" - description: "ExternalPort for multiple servers" - schema: - type: string - default: "1234" - - variable: Mod - label: "Mod" - description: "Game the server runs eg- cnc, ra or d2k" - schema: - type: string - default: "ra" - - variable: Name - label: "Name" - description: "Name of server to advertise" - schema: - type: string - default: "DEDICATED SERVER" - - variable: Ban - label: "Ban" - description: "Comma delimited list of banned IP addresses" - schema: - type: string - default: "" - - variable: MOTD - label: "MOTD" - description: "Message shown to users on joining game" - schema: - type: string - default: "Have Fun!!" - - variable: Password - label: "Password" - description: "Password needed by users to join server" - schema: - type: string - default: "" - - variable: MAP - label: "MAP" - description: "Hash ID of selected startup map" - schema: - type: string - default: "" - - variable: AdvertiseOnline - label: "AdvertiseOnline" - description: "Advertise server on openRA public servers" - schema: - type: string - default: "True" - - variable: EnableSingleplayer - label: "EnableSingleplayer" - description: "Enable single players on server" - schema: - type: string - default: "False" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 1234 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/openra/2.0.8/CHANGELOG.md b/incubator/openra/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..197f75221c1 --- /dev/null +++ b/incubator/openra/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [openra-2.0.8](https://github.com/truecharts/charts/compare/openra-2.0.7...openra-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [openra-2.0.7](https://github.com/truecharts/charts/compare/openra-2.0.6...openra-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [openra-2.0.6](https://github.com/truecharts/charts/compare/openra-2.0.5...openra-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [openra-2.0.5](https://github.com/truecharts/charts/compare/openra-2.0.4...openra-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [openra-2.0.4](https://github.com/truecharts/charts/compare/openra-2.0.3...openra-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [openra-2.0.3](https://github.com/truecharts/charts/compare/openra-2.0.2...openra-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) + + + + +## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) + + + + +## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) + + + + +## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) + + + + +## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) + + + + +## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) + + + + +## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) + + + + +## [openra-2.0.2](https://github.com/truecharts/charts/compare/openra-2.0.1...openra-2.0.2) (2022-11-30) + + + diff --git a/incubator/openra/2.0.8/Chart.yaml b/incubator/openra/2.0.8/Chart.yaml new file mode 100644 index 00000000000..e19ed2d9de5 --- /dev/null +++ b/incubator/openra/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Network-Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Mudislanders Template for mounting OpenRA's dedicated server by rmoriz [br][br]" +home: https://truecharts.org/charts/incubator/openra +icon: https://truecharts.org/img/hotlink-ok/chart-icons/openra.png +keywords: + - openra + - Network-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: openra +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/openra + - https://hub.docker.com/rmoriz/openra + - http://openra.net/ +type: application +version: 2.0.8 diff --git a/incubator/pastey/2.0.7/README.md b/incubator/openra/2.0.8/README.md similarity index 100% rename from incubator/pastey/2.0.7/README.md rename to incubator/openra/2.0.8/README.md diff --git a/incubator/openra/2.0.8/app-changelog.md b/incubator/openra/2.0.8/app-changelog.md new file mode 100644 index 00000000000..546e1eddfd3 --- /dev/null +++ b/incubator/openra/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [openra-2.0.8](https://github.com/truecharts/charts/compare/openra-2.0.7...openra-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/openra/2.0.8/app-readme.md b/incubator/openra/2.0.8/app-readme.md new file mode 100644 index 00000000000..31e7a965592 --- /dev/null +++ b/incubator/openra/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Mudislanders Template for mounting OpenRA's dedicated server by rmoriz [br][br] + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/openra](https://truecharts.org/charts/incubator/openra) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/owntracks/0.0.5/charts/common-11.1.2.tgz b/incubator/openra/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/owntracks/0.0.5/charts/common-11.1.2.tgz rename to incubator/openra/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/openra/2.0.7/ix_values.yaml b/incubator/openra/2.0.8/ix_values.yaml similarity index 100% rename from incubator/openra/2.0.7/ix_values.yaml rename to incubator/openra/2.0.8/ix_values.yaml diff --git a/incubator/openra/2.0.8/questions.yaml b/incubator/openra/2.0.8/questions.yaml new file mode 100644 index 00000000000..65548ea4067 --- /dev/null +++ b/incubator/openra/2.0.8/questions.yaml @@ -0,0 +1,1859 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ListenPort + label: "ListenPort" + description: "ListenPort for multiple servers " + schema: + type: string + default: "1234" + - variable: ExternalPort + label: "ExternalPort" + description: "ExternalPort for multiple servers" + schema: + type: string + default: "1234" + - variable: Mod + label: "Mod" + description: "Game the server runs eg- cnc, ra or d2k" + schema: + type: string + default: "ra" + - variable: Name + label: "Name" + description: "Name of server to advertise" + schema: + type: string + default: "DEDICATED SERVER" + - variable: Ban + label: "Ban" + description: "Comma delimited list of banned IP addresses" + schema: + type: string + default: "" + - variable: MOTD + label: "MOTD" + description: "Message shown to users on joining game" + schema: + type: string + default: "Have Fun!!" + - variable: Password + label: "Password" + description: "Password needed by users to join server" + schema: + type: string + default: "" + - variable: MAP + label: "MAP" + description: "Hash ID of selected startup map" + schema: + type: string + default: "" + - variable: AdvertiseOnline + label: "AdvertiseOnline" + description: "Advertise server on openRA public servers" + schema: + type: string + default: "True" + - variable: EnableSingleplayer + label: "EnableSingleplayer" + description: "Enable single players on server" + schema: + type: string + default: "False" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 1234 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/openra/2.0.7/templates/common.yaml b/incubator/openra/2.0.8/templates/common.yaml similarity index 100% rename from incubator/openra/2.0.7/templates/common.yaml rename to incubator/openra/2.0.8/templates/common.yaml diff --git a/incubator/owntracks/0.0.5/values.yaml b/incubator/openra/2.0.8/values.yaml similarity index 100% rename from incubator/owntracks/0.0.5/values.yaml rename to incubator/openra/2.0.8/values.yaml diff --git a/incubator/owntracks/0.0.5/CHANGELOG.md b/incubator/owntracks/0.0.5/CHANGELOG.md deleted file mode 100644 index e15c095f15c..00000000000 --- a/incubator/owntracks/0.0.5/CHANGELOG.md +++ /dev/null @@ -1,40 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [owntracks-0.0.5](https://github.com/truecharts/charts/compare/owntracks-0.0.4...owntracks-0.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [owntracks-0.0.4](https://github.com/truecharts/charts/compare/owntracks-0.0.3...owntracks-0.0.4) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [owntracks-0.0.3](https://github.com/truecharts/charts/compare/owntracks-0.0.2...owntracks-0.0.3) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [owntracks-0.0.2]owntracks-0.0.2 (2022-12-22) - -### Feat - -- Add Owntracks ([#5197](https://github.com/truecharts/charts/issues/5197)) - - \ No newline at end of file diff --git a/incubator/owntracks/0.0.5/Chart.yaml b/incubator/owntracks/0.0.5/Chart.yaml deleted file mode 100644 index 7559e18dba2..00000000000 --- a/incubator/owntracks/0.0.5/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "0.9.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: The OwnTracks Recorder is a lightweight program for storing and accessing location data published via MQTT (or HTTP) by the OwnTracks apps. -home: https://truecharts.org/charts/incubator/owntracks -icon: https://truecharts.org/img/hotlink-ok/chart-icons/owntracks.png -keywords: - - owncharts - - location -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: owntracks -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/owntracks - - https://github.com/owntracks/recorder - - https://github.com/owntracks/docker-recorder -type: application -version: 0.0.5 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/owntracks/0.0.5/app-changelog.md b/incubator/owntracks/0.0.5/app-changelog.md deleted file mode 100644 index 3164fb42181..00000000000 --- a/incubator/owntracks/0.0.5/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [owntracks-0.0.5](https://github.com/truecharts/charts/compare/owntracks-0.0.4...owntracks-0.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/owntracks/0.0.5/app-readme.md b/incubator/owntracks/0.0.5/app-readme.md deleted file mode 100644 index 73996cac3ac..00000000000 --- a/incubator/owntracks/0.0.5/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -The OwnTracks Recorder is a lightweight program for storing and accessing location data published via MQTT (or HTTP) by the OwnTracks apps. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/owntracks](https://truecharts.org/charts/incubator/owntracks) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/owntracks/0.0.5/questions.yaml b/incubator/owntracks/0.0.5/questions.yaml deleted file mode 100644 index 9a7e0dd8274..00000000000 --- a/incubator/owntracks/0.0.5/questions.yaml +++ /dev/null @@ -1,1895 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: owntracks - group: App Configuration - label: OwnTracks Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: otr_host - label: MQTT OTR Host - description: Set the MQTT host URL or IP. For example . - schema: - type: string - default: "" - - variable: otr_port - label: OTR MQTT Port - description: Set to the port that your MQTT uses. - schema: - type: int - default: 1883 - - variable: otr_user - label: OTR MQTT User - description: Set to the user that your MQTT uses. - schema: - type: string - default: "" - - variable: otr_pass - label: OTR MQTT Password - description: Set to the password that your MQTT uses. - schema: - type: string - private: true - default: "" - - variable: otr_precision - label: OTR Precision - description: Reverse-geo precision - schema: - type: int - default: 7 - - variable: otr_geokey - label: OTR Geo Key - description: API key for reverse-geo lookups - schema: - type: string - private: true - default: "" - - variable: otr_browserapikey - label: OTR Browser API Key - description: Google maps browser API key - schema: - type: string - private: true - default: "" - - variable: otr_serverlabel - label: OTR Server Label - description: Server label for Web - schema: - type: string - required: true - default: OwnTracks - - variable: otr_lmdbsize - label: OTR LMBD Size - description: Size of the LMDB database. If less than 10485760 (10 MB) it will be set to 10485760. - schema: - type: int - required: true - default: 104857600000 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8083 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: store - label: App Storage - description: Stores the location data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/owntracks/0.0.6/CHANGELOG.md b/incubator/owntracks/0.0.6/CHANGELOG.md new file mode 100644 index 00000000000..9fa4c8967b9 --- /dev/null +++ b/incubator/owntracks/0.0.6/CHANGELOG.md @@ -0,0 +1,49 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [owntracks-0.0.6](https://github.com/truecharts/charts/compare/owntracks-0.0.5...owntracks-0.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [owntracks-0.0.5](https://github.com/truecharts/charts/compare/owntracks-0.0.4...owntracks-0.0.5) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [owntracks-0.0.4](https://github.com/truecharts/charts/compare/owntracks-0.0.3...owntracks-0.0.4) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [owntracks-0.0.3](https://github.com/truecharts/charts/compare/owntracks-0.0.2...owntracks-0.0.3) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [owntracks-0.0.2]owntracks-0.0.2 (2022-12-22) + +### Feat + +- Add Owntracks ([#5197](https://github.com/truecharts/charts/issues/5197)) + + \ No newline at end of file diff --git a/incubator/owntracks/0.0.6/Chart.yaml b/incubator/owntracks/0.0.6/Chart.yaml new file mode 100644 index 00000000000..3d733fddadf --- /dev/null +++ b/incubator/owntracks/0.0.6/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "0.9.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: The OwnTracks Recorder is a lightweight program for storing and accessing location data published via MQTT (or HTTP) by the OwnTracks apps. +home: https://truecharts.org/charts/incubator/owntracks +icon: https://truecharts.org/img/hotlink-ok/chart-icons/owntracks.png +keywords: + - owncharts + - location +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: owntracks +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/owntracks + - https://hub.docker.com/owntracks/recorder + - https://github.com/owntracks/recorder + - https://github.com/owntracks/docker-recorder +type: application +version: 0.0.6 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/phoronix-test-suite/2.0.7/README.md b/incubator/owntracks/0.0.6/README.md similarity index 100% rename from incubator/phoronix-test-suite/2.0.7/README.md rename to incubator/owntracks/0.0.6/README.md diff --git a/incubator/owntracks/0.0.6/app-changelog.md b/incubator/owntracks/0.0.6/app-changelog.md new file mode 100644 index 00000000000..fed9720e44c --- /dev/null +++ b/incubator/owntracks/0.0.6/app-changelog.md @@ -0,0 +1,9 @@ + + +## [owntracks-0.0.6](https://github.com/truecharts/charts/compare/owntracks-0.0.5...owntracks-0.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/owntracks/0.0.6/app-readme.md b/incubator/owntracks/0.0.6/app-readme.md new file mode 100644 index 00000000000..ace8c1afb09 --- /dev/null +++ b/incubator/owntracks/0.0.6/app-readme.md @@ -0,0 +1,8 @@ +The OwnTracks Recorder is a lightweight program for storing and accessing location data published via MQTT (or HTTP) by the OwnTracks apps. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/owntracks](https://truecharts.org/charts/incubator/owntracks) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/pastey/2.0.7/charts/common-11.1.2.tgz b/incubator/owntracks/0.0.6/charts/common-11.1.2.tgz similarity index 100% rename from incubator/pastey/2.0.7/charts/common-11.1.2.tgz rename to incubator/owntracks/0.0.6/charts/common-11.1.2.tgz diff --git a/incubator/owntracks/0.0.5/ix_values.yaml b/incubator/owntracks/0.0.6/ix_values.yaml similarity index 100% rename from incubator/owntracks/0.0.5/ix_values.yaml rename to incubator/owntracks/0.0.6/ix_values.yaml diff --git a/incubator/owntracks/0.0.6/questions.yaml b/incubator/owntracks/0.0.6/questions.yaml new file mode 100644 index 00000000000..906cd6d1759 --- /dev/null +++ b/incubator/owntracks/0.0.6/questions.yaml @@ -0,0 +1,1936 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: owntracks + group: App Configuration + label: OwnTracks Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: otr_host + label: MQTT OTR Host + description: Set the MQTT host URL or IP. For example . + schema: + type: string + default: "" + - variable: otr_port + label: OTR MQTT Port + description: Set to the port that your MQTT uses. + schema: + type: int + default: 1883 + - variable: otr_user + label: OTR MQTT User + description: Set to the user that your MQTT uses. + schema: + type: string + default: "" + - variable: otr_pass + label: OTR MQTT Password + description: Set to the password that your MQTT uses. + schema: + type: string + private: true + default: "" + - variable: otr_precision + label: OTR Precision + description: Reverse-geo precision + schema: + type: int + default: 7 + - variable: otr_geokey + label: OTR Geo Key + description: API key for reverse-geo lookups + schema: + type: string + private: true + default: "" + - variable: otr_browserapikey + label: OTR Browser API Key + description: Google maps browser API key + schema: + type: string + private: true + default: "" + - variable: otr_serverlabel + label: OTR Server Label + description: Server label for Web + schema: + type: string + required: true + default: OwnTracks + - variable: otr_lmdbsize + label: OTR LMBD Size + description: Size of the LMDB database. If less than 10485760 (10 MB) it will be set to 10485760. + schema: + type: int + required: true + default: 104857600000 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8083 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: store + label: App Storage + description: Stores the location data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/owntracks/0.0.5/templates/_secret.tpl b/incubator/owntracks/0.0.6/templates/_secret.tpl similarity index 100% rename from incubator/owntracks/0.0.5/templates/_secret.tpl rename to incubator/owntracks/0.0.6/templates/_secret.tpl diff --git a/incubator/owntracks/0.0.5/templates/common.yaml b/incubator/owntracks/0.0.6/templates/common.yaml similarity index 100% rename from incubator/owntracks/0.0.5/templates/common.yaml rename to incubator/owntracks/0.0.6/templates/common.yaml diff --git a/incubator/pastey/2.0.7/values.yaml b/incubator/owntracks/0.0.6/values.yaml similarity index 100% rename from incubator/pastey/2.0.7/values.yaml rename to incubator/owntracks/0.0.6/values.yaml diff --git a/incubator/pastey/2.0.7/CHANGELOG.md b/incubator/pastey/2.0.7/CHANGELOG.md deleted file mode 100644 index 67ccd51d740..00000000000 --- a/incubator/pastey/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [pastey-2.0.7](https://github.com/truecharts/charts/compare/pastey-2.0.6...pastey-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [pastey-2.0.6](https://github.com/truecharts/charts/compare/pastey-2.0.5...pastey-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [pastey-2.0.5](https://github.com/truecharts/charts/compare/pastey-2.0.4...pastey-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [pastey-2.0.4](https://github.com/truecharts/charts/compare/pastey-2.0.3...pastey-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [pastey-2.0.3](https://github.com/truecharts/charts/compare/pastey-2.0.2...pastey-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - - - -## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) - - diff --git a/incubator/pastey/2.0.7/Chart.yaml b/incubator/pastey/2.0.7/Chart.yaml deleted file mode 100644 index 842cfe7f6ec..00000000000 --- a/incubator/pastey/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A lightweight, self-hosted paste platform (Pastebin alternative) with language detection and on-disk encryption. -home: https://truecharts.org/charts/incubator/pastey -icon: https://truecharts.org/img/hotlink-ok/chart-icons/pastey.png -keywords: - - pastey - - Productivity - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: pastey -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/pastey - - https://github.com/Cesura/pastey - - https://hub.docker.com/r/cesura/pastey/ -type: application -version: 2.0.7 diff --git a/incubator/pastey/2.0.7/app-changelog.md b/incubator/pastey/2.0.7/app-changelog.md deleted file mode 100644 index fc8fa955e17..00000000000 --- a/incubator/pastey/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [pastey-2.0.7](https://github.com/truecharts/charts/compare/pastey-2.0.6...pastey-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/pastey/2.0.7/app-readme.md b/incubator/pastey/2.0.7/app-readme.md deleted file mode 100644 index 2ac8d745068..00000000000 --- a/incubator/pastey/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A lightweight, self-hosted paste platform (Pastebin alternative) with language detection and on-disk encryption. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/pastey](https://truecharts.org/charts/incubator/pastey) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/pastey/2.0.7/questions.yaml b/incubator/pastey/2.0.7/questions.yaml deleted file mode 100644 index e266ba51bd1..00000000000 --- a/incubator/pastey/2.0.7/questions.yaml +++ /dev/null @@ -1,1884 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PASTEY_RESTRICT_PASTING - label: "PASTEY_RESTRICT_PASTING" - description: "Enabledisable restricting of pasting to whitelisted users." - schema: - type: string - default: "False" - - variable: PASTEY_RESTRICT_RAW_PASTING - label: "PASTEY_RESTRICT_RAW_PASTING" - description: "Enabledisable restricting of pasting via raw to whitelisted users." - schema: - type: string - default: "True" - - variable: PASTEY_RATE_LIMIT - label: "PASTEY_RATE_LIMIT" - description: "Rate limit for pasting, for non-whitelisted users." - schema: - type: string - default: "5/hour" - - variable: PASTEY_RECENT_PASTES - label: "PASTEY_RECENT_PASTES" - description: "Number of recent pastes to show on the home page." - schema: - type: string - default: "10" - - variable: PASTEY_BEHIND_PROXY - label: "PASTEY_BEHIND_PROXY" - description: "Inform Pastey if it is behind a reverse proxy (nginx, etc.). If this is the case, it will rely on HTTP headers X-Real-IP or X-Forwarded-For. NOTE Make sure your proxy config sets these values." - schema: - type: string - default: "False" - - variable: PASTEY_USE_WHITELIST - label: "PASTEY_USE_WHITELIST" - description: "Enabledisable whitelisting for admin tasks (view recent, delete, config)." - schema: - type: string - default: "True" - - variable: PASTEY_WHITELIST_CIDR - label: "PASTEY_WHITELIST_CIDR" - description: "List of whitelisted IP addresses or networks (in CIDR format)." - schema: - type: string - default: "127.0.0.1/32,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" - - variable: PASTEY_GUESS_THRESHOLD - label: "PASTEY_GUESS_THRESHOLD" - description: "Threshold for automatic language detection guesses. If a result is below this value, it is treated as Plaintext." - schema: - type: string - default: "0.20" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path appdata" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/pastey/2.0.8/CHANGELOG.md b/incubator/pastey/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..f1c35c5f7f7 --- /dev/null +++ b/incubator/pastey/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [pastey-2.0.8](https://github.com/truecharts/charts/compare/pastey-2.0.7...pastey-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [pastey-2.0.7](https://github.com/truecharts/charts/compare/pastey-2.0.6...pastey-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [pastey-2.0.6](https://github.com/truecharts/charts/compare/pastey-2.0.5...pastey-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [pastey-2.0.5](https://github.com/truecharts/charts/compare/pastey-2.0.4...pastey-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [pastey-2.0.4](https://github.com/truecharts/charts/compare/pastey-2.0.3...pastey-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [pastey-2.0.3](https://github.com/truecharts/charts/compare/pastey-2.0.2...pastey-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) + + + + +## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) + + + + +## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) + + + + +## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) + + + + +## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) + + + + +## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) + + + + +## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) + + + + +## [pastey-2.0.2](https://github.com/truecharts/charts/compare/pastey-2.0.1...pastey-2.0.2) (2022-11-30) + + + diff --git a/incubator/pastey/2.0.8/Chart.yaml b/incubator/pastey/2.0.8/Chart.yaml new file mode 100644 index 00000000000..76ea00c54c6 --- /dev/null +++ b/incubator/pastey/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A lightweight, self-hosted paste platform (Pastebin alternative) with language detection and on-disk encryption. +home: https://truecharts.org/charts/incubator/pastey +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pastey.png +keywords: + - pastey + - Productivity + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: pastey +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/pastey + - https://hub.docker.com/cesura/pastey + - https://github.com/Cesura/pastey +type: application +version: 2.0.8 diff --git a/incubator/photostructure/2.0.7/README.md b/incubator/pastey/2.0.8/README.md similarity index 100% rename from incubator/photostructure/2.0.7/README.md rename to incubator/pastey/2.0.8/README.md diff --git a/incubator/pastey/2.0.8/app-changelog.md b/incubator/pastey/2.0.8/app-changelog.md new file mode 100644 index 00000000000..06bef91b61b --- /dev/null +++ b/incubator/pastey/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pastey-2.0.8](https://github.com/truecharts/charts/compare/pastey-2.0.7...pastey-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/pastey/2.0.8/app-readme.md b/incubator/pastey/2.0.8/app-readme.md new file mode 100644 index 00000000000..f737c3e05a2 --- /dev/null +++ b/incubator/pastey/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +A lightweight, self-hosted paste platform (Pastebin alternative) with language detection and on-disk encryption. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/pastey](https://truecharts.org/charts/incubator/pastey) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/phoronix-test-suite/2.0.7/charts/common-11.1.2.tgz b/incubator/pastey/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/phoronix-test-suite/2.0.7/charts/common-11.1.2.tgz rename to incubator/pastey/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/pastey/2.0.7/ix_values.yaml b/incubator/pastey/2.0.8/ix_values.yaml similarity index 100% rename from incubator/pastey/2.0.7/ix_values.yaml rename to incubator/pastey/2.0.8/ix_values.yaml diff --git a/incubator/pastey/2.0.8/questions.yaml b/incubator/pastey/2.0.8/questions.yaml new file mode 100644 index 00000000000..3c4749d0e00 --- /dev/null +++ b/incubator/pastey/2.0.8/questions.yaml @@ -0,0 +1,1925 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PASTEY_RESTRICT_PASTING + label: "PASTEY_RESTRICT_PASTING" + description: "Enabledisable restricting of pasting to whitelisted users." + schema: + type: string + default: "False" + - variable: PASTEY_RESTRICT_RAW_PASTING + label: "PASTEY_RESTRICT_RAW_PASTING" + description: "Enabledisable restricting of pasting via raw to whitelisted users." + schema: + type: string + default: "True" + - variable: PASTEY_RATE_LIMIT + label: "PASTEY_RATE_LIMIT" + description: "Rate limit for pasting, for non-whitelisted users." + schema: + type: string + default: "5/hour" + - variable: PASTEY_RECENT_PASTES + label: "PASTEY_RECENT_PASTES" + description: "Number of recent pastes to show on the home page." + schema: + type: string + default: "10" + - variable: PASTEY_BEHIND_PROXY + label: "PASTEY_BEHIND_PROXY" + description: "Inform Pastey if it is behind a reverse proxy (nginx, etc.). If this is the case, it will rely on HTTP headers X-Real-IP or X-Forwarded-For. NOTE Make sure your proxy config sets these values." + schema: + type: string + default: "False" + - variable: PASTEY_USE_WHITELIST + label: "PASTEY_USE_WHITELIST" + description: "Enabledisable whitelisting for admin tasks (view recent, delete, config)." + schema: + type: string + default: "True" + - variable: PASTEY_WHITELIST_CIDR + label: "PASTEY_WHITELIST_CIDR" + description: "List of whitelisted IP addresses or networks (in CIDR format)." + schema: + type: string + default: "127.0.0.1/32,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16" + - variable: PASTEY_GUESS_THRESHOLD + label: "PASTEY_GUESS_THRESHOLD" + description: "Threshold for automatic language detection guesses. If a result is below this value, it is treated as Plaintext." + schema: + type: string + default: "0.20" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 5000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path appdata" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/pastey/2.0.7/templates/common.yaml b/incubator/pastey/2.0.8/templates/common.yaml similarity index 100% rename from incubator/pastey/2.0.7/templates/common.yaml rename to incubator/pastey/2.0.8/templates/common.yaml diff --git a/incubator/phoronix-test-suite/2.0.7/values.yaml b/incubator/pastey/2.0.8/values.yaml similarity index 100% rename from incubator/phoronix-test-suite/2.0.7/values.yaml rename to incubator/pastey/2.0.8/values.yaml diff --git a/incubator/phoronix-test-suite/2.0.7/CHANGELOG.md b/incubator/phoronix-test-suite/2.0.7/CHANGELOG.md deleted file mode 100644 index 7cb02a92a2a..00000000000 --- a/incubator/phoronix-test-suite/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [phoronix-test-suite-2.0.7](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.6...phoronix-test-suite-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [phoronix-test-suite-2.0.6](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.5...phoronix-test-suite-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [phoronix-test-suite-2.0.5](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.4...phoronix-test-suite-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [phoronix-test-suite-2.0.4](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.3...phoronix-test-suite-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [phoronix-test-suite-2.0.3](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.2...phoronix-test-suite-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - - - -## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) - - diff --git a/incubator/phoronix-test-suite/2.0.7/Chart.yaml b/incubator/phoronix-test-suite/2.0.7/Chart.yaml deleted file mode 100644 index 4aae84653b1..00000000000 --- a/incubator/phoronix-test-suite/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "The Phoronix Test Suite is the most comprehensive testing and benchmarking platform available that provides an extensible framework for which new tests can be easily added." -home: https://truecharts.org/charts/incubator/phoronix-test-suite -icon: https://truecharts.org/img/hotlink-ok/chart-icons/phoronix-test-suite.png -keywords: - - phoronix-test-suite - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: phoronix-test-suite -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/phoronix-test-suite - - https://github.com/phoronix-test-suite/phoronix-test-suite - - https://hub.docker.com/r/phoronix/pts/ -type: application -version: 2.0.7 diff --git a/incubator/phoronix-test-suite/2.0.7/app-changelog.md b/incubator/phoronix-test-suite/2.0.7/app-changelog.md deleted file mode 100644 index 9f157c66b0a..00000000000 --- a/incubator/phoronix-test-suite/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [phoronix-test-suite-2.0.7](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.6...phoronix-test-suite-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/phoronix-test-suite/2.0.7/app-readme.md b/incubator/phoronix-test-suite/2.0.7/app-readme.md deleted file mode 100644 index e88210f49d7..00000000000 --- a/incubator/phoronix-test-suite/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -The Phoronix Test Suite is the most comprehensive testing and benchmarking platform available that provides an extensible framework for which new tests can be easily added. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/phoronix-test-suite](https://truecharts.org/charts/incubator/phoronix-test-suite) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/phoronix-test-suite/2.0.7/questions.yaml b/incubator/phoronix-test-suite/2.0.7/questions.yaml deleted file mode 100644 index 2000cfa008c..00000000000 --- a/incubator/phoronix-test-suite/2.0.7/questions.yaml +++ /dev/null @@ -1,1550 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: results - label: "results Storage" - description: "Container Path varlibphoronix-test-suitetest-results" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: appdata - label: "appdata Storage" - description: "Container Path varlibphoronix-test-suite" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/phoronix-test-suite/2.0.8/CHANGELOG.md b/incubator/phoronix-test-suite/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..ecdb61dac19 --- /dev/null +++ b/incubator/phoronix-test-suite/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [phoronix-test-suite-2.0.8](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.7...phoronix-test-suite-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [phoronix-test-suite-2.0.7](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.6...phoronix-test-suite-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [phoronix-test-suite-2.0.6](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.5...phoronix-test-suite-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [phoronix-test-suite-2.0.5](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.4...phoronix-test-suite-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [phoronix-test-suite-2.0.4](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.3...phoronix-test-suite-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [phoronix-test-suite-2.0.3](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.2...phoronix-test-suite-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) + + + + +## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) + + + + +## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) + + + + +## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) + + + + +## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) + + + + +## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) + + + + +## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) + + + + +## [phoronix-test-suite-2.0.2](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.1...phoronix-test-suite-2.0.2) (2022-11-30) + + + diff --git a/incubator/phoronix-test-suite/2.0.8/Chart.yaml b/incubator/phoronix-test-suite/2.0.8/Chart.yaml new file mode 100644 index 00000000000..33e02c10303 --- /dev/null +++ b/incubator/phoronix-test-suite/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "The Phoronix Test Suite is the most comprehensive testing and benchmarking platform available that provides an extensible framework for which new tests can be easily added." +home: https://truecharts.org/charts/incubator/phoronix-test-suite +icon: https://truecharts.org/img/hotlink-ok/chart-icons/phoronix-test-suite.png +keywords: + - phoronix-test-suite + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: phoronix-test-suite +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/phoronix-test-suite + - https://hub.docker.com/phoronix/pts + - https://github.com/phoronix-test-suite/phoronix-test-suite +type: application +version: 2.0.8 diff --git a/incubator/phpmyadmin/2.0.7/README.md b/incubator/phoronix-test-suite/2.0.8/README.md similarity index 100% rename from incubator/phpmyadmin/2.0.7/README.md rename to incubator/phoronix-test-suite/2.0.8/README.md diff --git a/incubator/phoronix-test-suite/2.0.8/app-changelog.md b/incubator/phoronix-test-suite/2.0.8/app-changelog.md new file mode 100644 index 00000000000..a7b0cec828a --- /dev/null +++ b/incubator/phoronix-test-suite/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [phoronix-test-suite-2.0.8](https://github.com/truecharts/charts/compare/phoronix-test-suite-2.0.7...phoronix-test-suite-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/phoronix-test-suite/2.0.8/app-readme.md b/incubator/phoronix-test-suite/2.0.8/app-readme.md new file mode 100644 index 00000000000..ce71396d6fd --- /dev/null +++ b/incubator/phoronix-test-suite/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +The Phoronix Test Suite is the most comprehensive testing and benchmarking platform available that provides an extensible framework for which new tests can be easily added. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/phoronix-test-suite](https://truecharts.org/charts/incubator/phoronix-test-suite) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/photostructure/2.0.7/charts/common-11.1.2.tgz b/incubator/phoronix-test-suite/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/photostructure/2.0.7/charts/common-11.1.2.tgz rename to incubator/phoronix-test-suite/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/phoronix-test-suite/2.0.7/ix_values.yaml b/incubator/phoronix-test-suite/2.0.8/ix_values.yaml similarity index 100% rename from incubator/phoronix-test-suite/2.0.7/ix_values.yaml rename to incubator/phoronix-test-suite/2.0.8/ix_values.yaml diff --git a/incubator/phoronix-test-suite/2.0.8/questions.yaml b/incubator/phoronix-test-suite/2.0.8/questions.yaml new file mode 100644 index 00000000000..55c4894aa3c --- /dev/null +++ b/incubator/phoronix-test-suite/2.0.8/questions.yaml @@ -0,0 +1,1550 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: results + label: "results Storage" + description: "Container Path varlibphoronix-test-suitetest-results" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: appdata + label: "appdata Storage" + description: "Container Path varlibphoronix-test-suite" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/phoronix-test-suite/2.0.7/templates/common.yaml b/incubator/phoronix-test-suite/2.0.8/templates/common.yaml similarity index 100% rename from incubator/phoronix-test-suite/2.0.7/templates/common.yaml rename to incubator/phoronix-test-suite/2.0.8/templates/common.yaml diff --git a/incubator/photostructure/2.0.7/values.yaml b/incubator/phoronix-test-suite/2.0.8/values.yaml similarity index 100% rename from incubator/photostructure/2.0.7/values.yaml rename to incubator/phoronix-test-suite/2.0.8/values.yaml diff --git a/incubator/photostructure/2.0.7/CHANGELOG.md b/incubator/photostructure/2.0.7/CHANGELOG.md deleted file mode 100644 index d6c887ec4a9..00000000000 --- a/incubator/photostructure/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [photostructure-2.0.7](https://github.com/truecharts/charts/compare/photostructure-2.0.6...photostructure-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [photostructure-2.0.6](https://github.com/truecharts/charts/compare/photostructure-2.0.5...photostructure-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [photostructure-2.0.5](https://github.com/truecharts/charts/compare/photostructure-2.0.4...photostructure-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [photostructure-2.0.4](https://github.com/truecharts/charts/compare/photostructure-2.0.3...photostructure-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [photostructure-2.0.3](https://github.com/truecharts/charts/compare/photostructure-2.0.2...photostructure-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - - - -## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) - - diff --git a/incubator/photostructure/2.0.7/Chart.yaml b/incubator/photostructure/2.0.7/Chart.yaml deleted file mode 100644 index eae5b9fd1cd..00000000000 --- a/incubator/photostructure/2.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Photos - - MediaServer-Video - - MediaServer-Photos -apiVersion: v2 -appVersion: "stable" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "[b]PhotoStructure is your new home for all your photos and videos.[/b]\n" -home: https://truecharts.org/charts/incubator/photostructure -icon: https://truecharts.org/img/hotlink-ok/chart-icons/photostructure.png -keywords: - - photostructure - - MediaApp-Photos - - MediaServer-Video - - MediaServer-Photos -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: photostructure -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/photostructure - - https://photostructure.com/ - - https://hub.docker.com/r/photostructure/server/ -type: application -version: 2.0.7 diff --git a/incubator/photostructure/2.0.7/app-changelog.md b/incubator/photostructure/2.0.7/app-changelog.md deleted file mode 100644 index 7b5dc63f021..00000000000 --- a/incubator/photostructure/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [photostructure-2.0.7](https://github.com/truecharts/charts/compare/photostructure-2.0.6...photostructure-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/photostructure/2.0.7/app-readme.md b/incubator/photostructure/2.0.7/app-readme.md deleted file mode 100644 index 923255f0758..00000000000 --- a/incubator/photostructure/2.0.7/app-readme.md +++ /dev/null @@ -1,9 +0,0 @@ -[b]PhotoStructure is your new home for all your photos and videos.[/b] - - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/photostructure](https://truecharts.org/charts/incubator/photostructure) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/photostructure/2.0.7/questions.yaml b/incubator/photostructure/2.0.7/questions.yaml deleted file mode 100644 index 95f2dbd1782..00000000000 --- a/incubator/photostructure/2.0.7/questions.yaml +++ /dev/null @@ -1,2058 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PS_LOG_LEVEL - label: "PS_LOG_LEVEL" - description: "Valid values are debug, info, warn, and error. Default is error, which (should be) quiet." - schema: - type: string - default: "" - - variable: UMASK - label: "UMASK" - description: "Files written by PhotoStructure will be applied with this umask." - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 1787 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: library - label: "library Storage" - description: "This is where your PhotoStructure Library will be stored. It needs to have sufficient free space to hold preview images, and transcoded videos." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: tempscratchdisk - label: "tempscratchdisk Storage" - description: "This must be fast, local disk." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: logs - label: "logs Storage" - description: "Logfiles will be written into this directory. Set environment variable " - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: config - label: "config Storage" - description: "System configuration is written into this directory." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/photostructure/2.0.8/CHANGELOG.md b/incubator/photostructure/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..1b8cff7c856 --- /dev/null +++ b/incubator/photostructure/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [photostructure-2.0.8](https://github.com/truecharts/charts/compare/photostructure-2.0.7...photostructure-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [photostructure-2.0.7](https://github.com/truecharts/charts/compare/photostructure-2.0.6...photostructure-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [photostructure-2.0.6](https://github.com/truecharts/charts/compare/photostructure-2.0.5...photostructure-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [photostructure-2.0.5](https://github.com/truecharts/charts/compare/photostructure-2.0.4...photostructure-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [photostructure-2.0.4](https://github.com/truecharts/charts/compare/photostructure-2.0.3...photostructure-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [photostructure-2.0.3](https://github.com/truecharts/charts/compare/photostructure-2.0.2...photostructure-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) + + + + +## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) + + + + +## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) + + + + +## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) + + + + +## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) + + + + +## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) + + + + +## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) + + + + +## [photostructure-2.0.2](https://github.com/truecharts/charts/compare/photostructure-2.0.1...photostructure-2.0.2) (2022-11-30) + + + diff --git a/incubator/photostructure/2.0.8/Chart.yaml b/incubator/photostructure/2.0.8/Chart.yaml new file mode 100644 index 00000000000..792800b794c --- /dev/null +++ b/incubator/photostructure/2.0.8/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Photos + - MediaServer-Video + - MediaServer-Photos +apiVersion: v2 +appVersion: "stable" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "[b]PhotoStructure is your new home for all your photos and videos.[/b]\n" +home: https://truecharts.org/charts/incubator/photostructure +icon: https://truecharts.org/img/hotlink-ok/chart-icons/photostructure.png +keywords: + - photostructure + - MediaApp-Photos + - MediaServer-Video + - MediaServer-Photos +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: photostructure +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/photostructure + - https://hub.docker.com/photostructure/server + - https://photostructure.com/ +type: application +version: 2.0.8 diff --git a/incubator/plausible/4.0.21/README.md b/incubator/photostructure/2.0.8/README.md similarity index 100% rename from incubator/plausible/4.0.21/README.md rename to incubator/photostructure/2.0.8/README.md diff --git a/incubator/photostructure/2.0.8/app-changelog.md b/incubator/photostructure/2.0.8/app-changelog.md new file mode 100644 index 00000000000..9195f9d6db6 --- /dev/null +++ b/incubator/photostructure/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [photostructure-2.0.8](https://github.com/truecharts/charts/compare/photostructure-2.0.7...photostructure-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/photostructure/2.0.8/app-readme.md b/incubator/photostructure/2.0.8/app-readme.md new file mode 100644 index 00000000000..821e9a123fa --- /dev/null +++ b/incubator/photostructure/2.0.8/app-readme.md @@ -0,0 +1,9 @@ +[b]PhotoStructure is your new home for all your photos and videos.[/b] + + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/photostructure](https://truecharts.org/charts/incubator/photostructure) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/phpmyadmin/2.0.7/charts/common-11.1.2.tgz b/incubator/photostructure/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/phpmyadmin/2.0.7/charts/common-11.1.2.tgz rename to incubator/photostructure/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/photostructure/2.0.7/ix_values.yaml b/incubator/photostructure/2.0.8/ix_values.yaml similarity index 100% rename from incubator/photostructure/2.0.7/ix_values.yaml rename to incubator/photostructure/2.0.8/ix_values.yaml diff --git a/incubator/photostructure/2.0.8/questions.yaml b/incubator/photostructure/2.0.8/questions.yaml new file mode 100644 index 00000000000..78212f3fb5b --- /dev/null +++ b/incubator/photostructure/2.0.8/questions.yaml @@ -0,0 +1,2099 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PS_LOG_LEVEL + label: "PS_LOG_LEVEL" + description: "Valid values are debug, info, warn, and error. Default is error, which (should be) quiet." + schema: + type: string + default: "" + - variable: UMASK + label: "UMASK" + description: "Files written by PhotoStructure will be applied with this umask." + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 1787 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: library + label: "library Storage" + description: "This is where your PhotoStructure Library will be stored. It needs to have sufficient free space to hold preview images, and transcoded videos." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: tempscratchdisk + label: "tempscratchdisk Storage" + description: "This must be fast, local disk." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: logs + label: "logs Storage" + description: "Logfiles will be written into this directory. Set environment variable " + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: config + label: "config Storage" + description: "System configuration is written into this directory." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/photostructure/2.0.7/templates/common.yaml b/incubator/photostructure/2.0.8/templates/common.yaml similarity index 100% rename from incubator/photostructure/2.0.7/templates/common.yaml rename to incubator/photostructure/2.0.8/templates/common.yaml diff --git a/incubator/phpmyadmin/2.0.7/values.yaml b/incubator/photostructure/2.0.8/values.yaml similarity index 100% rename from incubator/phpmyadmin/2.0.7/values.yaml rename to incubator/photostructure/2.0.8/values.yaml diff --git a/incubator/phpmyadmin/2.0.7/CHANGELOG.md b/incubator/phpmyadmin/2.0.7/CHANGELOG.md deleted file mode 100644 index 752828e0005..00000000000 --- a/incubator/phpmyadmin/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [phpmyadmin-2.0.7](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.6...phpmyadmin-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [phpmyadmin-2.0.6](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.5...phpmyadmin-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [phpmyadmin-2.0.5](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.4...phpmyadmin-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [phpmyadmin-2.0.4](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.3...phpmyadmin-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [phpmyadmin-2.0.3](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.2...phpmyadmin-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - - - -## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) - - diff --git a/incubator/phpmyadmin/2.0.7/Chart.yaml b/incubator/phpmyadmin/2.0.7/Chart.yaml deleted file mode 100644 index bbbead2b6d8..00000000000 --- a/incubator/phpmyadmin/2.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities - - Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A web interface for MySQL and MariaDB. -home: https://truecharts.org/charts/incubator/phpmyadmin -icon: https://truecharts.org/img/hotlink-ok/chart-icons/phpmyadmin.png -keywords: - - phpmyadmin - - Tools-Utilities - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: phpmyadmin -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/phpmyadmin - - https://hub.docker.com/r/phpmyadmin/phpmyadmin/ -type: application -version: 2.0.7 diff --git a/incubator/phpmyadmin/2.0.7/app-changelog.md b/incubator/phpmyadmin/2.0.7/app-changelog.md deleted file mode 100644 index 00a1822a13c..00000000000 --- a/incubator/phpmyadmin/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [phpmyadmin-2.0.7](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.6...phpmyadmin-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/phpmyadmin/2.0.7/app-readme.md b/incubator/phpmyadmin/2.0.7/app-readme.md deleted file mode 100644 index 18ccf38d8c4..00000000000 --- a/incubator/phpmyadmin/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A web interface for MySQL and MariaDB. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/phpmyadmin](https://truecharts.org/charts/incubator/phpmyadmin) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/phpmyadmin/2.0.7/questions.yaml b/incubator/phpmyadmin/2.0.7/questions.yaml deleted file mode 100644 index 275bb46d427..00000000000 --- a/incubator/phpmyadmin/2.0.7/questions.yaml +++ /dev/null @@ -1,1782 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: MYSQL_USER - label: "MYSQL_USER" - description: "Container Variable MYSQLUSER" - schema: - type: string - default: "root" - - variable: MYSQL_PASSWORD - label: "MYSQL_PASSWORD" - description: "Container Variable MYSQLPASSWORD" - schema: - type: string - default: "root" - - variable: PMA_HOST - label: "PMA_HOST" - description: "Container Variable PMAHOST" - schema: - type: string - default: "192.168.70.99" - - variable: PMA_PORT - label: "PMA_PORT" - description: "Container Variable PMAPORT" - schema: - type: string - default: "3306" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8080 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/phpmyadmin/2.0.8/CHANGELOG.md b/incubator/phpmyadmin/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..3ac67ae562d --- /dev/null +++ b/incubator/phpmyadmin/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [phpmyadmin-2.0.8](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.7...phpmyadmin-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [phpmyadmin-2.0.7](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.6...phpmyadmin-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [phpmyadmin-2.0.6](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.5...phpmyadmin-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [phpmyadmin-2.0.5](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.4...phpmyadmin-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [phpmyadmin-2.0.4](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.3...phpmyadmin-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [phpmyadmin-2.0.3](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.2...phpmyadmin-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) + + + + +## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) + + + + +## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) + + + + +## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) + + + + +## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) + + + + +## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) + + + + +## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) + + + + +## [phpmyadmin-2.0.2](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.1...phpmyadmin-2.0.2) (2022-11-30) + + + diff --git a/incubator/phpmyadmin/2.0.8/Chart.yaml b/incubator/phpmyadmin/2.0.8/Chart.yaml new file mode 100644 index 00000000000..bc98ae68502 --- /dev/null +++ b/incubator/phpmyadmin/2.0.8/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A web interface for MySQL and MariaDB. +home: https://truecharts.org/charts/incubator/phpmyadmin +icon: https://truecharts.org/img/hotlink-ok/chart-icons/phpmyadmin.png +keywords: + - phpmyadmin + - Tools-Utilities + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: phpmyadmin +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/phpmyadmin + - https://hub.docker.com/phpmyadmin/phpmyadmin +type: application +version: 2.0.8 diff --git a/incubator/plexripper/2.0.10/README.md b/incubator/phpmyadmin/2.0.8/README.md similarity index 100% rename from incubator/plexripper/2.0.10/README.md rename to incubator/phpmyadmin/2.0.8/README.md diff --git a/incubator/phpmyadmin/2.0.8/app-changelog.md b/incubator/phpmyadmin/2.0.8/app-changelog.md new file mode 100644 index 00000000000..9e1d4275b9f --- /dev/null +++ b/incubator/phpmyadmin/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [phpmyadmin-2.0.8](https://github.com/truecharts/charts/compare/phpmyadmin-2.0.7...phpmyadmin-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/phpmyadmin/2.0.8/app-readme.md b/incubator/phpmyadmin/2.0.8/app-readme.md new file mode 100644 index 00000000000..32c9f6ce8f9 --- /dev/null +++ b/incubator/phpmyadmin/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +A web interface for MySQL and MariaDB. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/phpmyadmin](https://truecharts.org/charts/incubator/phpmyadmin) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/plausible/4.0.21/charts/common-11.1.2.tgz b/incubator/phpmyadmin/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/plausible/4.0.21/charts/common-11.1.2.tgz rename to incubator/phpmyadmin/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/phpmyadmin/2.0.7/ix_values.yaml b/incubator/phpmyadmin/2.0.8/ix_values.yaml similarity index 100% rename from incubator/phpmyadmin/2.0.7/ix_values.yaml rename to incubator/phpmyadmin/2.0.8/ix_values.yaml diff --git a/incubator/phpmyadmin/2.0.8/questions.yaml b/incubator/phpmyadmin/2.0.8/questions.yaml new file mode 100644 index 00000000000..a38e3873d7d --- /dev/null +++ b/incubator/phpmyadmin/2.0.8/questions.yaml @@ -0,0 +1,1823 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: MYSQL_USER + label: "MYSQL_USER" + description: "Container Variable MYSQLUSER" + schema: + type: string + default: "root" + - variable: MYSQL_PASSWORD + label: "MYSQL_PASSWORD" + description: "Container Variable MYSQLPASSWORD" + schema: + type: string + default: "root" + - variable: PMA_HOST + label: "PMA_HOST" + description: "Container Variable PMAHOST" + schema: + type: string + default: "192.168.70.99" + - variable: PMA_PORT + label: "PMA_PORT" + description: "Container Variable PMAPORT" + schema: + type: string + default: "3306" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8080 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/phpmyadmin/2.0.7/templates/common.yaml b/incubator/phpmyadmin/2.0.8/templates/common.yaml similarity index 100% rename from incubator/phpmyadmin/2.0.7/templates/common.yaml rename to incubator/phpmyadmin/2.0.8/templates/common.yaml diff --git a/incubator/plausible/4.0.21/values.yaml b/incubator/phpmyadmin/2.0.8/values.yaml similarity index 100% rename from incubator/plausible/4.0.21/values.yaml rename to incubator/phpmyadmin/2.0.8/values.yaml diff --git a/incubator/plausible/4.0.21/CHANGELOG.md b/incubator/plausible/4.0.21/CHANGELOG.md deleted file mode 100644 index 0bf1173e6c0..00000000000 --- a/incubator/plausible/4.0.21/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [plausible-4.0.21](https://github.com/truecharts/charts/compare/plausible-4.0.20...plausible-4.0.21) (2023-01-31) - -### Chore - -- update helm chart clickhouse to 3.0.17 - - - - -## [plausible-4.0.20](https://github.com/truecharts/charts/compare/plausible-4.0.19...plausible-4.0.20) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [plausible-4.0.19](https://github.com/truecharts/charts/compare/plausible-4.0.18...plausible-4.0.19) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [plausible-4.0.18](https://github.com/truecharts/charts/compare/plausible-4.0.17...plausible-4.0.18) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [plausible-4.0.17](https://github.com/truecharts/charts/compare/plausible-4.0.16...plausible-4.0.17) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [plausible-4.0.16](https://github.com/truecharts/charts/compare/plausible-4.0.15...plausible-4.0.16) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [plausible-4.0.15](https://github.com/truecharts/charts/compare/plausible-4.0.14...plausible-4.0.15) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [plausible-4.0.14](https://github.com/truecharts/charts/compare/plausible-4.0.13...plausible-4.0.14) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [plausible-4.0.13](https://github.com/truecharts/charts/compare/plausible-4.0.12...plausible-4.0.13) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [plausible-4.0.12](https://github.com/truecharts/charts/compare/plausible-4.0.11...plausible-4.0.12) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - update helm chart clickhouse to v3.0.11 ([#5489](https://github.com/truecharts/charts/issues/5489)) - - - - -## [plausible-4.0.11](https://github.com/truecharts/charts/compare/plausible-4.0.10...plausible-4.0.11) (2022-12-13) - diff --git a/incubator/plausible/4.0.21/Chart.yaml b/incubator/plausible/4.0.21/Chart.yaml deleted file mode 100644 index 90f32f04aa8..00000000000 --- a/incubator/plausible/4.0.21/Chart.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: v2 -appVersion: "1.5.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: clickhouse.enabled - name: clickhouse - repository: https://charts.truecharts.org/ - version: 3.0.17 -deprecated: false -description: Plausible is lightweight and open source web analytics. No cookies and fully compliant with GDPR, CCPA and PECR. -home: https://truecharts.org/charts/incubator/plausible -icon: https://truecharts.org/img/hotlink-ok/chart-icons/plausible.png -keywords: - - analytics - - plausible -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: plausible -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/plausible - - https://plausible.io/ - - https://plausible.io/docs/self-hosting - - https://github.com/plausible/analytics - - https://github.com/plausible/hosting - - https://hub.docker.com/r/plausible/analytics -type: application -version: 4.0.21 -annotations: - truecharts.org/catagories: | - - analytics - - plausible - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/plausible/4.0.21/app-changelog.md b/incubator/plausible/4.0.21/app-changelog.md deleted file mode 100644 index 8a83c26a9f5..00000000000 --- a/incubator/plausible/4.0.21/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [plausible-4.0.21](https://github.com/truecharts/charts/compare/plausible-4.0.20...plausible-4.0.21) (2023-01-31) - -### Chore - -- update helm chart clickhouse to 3.0.17 - - \ No newline at end of file diff --git a/incubator/plausible/4.0.22/CHANGELOG.md b/incubator/plausible/4.0.22/CHANGELOG.md new file mode 100644 index 00000000000..e1ebcc5aae8 --- /dev/null +++ b/incubator/plausible/4.0.22/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [plausible-4.0.22](https://github.com/truecharts/charts/compare/plausible-4.0.21...plausible-4.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [plausible-4.0.21](https://github.com/truecharts/charts/compare/plausible-4.0.20...plausible-4.0.21) (2023-01-31) + +### Chore + +- update helm chart clickhouse to 3.0.17 + + + + +## [plausible-4.0.20](https://github.com/truecharts/charts/compare/plausible-4.0.19...plausible-4.0.20) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [plausible-4.0.19](https://github.com/truecharts/charts/compare/plausible-4.0.18...plausible-4.0.19) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [plausible-4.0.18](https://github.com/truecharts/charts/compare/plausible-4.0.17...plausible-4.0.18) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [plausible-4.0.17](https://github.com/truecharts/charts/compare/plausible-4.0.16...plausible-4.0.17) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [plausible-4.0.16](https://github.com/truecharts/charts/compare/plausible-4.0.15...plausible-4.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [plausible-4.0.15](https://github.com/truecharts/charts/compare/plausible-4.0.14...plausible-4.0.15) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [plausible-4.0.14](https://github.com/truecharts/charts/compare/plausible-4.0.13...plausible-4.0.14) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [plausible-4.0.13](https://github.com/truecharts/charts/compare/plausible-4.0.12...plausible-4.0.13) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [plausible-4.0.12](https://github.com/truecharts/charts/compare/plausible-4.0.11...plausible-4.0.12) (2022-12-18) + +### Chore diff --git a/incubator/plausible/4.0.22/Chart.yaml b/incubator/plausible/4.0.22/Chart.yaml new file mode 100644 index 00000000000..f371f54dd38 --- /dev/null +++ b/incubator/plausible/4.0.22/Chart.yaml @@ -0,0 +1,42 @@ +apiVersion: v2 +appVersion: "1.5.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: clickhouse.enabled + name: clickhouse + repository: https://charts.truecharts.org/ + version: 3.0.17 +deprecated: false +description: Plausible is lightweight and open source web analytics. No cookies and fully compliant with GDPR, CCPA and PECR. +home: https://truecharts.org/charts/incubator/plausible +icon: https://truecharts.org/img/hotlink-ok/chart-icons/plausible.png +keywords: + - analytics + - plausible +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: plausible +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/plausible + - https://hub.docker.com/plausible/analytics + - https://plausible.io/ + - https://plausible.io/docs/self-hosting + - https://github.com/plausible/analytics + - https://github.com/plausible/hosting +type: application +version: 4.0.22 +annotations: + truecharts.org/catagories: | + - analytics + - plausible + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/plik/0.0.7/README.md b/incubator/plausible/4.0.22/README.md similarity index 100% rename from incubator/plik/0.0.7/README.md rename to incubator/plausible/4.0.22/README.md diff --git a/incubator/plausible/4.0.22/app-changelog.md b/incubator/plausible/4.0.22/app-changelog.md new file mode 100644 index 00000000000..7f139eed916 --- /dev/null +++ b/incubator/plausible/4.0.22/app-changelog.md @@ -0,0 +1,9 @@ + + +## [plausible-4.0.22](https://github.com/truecharts/charts/compare/plausible-4.0.21...plausible-4.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/plausible/4.0.21/app-readme.md b/incubator/plausible/4.0.22/app-readme.md similarity index 100% rename from incubator/plausible/4.0.21/app-readme.md rename to incubator/plausible/4.0.22/app-readme.md diff --git a/incubator/plausible/4.0.21/charts/clickhouse-3.0.17.tgz b/incubator/plausible/4.0.22/charts/clickhouse-3.0.17.tgz similarity index 100% rename from incubator/plausible/4.0.21/charts/clickhouse-3.0.17.tgz rename to incubator/plausible/4.0.22/charts/clickhouse-3.0.17.tgz diff --git a/incubator/plexripper/2.0.10/charts/common-11.1.2.tgz b/incubator/plausible/4.0.22/charts/common-11.1.2.tgz similarity index 100% rename from incubator/plexripper/2.0.10/charts/common-11.1.2.tgz rename to incubator/plausible/4.0.22/charts/common-11.1.2.tgz diff --git a/incubator/plausible/4.0.21/charts/postgresql-11.0.22.tgz b/incubator/plausible/4.0.22/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/plausible/4.0.21/charts/postgresql-11.0.22.tgz rename to incubator/plausible/4.0.22/charts/postgresql-11.0.22.tgz diff --git a/incubator/plausible/4.0.21/ix_values.yaml b/incubator/plausible/4.0.22/ix_values.yaml similarity index 100% rename from incubator/plausible/4.0.21/ix_values.yaml rename to incubator/plausible/4.0.22/ix_values.yaml diff --git a/incubator/plausible/4.0.21/questions.yaml b/incubator/plausible/4.0.22/questions.yaml similarity index 100% rename from incubator/plausible/4.0.21/questions.yaml rename to incubator/plausible/4.0.22/questions.yaml diff --git a/incubator/plausible/4.0.21/templates/_env.tpl b/incubator/plausible/4.0.22/templates/_env.tpl similarity index 100% rename from incubator/plausible/4.0.21/templates/_env.tpl rename to incubator/plausible/4.0.22/templates/_env.tpl diff --git a/incubator/plausible/4.0.21/templates/common.yaml b/incubator/plausible/4.0.22/templates/common.yaml similarity index 100% rename from incubator/plausible/4.0.21/templates/common.yaml rename to incubator/plausible/4.0.22/templates/common.yaml diff --git a/incubator/plexripper/2.0.10/values.yaml b/incubator/plausible/4.0.22/values.yaml similarity index 100% rename from incubator/plexripper/2.0.10/values.yaml rename to incubator/plausible/4.0.22/values.yaml diff --git a/incubator/plexripper/2.0.10/CHANGELOG.md b/incubator/plexripper/2.0.10/CHANGELOG.md deleted file mode 100644 index 7188c2ba2cb..00000000000 --- a/incubator/plexripper/2.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [plexripper-2.0.10](https://github.com/truecharts/charts/compare/plexripper-2.0.9...plexripper-2.0.10) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/plexripper to latest - - - - -## [plexripper-2.0.9](https://github.com/truecharts/charts/compare/plexripper-2.0.8...plexripper-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [plexripper-2.0.8](https://github.com/truecharts/charts/compare/plexripper-2.0.7...plexripper-2.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [plexripper-2.0.7](https://github.com/truecharts/charts/compare/plexripper-2.0.6...plexripper-2.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [plexripper-2.0.6](https://github.com/truecharts/charts/compare/plexripper-2.0.5...plexripper-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [plexripper-2.0.5](https://github.com/truecharts/charts/compare/plexripper-2.0.4...plexripper-2.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [plexripper-2.0.4](https://github.com/truecharts/charts/compare/plexripper-2.0.3...plexripper-2.0.4) (2022-12-01) - -### Chore - -- update container image tccr.io/truecharts/plexripper to latest - - - - -## [plexripper-2.0.4](https://github.com/truecharts/charts/compare/plexripper-2.0.3...plexripper-2.0.4) (2022-12-01) - -### Chore - -- update container image tccr.io/truecharts/plexripper to latest - - - - -## [plexripper-2.0.4](https://github.com/truecharts/charts/compare/plexripper-2.0.3...plexripper-2.0.4) (2022-12-01) - -### Chore - -- update container image tccr.io/truecharts/plexripper to latest - - - - -## [plexripper-2.0.4](https://github.com/truecharts/charts/compare/plexripper-2.0.3...plexripper-2.0.4) (2022-12-01) - -### Chore - -- update container image tccr.io/truecharts/plexripper to latest - - - - -## [plexripper-2.0.3](https://github.com/truecharts/charts/compare/plexripper-2.0.1...plexripper-2.0.3) (2022-11-30) - - diff --git a/incubator/plexripper/2.0.10/Chart.yaml b/incubator/plexripper/2.0.10/Chart.yaml deleted file mode 100644 index 855c67ed0ed..00000000000 --- a/incubator/plexripper/2.0.10/Chart.yaml +++ /dev/null @@ -1,39 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Backup - - Downloaders - - MediaApp-Video - - MediaApp-Music - - MediaApp-Photos - - MediaApp-Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Tired of searching for media on different torrent websites or paying for Usenet server access? Well look no further! You can now use PlexRipper to download "everything" from the Plex servers you have access to and expand your collection that way! Let others collect media for you and then just download everything! -home: https://truecharts.org/charts/incubator/plexripper -icon: https://truecharts.org/img/hotlink-ok/chart-icons/plexripper.png -keywords: - - plexripper - - Backup - - Downloaders - - MediaApp-Video - - MediaApp-Music - - MediaApp-Photos - - MediaApp-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: plexripper -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/plexripper - - https://github.com/PlexRipper/PlexRipper/ - - https://hub.docker.com/r/plexripper/plexripper/ -type: application -version: 2.0.10 diff --git a/incubator/plexripper/2.0.10/app-changelog.md b/incubator/plexripper/2.0.10/app-changelog.md deleted file mode 100644 index 905ca4a95f4..00000000000 --- a/incubator/plexripper/2.0.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [plexripper-2.0.10](https://github.com/truecharts/charts/compare/plexripper-2.0.9...plexripper-2.0.10) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/plexripper to latest - - \ No newline at end of file diff --git a/incubator/plexripper/2.0.11/CHANGELOG.md b/incubator/plexripper/2.0.11/CHANGELOG.md new file mode 100644 index 00000000000..7fd28f269b7 --- /dev/null +++ b/incubator/plexripper/2.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [plexripper-2.0.11](https://github.com/truecharts/charts/compare/plexripper-2.0.10...plexripper-2.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [plexripper-2.0.10](https://github.com/truecharts/charts/compare/plexripper-2.0.9...plexripper-2.0.10) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/plexripper to latest + + + + +## [plexripper-2.0.9](https://github.com/truecharts/charts/compare/plexripper-2.0.8...plexripper-2.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [plexripper-2.0.8](https://github.com/truecharts/charts/compare/plexripper-2.0.7...plexripper-2.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [plexripper-2.0.7](https://github.com/truecharts/charts/compare/plexripper-2.0.6...plexripper-2.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [plexripper-2.0.6](https://github.com/truecharts/charts/compare/plexripper-2.0.5...plexripper-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [plexripper-2.0.5](https://github.com/truecharts/charts/compare/plexripper-2.0.4...plexripper-2.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [plexripper-2.0.4](https://github.com/truecharts/charts/compare/plexripper-2.0.3...plexripper-2.0.4) (2022-12-01) + +### Chore + +- update container image tccr.io/truecharts/plexripper to latest + + + + +## [plexripper-2.0.4](https://github.com/truecharts/charts/compare/plexripper-2.0.3...plexripper-2.0.4) (2022-12-01) + +### Chore + +- update container image tccr.io/truecharts/plexripper to latest + + + + +## [plexripper-2.0.4](https://github.com/truecharts/charts/compare/plexripper-2.0.3...plexripper-2.0.4) (2022-12-01) + +### Chore + +- update container image tccr.io/truecharts/plexripper to latest + + + + +## [plexripper-2.0.4](https://github.com/truecharts/charts/compare/plexripper-2.0.3...plexripper-2.0.4) (2022-12-01) + +### Chore diff --git a/incubator/plexripper/2.0.11/Chart.yaml b/incubator/plexripper/2.0.11/Chart.yaml new file mode 100644 index 00000000000..b5a2d0a1153 --- /dev/null +++ b/incubator/plexripper/2.0.11/Chart.yaml @@ -0,0 +1,39 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Backup + - Downloaders + - MediaApp-Video + - MediaApp-Music + - MediaApp-Photos + - MediaApp-Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Tired of searching for media on different torrent websites or paying for Usenet server access? Well look no further! You can now use PlexRipper to download "everything" from the Plex servers you have access to and expand your collection that way! Let others collect media for you and then just download everything! +home: https://truecharts.org/charts/incubator/plexripper +icon: https://truecharts.org/img/hotlink-ok/chart-icons/plexripper.png +keywords: + - plexripper + - Backup + - Downloaders + - MediaApp-Video + - MediaApp-Music + - MediaApp-Photos + - MediaApp-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: plexripper +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/plexripper + - https://hub.docker.com/plexripper/plexripper + - https://github.com/PlexRipper/PlexRipper/ +type: application +version: 2.0.11 diff --git a/incubator/privatebin/3.0.23/README.md b/incubator/plexripper/2.0.11/README.md similarity index 100% rename from incubator/privatebin/3.0.23/README.md rename to incubator/plexripper/2.0.11/README.md diff --git a/incubator/plexripper/2.0.11/app-changelog.md b/incubator/plexripper/2.0.11/app-changelog.md new file mode 100644 index 00000000000..f6820c47469 --- /dev/null +++ b/incubator/plexripper/2.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [plexripper-2.0.11](https://github.com/truecharts/charts/compare/plexripper-2.0.10...plexripper-2.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/plexripper/2.0.10/app-readme.md b/incubator/plexripper/2.0.11/app-readme.md similarity index 100% rename from incubator/plexripper/2.0.10/app-readme.md rename to incubator/plexripper/2.0.11/app-readme.md diff --git a/incubator/plik/0.0.7/charts/common-11.1.2.tgz b/incubator/plexripper/2.0.11/charts/common-11.1.2.tgz similarity index 100% rename from incubator/plik/0.0.7/charts/common-11.1.2.tgz rename to incubator/plexripper/2.0.11/charts/common-11.1.2.tgz diff --git a/incubator/plexripper/2.0.10/ix_values.yaml b/incubator/plexripper/2.0.11/ix_values.yaml similarity index 100% rename from incubator/plexripper/2.0.10/ix_values.yaml rename to incubator/plexripper/2.0.11/ix_values.yaml diff --git a/incubator/plexripper/2.0.10/questions.yaml b/incubator/plexripper/2.0.11/questions.yaml similarity index 100% rename from incubator/plexripper/2.0.10/questions.yaml rename to incubator/plexripper/2.0.11/questions.yaml diff --git a/incubator/plexripper/2.0.10/templates/common.yaml b/incubator/plexripper/2.0.11/templates/common.yaml similarity index 100% rename from incubator/plexripper/2.0.10/templates/common.yaml rename to incubator/plexripper/2.0.11/templates/common.yaml diff --git a/incubator/plik/0.0.7/values.yaml b/incubator/plexripper/2.0.11/values.yaml similarity index 100% rename from incubator/plik/0.0.7/values.yaml rename to incubator/plexripper/2.0.11/values.yaml diff --git a/incubator/plik/0.0.7/CHANGELOG.md b/incubator/plik/0.0.7/CHANGELOG.md deleted file mode 100644 index 125b8a0f03f..00000000000 --- a/incubator/plik/0.0.7/CHANGELOG.md +++ /dev/null @@ -1,62 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [plik-0.0.7](https://github.com/truecharts/charts/compare/plik-0.0.6...plik-0.0.7) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [plik-0.0.6](https://github.com/truecharts/charts/compare/plik-0.0.5...plik-0.0.6) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [plik-0.0.5](https://github.com/truecharts/charts/compare/plik-0.0.4...plik-0.0.5) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [plik-0.0.4](https://github.com/truecharts/charts/compare/plik-0.0.3...plik-0.0.4) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [plik-0.0.3](https://github.com/truecharts/charts/compare/plik-0.0.2...plik-0.0.3) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [plik-0.0.2](https://github.com/truecharts/charts/compare/plik-0.0.1...plik-0.0.2) (2022-12-26) - -### Feat - -- move to stable ([#5844](https://github.com/truecharts/charts/issues/5844)) - - - - -## [plik-0.0.1]plik-0.0.1 (2022-12-26) - diff --git a/incubator/plik/0.0.7/Chart.yaml b/incubator/plik/0.0.7/Chart.yaml deleted file mode 100644 index f8f9b244e68..00000000000 --- a/incubator/plik/0.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "1.3.6" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -deprecated: false -description: A scalable file uploading system with multiple backends. -home: https://truecharts.org/charts/incubator/plik -icon: https://truecharts.org/img/hotlink-ok/chart-icons/plik.png -keywords: - - plik - - files -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: plik -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/plik - - https://github.com/root-gg/plik -type: application -version: 0.0.7 -annotations: - truecharts.org/catagories: | - - files - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/plik/0.0.7/app-changelog.md b/incubator/plik/0.0.7/app-changelog.md deleted file mode 100644 index bfd996de046..00000000000 --- a/incubator/plik/0.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [plik-0.0.7](https://github.com/truecharts/charts/compare/plik-0.0.6...plik-0.0.7) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/incubator/plik/0.0.8/CHANGELOG.md b/incubator/plik/0.0.8/CHANGELOG.md new file mode 100644 index 00000000000..1ff2b9e9b9a --- /dev/null +++ b/incubator/plik/0.0.8/CHANGELOG.md @@ -0,0 +1,71 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [plik-0.0.8](https://github.com/truecharts/charts/compare/plik-0.0.7...plik-0.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [plik-0.0.7](https://github.com/truecharts/charts/compare/plik-0.0.6...plik-0.0.7) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [plik-0.0.6](https://github.com/truecharts/charts/compare/plik-0.0.5...plik-0.0.6) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [plik-0.0.5](https://github.com/truecharts/charts/compare/plik-0.0.4...plik-0.0.5) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [plik-0.0.4](https://github.com/truecharts/charts/compare/plik-0.0.3...plik-0.0.4) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [plik-0.0.3](https://github.com/truecharts/charts/compare/plik-0.0.2...plik-0.0.3) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [plik-0.0.2](https://github.com/truecharts/charts/compare/plik-0.0.1...plik-0.0.2) (2022-12-26) + +### Feat + +- move to stable ([#5844](https://github.com/truecharts/charts/issues/5844)) + + + + +## [plik-0.0.1]plik-0.0.1 (2022-12-26) + diff --git a/incubator/plik/0.0.8/Chart.yaml b/incubator/plik/0.0.8/Chart.yaml new file mode 100644 index 00000000000..63477bb9226 --- /dev/null +++ b/incubator/plik/0.0.8/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "1.3.6" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +deprecated: false +description: A scalable file uploading system with multiple backends. +home: https://truecharts.org/charts/incubator/plik +icon: https://truecharts.org/img/hotlink-ok/chart-icons/plik.png +keywords: + - plik + - files +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: plik +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/plik + - https://hub.docker.com/rootgg/plik + - https://github.com/root-gg/plik +type: application +version: 0.0.8 +annotations: + truecharts.org/catagories: | + - files + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/pwm/2.0.7/README.md b/incubator/plik/0.0.8/README.md similarity index 100% rename from incubator/pwm/2.0.7/README.md rename to incubator/plik/0.0.8/README.md diff --git a/incubator/plik/0.0.8/app-changelog.md b/incubator/plik/0.0.8/app-changelog.md new file mode 100644 index 00000000000..6c81d550128 --- /dev/null +++ b/incubator/plik/0.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [plik-0.0.8](https://github.com/truecharts/charts/compare/plik-0.0.7...plik-0.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/plik/0.0.7/app-readme.md b/incubator/plik/0.0.8/app-readme.md similarity index 100% rename from incubator/plik/0.0.7/app-readme.md rename to incubator/plik/0.0.8/app-readme.md diff --git a/incubator/privatebin/3.0.23/charts/common-11.1.2.tgz b/incubator/plik/0.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/privatebin/3.0.23/charts/common-11.1.2.tgz rename to incubator/plik/0.0.8/charts/common-11.1.2.tgz diff --git a/incubator/plik/0.0.7/charts/postgresql-11.0.22.tgz b/incubator/plik/0.0.8/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/plik/0.0.7/charts/postgresql-11.0.22.tgz rename to incubator/plik/0.0.8/charts/postgresql-11.0.22.tgz diff --git a/incubator/plik/0.0.7/ix_values.yaml b/incubator/plik/0.0.8/ix_values.yaml similarity index 100% rename from incubator/plik/0.0.7/ix_values.yaml rename to incubator/plik/0.0.8/ix_values.yaml diff --git a/incubator/plik/0.0.7/questions.yaml b/incubator/plik/0.0.8/questions.yaml similarity index 100% rename from incubator/plik/0.0.7/questions.yaml rename to incubator/plik/0.0.8/questions.yaml diff --git a/incubator/plik/0.0.7/templates/_config.tpl b/incubator/plik/0.0.8/templates/_config.tpl similarity index 100% rename from incubator/plik/0.0.7/templates/_config.tpl rename to incubator/plik/0.0.8/templates/_config.tpl diff --git a/incubator/plik/0.0.7/templates/common.yaml b/incubator/plik/0.0.8/templates/common.yaml similarity index 100% rename from incubator/plik/0.0.7/templates/common.yaml rename to incubator/plik/0.0.8/templates/common.yaml diff --git a/incubator/privatebin/3.0.23/values.yaml b/incubator/plik/0.0.8/values.yaml similarity index 100% rename from incubator/privatebin/3.0.23/values.yaml rename to incubator/plik/0.0.8/values.yaml diff --git a/incubator/privatebin/3.0.23/CHANGELOG.md b/incubator/privatebin/3.0.23/CHANGELOG.md deleted file mode 100644 index c1bf86ebef6..00000000000 --- a/incubator/privatebin/3.0.23/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [privatebin-3.0.23](https://github.com/truecharts/charts/compare/privatebin-3.0.22...privatebin-3.0.23) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [privatebin-3.0.22](https://github.com/truecharts/charts/compare/privatebin-3.0.21...privatebin-3.0.22) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/privatebin to 1.5.1 - - - - -## [privatebin-3.0.21](https://github.com/truecharts/charts/compare/privatebin-3.0.20...privatebin-3.0.21) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [privatebin-3.0.20](https://github.com/truecharts/charts/compare/privatebin-3.0.19...privatebin-3.0.20) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [privatebin-3.0.19](https://github.com/truecharts/charts/compare/privatebin-3.0.18...privatebin-3.0.19) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/privatebin to 1.5.1 - - - - -## [privatebin-3.0.18](https://github.com/truecharts/charts/compare/privatebin-3.0.17...privatebin-3.0.18) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [privatebin-3.0.17](https://github.com/truecharts/charts/compare/privatebin-3.0.16...privatebin-3.0.17) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [privatebin-3.0.16](https://github.com/truecharts/charts/compare/privatebin-3.0.15...privatebin-3.0.16) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [privatebin-3.0.15](https://github.com/truecharts/charts/compare/privatebin-3.0.14...privatebin-3.0.15) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [privatebin-3.0.14](https://github.com/truecharts/charts/compare/privatebin-3.0.13...privatebin-3.0.14) (2022-12-25) - -### Chore - -- update container image tccr.io/truecharts/privatebin to v1.5.1 - - - - -## [privatebin-3.0.13](https://github.com/truecharts/charts/compare/privatebin-3.0.12...privatebin-3.0.13) (2022-12-19) - -### Chore diff --git a/incubator/privatebin/3.0.23/Chart.yaml b/incubator/privatebin/3.0.23/Chart.yaml deleted file mode 100644 index d3f72f7f4c3..00000000000 --- a/incubator/privatebin/3.0.23/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v2 -appVersion: "1.5.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -deprecated: false -description: PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. -home: https://truecharts.org/charts/incubator/privatebin -icon: https://truecharts.org/img/hotlink-ok/chart-icons/privatebin.png -keywords: - - privatebin - - pastebin -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: privatebin -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/privatebin - - https://privatebin.info/ - - https://github.com/PrivateBin/PrivateBin - - https://hub.docker.com/r/privatebin/pdo -type: application -version: 3.0.23 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/privatebin/3.0.23/app-changelog.md b/incubator/privatebin/3.0.23/app-changelog.md deleted file mode 100644 index 33a84ed4dbe..00000000000 --- a/incubator/privatebin/3.0.23/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [privatebin-3.0.23](https://github.com/truecharts/charts/compare/privatebin-3.0.22...privatebin-3.0.23) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/incubator/privatebin/3.0.24/CHANGELOG.md b/incubator/privatebin/3.0.24/CHANGELOG.md new file mode 100644 index 00000000000..0ec66cb6d44 --- /dev/null +++ b/incubator/privatebin/3.0.24/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [privatebin-3.0.24](https://github.com/truecharts/charts/compare/privatebin-3.0.23...privatebin-3.0.24) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [privatebin-3.0.23](https://github.com/truecharts/charts/compare/privatebin-3.0.22...privatebin-3.0.23) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [privatebin-3.0.22](https://github.com/truecharts/charts/compare/privatebin-3.0.21...privatebin-3.0.22) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/privatebin to 1.5.1 + + + + +## [privatebin-3.0.21](https://github.com/truecharts/charts/compare/privatebin-3.0.20...privatebin-3.0.21) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [privatebin-3.0.20](https://github.com/truecharts/charts/compare/privatebin-3.0.19...privatebin-3.0.20) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [privatebin-3.0.19](https://github.com/truecharts/charts/compare/privatebin-3.0.18...privatebin-3.0.19) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/privatebin to 1.5.1 + + + + +## [privatebin-3.0.18](https://github.com/truecharts/charts/compare/privatebin-3.0.17...privatebin-3.0.18) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [privatebin-3.0.17](https://github.com/truecharts/charts/compare/privatebin-3.0.16...privatebin-3.0.17) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [privatebin-3.0.16](https://github.com/truecharts/charts/compare/privatebin-3.0.15...privatebin-3.0.16) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [privatebin-3.0.15](https://github.com/truecharts/charts/compare/privatebin-3.0.14...privatebin-3.0.15) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [privatebin-3.0.14](https://github.com/truecharts/charts/compare/privatebin-3.0.13...privatebin-3.0.14) (2022-12-25) + +### Chore diff --git a/incubator/privatebin/3.0.24/Chart.yaml b/incubator/privatebin/3.0.24/Chart.yaml new file mode 100644 index 00000000000..8284fe6aa41 --- /dev/null +++ b/incubator/privatebin/3.0.24/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +appVersion: "1.5.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +deprecated: false +description: PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. +home: https://truecharts.org/charts/incubator/privatebin +icon: https://truecharts.org/img/hotlink-ok/chart-icons/privatebin.png +keywords: + - privatebin + - pastebin +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: privatebin +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/privatebin + - https://hub.docker.com/privatebin/pdo + - https://privatebin.info/ + - https://github.com/PrivateBin/PrivateBin +type: application +version: 3.0.24 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/quickshare/2.0.7/README.md b/incubator/privatebin/3.0.24/README.md similarity index 100% rename from incubator/quickshare/2.0.7/README.md rename to incubator/privatebin/3.0.24/README.md diff --git a/incubator/privatebin/3.0.24/app-changelog.md b/incubator/privatebin/3.0.24/app-changelog.md new file mode 100644 index 00000000000..76b003c4b81 --- /dev/null +++ b/incubator/privatebin/3.0.24/app-changelog.md @@ -0,0 +1,9 @@ + + +## [privatebin-3.0.24](https://github.com/truecharts/charts/compare/privatebin-3.0.23...privatebin-3.0.24) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/privatebin/3.0.23/app-readme.md b/incubator/privatebin/3.0.24/app-readme.md similarity index 100% rename from incubator/privatebin/3.0.23/app-readme.md rename to incubator/privatebin/3.0.24/app-readme.md diff --git a/incubator/pwm/2.0.7/charts/common-11.1.2.tgz b/incubator/privatebin/3.0.24/charts/common-11.1.2.tgz similarity index 100% rename from incubator/pwm/2.0.7/charts/common-11.1.2.tgz rename to incubator/privatebin/3.0.24/charts/common-11.1.2.tgz diff --git a/incubator/privatebin/3.0.23/charts/postgresql-11.0.22.tgz b/incubator/privatebin/3.0.24/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/privatebin/3.0.23/charts/postgresql-11.0.22.tgz rename to incubator/privatebin/3.0.24/charts/postgresql-11.0.22.tgz diff --git a/incubator/privatebin/3.0.23/ix_values.yaml b/incubator/privatebin/3.0.24/ix_values.yaml similarity index 100% rename from incubator/privatebin/3.0.23/ix_values.yaml rename to incubator/privatebin/3.0.24/ix_values.yaml diff --git a/incubator/privatebin/3.0.23/questions.yaml b/incubator/privatebin/3.0.24/questions.yaml similarity index 100% rename from incubator/privatebin/3.0.23/questions.yaml rename to incubator/privatebin/3.0.24/questions.yaml diff --git a/incubator/privatebin/3.0.23/templates/_configmap.tpl b/incubator/privatebin/3.0.24/templates/_configmap.tpl similarity index 100% rename from incubator/privatebin/3.0.23/templates/_configmap.tpl rename to incubator/privatebin/3.0.24/templates/_configmap.tpl diff --git a/incubator/privatebin/3.0.23/templates/_secrets.tpl b/incubator/privatebin/3.0.24/templates/_secrets.tpl similarity index 100% rename from incubator/privatebin/3.0.23/templates/_secrets.tpl rename to incubator/privatebin/3.0.24/templates/_secrets.tpl diff --git a/incubator/privatebin/3.0.23/templates/common.yaml b/incubator/privatebin/3.0.24/templates/common.yaml similarity index 100% rename from incubator/privatebin/3.0.23/templates/common.yaml rename to incubator/privatebin/3.0.24/templates/common.yaml diff --git a/incubator/pwm/2.0.7/values.yaml b/incubator/privatebin/3.0.24/values.yaml similarity index 100% rename from incubator/pwm/2.0.7/values.yaml rename to incubator/privatebin/3.0.24/values.yaml diff --git a/incubator/pwm/2.0.7/CHANGELOG.md b/incubator/pwm/2.0.7/CHANGELOG.md deleted file mode 100644 index 1c8dadc7b43..00000000000 --- a/incubator/pwm/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [pwm-2.0.7](https://github.com/truecharts/charts/compare/pwm-2.0.6...pwm-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [pwm-2.0.6](https://github.com/truecharts/charts/compare/pwm-2.0.5...pwm-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [pwm-2.0.5](https://github.com/truecharts/charts/compare/pwm-2.0.4...pwm-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [pwm-2.0.4](https://github.com/truecharts/charts/compare/pwm-2.0.3...pwm-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [pwm-2.0.3](https://github.com/truecharts/charts/compare/pwm-2.0.2...pwm-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - - - -## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) - - diff --git a/incubator/pwm/2.0.7/Chart.yaml b/incubator/pwm/2.0.7/Chart.yaml deleted file mode 100644 index 537c8f73e8b..00000000000 --- a/incubator/pwm/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Security -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: PWM is a free and opensource password self-service application enabling end-users to reset their enterprise password themselves. -home: https://truecharts.org/charts/incubator/pwm -icon: https://truecharts.org/img/hotlink-ok/chart-icons/pwm.png -keywords: - - pwm - - Security -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: pwm -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/pwm - - https://github.com/pwm-project/pwm - - https://hub.docker.com/r/fjudith/pwm -type: application -version: 2.0.7 diff --git a/incubator/pwm/2.0.7/app-changelog.md b/incubator/pwm/2.0.7/app-changelog.md deleted file mode 100644 index 417d2104607..00000000000 --- a/incubator/pwm/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [pwm-2.0.7](https://github.com/truecharts/charts/compare/pwm-2.0.6...pwm-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/pwm/2.0.7/app-readme.md b/incubator/pwm/2.0.7/app-readme.md deleted file mode 100644 index d3f056bc1bf..00000000000 --- a/incubator/pwm/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -PWM is a free and opensource password self-service application enabling end-users to reset their enterprise password themselves. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/pwm](https://truecharts.org/charts/incubator/pwm) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/pwm/2.0.7/questions.yaml b/incubator/pwm/2.0.7/questions.yaml deleted file mode 100644 index 5f35ab3b5b5..00000000000 --- a/incubator/pwm/2.0.7/questions.yaml +++ /dev/null @@ -1,1842 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PWM_APPLICATIONFLAGS - label: "PWM_APPLICATIONFLAGS" - description: "Container Variable PWMAPPLICATIONFLAGS" - schema: - type: string - default: "NoFileLock" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8282 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: appdata - label: "appdata Storage" - description: "Container Path usrsharepwm" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/pwm/2.0.8/CHANGELOG.md b/incubator/pwm/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..82069968721 --- /dev/null +++ b/incubator/pwm/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [pwm-2.0.8](https://github.com/truecharts/charts/compare/pwm-2.0.7...pwm-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [pwm-2.0.7](https://github.com/truecharts/charts/compare/pwm-2.0.6...pwm-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [pwm-2.0.6](https://github.com/truecharts/charts/compare/pwm-2.0.5...pwm-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [pwm-2.0.5](https://github.com/truecharts/charts/compare/pwm-2.0.4...pwm-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [pwm-2.0.4](https://github.com/truecharts/charts/compare/pwm-2.0.3...pwm-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [pwm-2.0.3](https://github.com/truecharts/charts/compare/pwm-2.0.2...pwm-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) + + + + +## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) + + + + +## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) + + + + +## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) + + + + +## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) + + + + +## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) + + + + +## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) + + + + +## [pwm-2.0.2](https://github.com/truecharts/charts/compare/pwm-2.0.1...pwm-2.0.2) (2022-11-30) + + + diff --git a/incubator/pwm/2.0.8/Chart.yaml b/incubator/pwm/2.0.8/Chart.yaml new file mode 100644 index 00000000000..45f928ebdd3 --- /dev/null +++ b/incubator/pwm/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Security +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: PWM is a free and opensource password self-service application enabling end-users to reset their enterprise password themselves. +home: https://truecharts.org/charts/incubator/pwm +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pwm.png +keywords: + - pwm + - Security +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: pwm +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/pwm + - https://hub.docker.com/fjudith/pwm + - https://github.com/pwm-project/pwm +type: application +version: 2.0.8 diff --git a/incubator/ra-rom-processor/2.0.14/README.md b/incubator/pwm/2.0.8/README.md similarity index 100% rename from incubator/ra-rom-processor/2.0.14/README.md rename to incubator/pwm/2.0.8/README.md diff --git a/incubator/pwm/2.0.8/app-changelog.md b/incubator/pwm/2.0.8/app-changelog.md new file mode 100644 index 00000000000..453b9cd76ec --- /dev/null +++ b/incubator/pwm/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pwm-2.0.8](https://github.com/truecharts/charts/compare/pwm-2.0.7...pwm-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/pwm/2.0.8/app-readme.md b/incubator/pwm/2.0.8/app-readme.md new file mode 100644 index 00000000000..b01e8721d7c --- /dev/null +++ b/incubator/pwm/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +PWM is a free and opensource password self-service application enabling end-users to reset their enterprise password themselves. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/pwm](https://truecharts.org/charts/incubator/pwm) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/quickshare/2.0.7/charts/common-11.1.2.tgz b/incubator/pwm/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/quickshare/2.0.7/charts/common-11.1.2.tgz rename to incubator/pwm/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/pwm/2.0.7/ix_values.yaml b/incubator/pwm/2.0.8/ix_values.yaml similarity index 100% rename from incubator/pwm/2.0.7/ix_values.yaml rename to incubator/pwm/2.0.8/ix_values.yaml diff --git a/incubator/pwm/2.0.8/questions.yaml b/incubator/pwm/2.0.8/questions.yaml new file mode 100644 index 00000000000..faf6e1c06a7 --- /dev/null +++ b/incubator/pwm/2.0.8/questions.yaml @@ -0,0 +1,1883 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PWM_APPLICATIONFLAGS + label: "PWM_APPLICATIONFLAGS" + description: "Container Variable PWMAPPLICATIONFLAGS" + schema: + type: string + default: "NoFileLock" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8282 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: appdata + label: "appdata Storage" + description: "Container Path usrsharepwm" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/pwm/2.0.7/templates/common.yaml b/incubator/pwm/2.0.8/templates/common.yaml similarity index 100% rename from incubator/pwm/2.0.7/templates/common.yaml rename to incubator/pwm/2.0.8/templates/common.yaml diff --git a/incubator/quickshare/2.0.7/values.yaml b/incubator/pwm/2.0.8/values.yaml similarity index 100% rename from incubator/quickshare/2.0.7/values.yaml rename to incubator/pwm/2.0.8/values.yaml diff --git a/incubator/quickshare/2.0.7/CHANGELOG.md b/incubator/quickshare/2.0.7/CHANGELOG.md deleted file mode 100644 index 808e20e1037..00000000000 --- a/incubator/quickshare/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [quickshare-2.0.7](https://github.com/truecharts/charts/compare/quickshare-2.0.6...quickshare-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [quickshare-2.0.6](https://github.com/truecharts/charts/compare/quickshare-2.0.5...quickshare-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [quickshare-2.0.5](https://github.com/truecharts/charts/compare/quickshare-2.0.4...quickshare-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [quickshare-2.0.4](https://github.com/truecharts/charts/compare/quickshare-2.0.3...quickshare-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [quickshare-2.0.3](https://github.com/truecharts/charts/compare/quickshare-2.0.2...quickshare-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - - - -## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) - - diff --git a/incubator/quickshare/2.0.7/Chart.yaml b/incubator/quickshare/2.0.7/Chart.yaml deleted file mode 100644 index 14691a1130d..00000000000 --- a/incubator/quickshare/2.0.7/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity - - Tools-Utilities - - Network-FTP -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Quick and simple file sharing between different devices." -home: https://truecharts.org/charts/incubator/quickshare -icon: https://truecharts.org/img/hotlink-ok/chart-icons/quickshare.png -keywords: - - quickshare - - Cloud - - Productivity - - Tools-Utilities - - Network-FTP -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: quickshare -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/quickshare - - https://github.com/ihexxa/quickshare - - https://hub.docker.com/r/hexxa/quickshare -type: application -version: 2.0.7 diff --git a/incubator/quickshare/2.0.7/app-changelog.md b/incubator/quickshare/2.0.7/app-changelog.md deleted file mode 100644 index 9754cf608c1..00000000000 --- a/incubator/quickshare/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [quickshare-2.0.7](https://github.com/truecharts/charts/compare/quickshare-2.0.6...quickshare-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/quickshare/2.0.7/app-readme.md b/incubator/quickshare/2.0.7/app-readme.md deleted file mode 100644 index e519ddbcd77..00000000000 --- a/incubator/quickshare/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Quick and simple file sharing between different devices. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/quickshare](https://truecharts.org/charts/incubator/quickshare) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/quickshare/2.0.7/questions.yaml b/incubator/quickshare/2.0.7/questions.yaml deleted file mode 100644 index 8757e3528ee..00000000000 --- a/incubator/quickshare/2.0.7/questions.yaml +++ /dev/null @@ -1,1848 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: DEFAULTADMIN - label: "DEFAULTADMIN" - description: "Default user name." - schema: - type: string - default: "admin" - - variable: DEFAULTADMINPWD - label: "DEFAULTADMINPWD" - description: "Default user password." - schema: - type: string - default: "1234" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8686 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: storagedata - label: "storagedata Storage" - description: "This is the location for all the data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/quickshare/2.0.8/CHANGELOG.md b/incubator/quickshare/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..54adcb14070 --- /dev/null +++ b/incubator/quickshare/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [quickshare-2.0.8](https://github.com/truecharts/charts/compare/quickshare-2.0.7...quickshare-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [quickshare-2.0.7](https://github.com/truecharts/charts/compare/quickshare-2.0.6...quickshare-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [quickshare-2.0.6](https://github.com/truecharts/charts/compare/quickshare-2.0.5...quickshare-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [quickshare-2.0.5](https://github.com/truecharts/charts/compare/quickshare-2.0.4...quickshare-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [quickshare-2.0.4](https://github.com/truecharts/charts/compare/quickshare-2.0.3...quickshare-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [quickshare-2.0.3](https://github.com/truecharts/charts/compare/quickshare-2.0.2...quickshare-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) + + + + +## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) + + + + +## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) + + + + +## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) + + + + +## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) + + + + +## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) + + + + +## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) + + + + +## [quickshare-2.0.2](https://github.com/truecharts/charts/compare/quickshare-2.0.1...quickshare-2.0.2) (2022-11-30) + + + diff --git a/incubator/quickshare/2.0.8/Chart.yaml b/incubator/quickshare/2.0.8/Chart.yaml new file mode 100644 index 00000000000..581145d684a --- /dev/null +++ b/incubator/quickshare/2.0.8/Chart.yaml @@ -0,0 +1,35 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity + - Tools-Utilities + - Network-FTP +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Quick and simple file sharing between different devices." +home: https://truecharts.org/charts/incubator/quickshare +icon: https://truecharts.org/img/hotlink-ok/chart-icons/quickshare.png +keywords: + - quickshare + - Cloud + - Productivity + - Tools-Utilities + - Network-FTP +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: quickshare +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/quickshare + - https://hub.docker.com/hexxa/quickshare + - https://github.com/ihexxa/quickshare +type: application +version: 2.0.8 diff --git a/incubator/redisinsight/2.0.7/README.md b/incubator/quickshare/2.0.8/README.md similarity index 100% rename from incubator/redisinsight/2.0.7/README.md rename to incubator/quickshare/2.0.8/README.md diff --git a/incubator/quickshare/2.0.8/app-changelog.md b/incubator/quickshare/2.0.8/app-changelog.md new file mode 100644 index 00000000000..193abfae10c --- /dev/null +++ b/incubator/quickshare/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [quickshare-2.0.8](https://github.com/truecharts/charts/compare/quickshare-2.0.7...quickshare-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/quickshare/2.0.8/app-readme.md b/incubator/quickshare/2.0.8/app-readme.md new file mode 100644 index 00000000000..ceea5a4716a --- /dev/null +++ b/incubator/quickshare/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Quick and simple file sharing between different devices. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/quickshare](https://truecharts.org/charts/incubator/quickshare) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/ra-rom-processor/2.0.14/charts/common-11.1.2.tgz b/incubator/quickshare/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/ra-rom-processor/2.0.14/charts/common-11.1.2.tgz rename to incubator/quickshare/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/quickshare/2.0.7/ix_values.yaml b/incubator/quickshare/2.0.8/ix_values.yaml similarity index 100% rename from incubator/quickshare/2.0.7/ix_values.yaml rename to incubator/quickshare/2.0.8/ix_values.yaml diff --git a/incubator/quickshare/2.0.8/questions.yaml b/incubator/quickshare/2.0.8/questions.yaml new file mode 100644 index 00000000000..16cafb5ab6c --- /dev/null +++ b/incubator/quickshare/2.0.8/questions.yaml @@ -0,0 +1,1889 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DEFAULTADMIN + label: "DEFAULTADMIN" + description: "Default user name." + schema: + type: string + default: "admin" + - variable: DEFAULTADMINPWD + label: "DEFAULTADMINPWD" + description: "Default user password." + schema: + type: string + default: "1234" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8686 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: storagedata + label: "storagedata Storage" + description: "This is the location for all the data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/quickshare/2.0.7/templates/common.yaml b/incubator/quickshare/2.0.8/templates/common.yaml similarity index 100% rename from incubator/quickshare/2.0.7/templates/common.yaml rename to incubator/quickshare/2.0.8/templates/common.yaml diff --git a/incubator/ra-rom-processor/2.0.14/values.yaml b/incubator/quickshare/2.0.8/values.yaml similarity index 100% rename from incubator/ra-rom-processor/2.0.14/values.yaml rename to incubator/quickshare/2.0.8/values.yaml diff --git a/incubator/ra-rom-processor/2.0.14/CHANGELOG.md b/incubator/ra-rom-processor/2.0.14/CHANGELOG.md deleted file mode 100644 index 6a48f29f6a4..00000000000 --- a/incubator/ra-rom-processor/2.0.14/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ra-rom-processor-2.0.14](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.13...ra-rom-processor-2.0.14) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/ra-rom-processor to latest - - - - -## [ra-rom-processor-2.0.13](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.12...ra-rom-processor-2.0.13) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/ra-rom-processor to latest - - - - -## [ra-rom-processor-2.0.12](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.11...ra-rom-processor-2.0.12) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/ra-rom-processor to latest - - - - -## [ra-rom-processor-2.0.11](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.10...ra-rom-processor-2.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [ra-rom-processor-2.0.10](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.9...ra-rom-processor-2.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [ra-rom-processor-2.0.9](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.8...ra-rom-processor-2.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [ra-rom-processor-2.0.8](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.7...ra-rom-processor-2.0.8) (2022-12-25) - -### Chore - -- update container image tccr.io/truecharts/ra-rom-processor to latest ([#5748](https://github.com/truecharts/charts/issues/5748)) - - - - -## [ra-rom-processor-2.0.7](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.6...ra-rom-processor-2.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [ra-rom-processor-2.0.6](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.5...ra-rom-processor-2.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [ra-rom-processor-2.0.5](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.4...ra-rom-processor-2.0.5) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/ra-rom-processor to latest - - - - -## [ra-rom-processor-2.0.4](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.2...ra-rom-processor-2.0.4) (2022-11-30) - -### Chore diff --git a/incubator/ra-rom-processor/2.0.14/Chart.yaml b/incubator/ra-rom-processor/2.0.14/Chart.yaml deleted file mode 100644 index 39dd7a890c0..00000000000 --- a/incubator/ra-rom-processor/2.0.14/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Download / Orgainze / Process / Verify / Dedupe / Scrape a ROMs library automatically by matching ROMs to the RetroAchievement.org database. -home: https://truecharts.org/charts/incubator/ra-rom-processor -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ra-rom-processor.png -keywords: - - ra-rom-processor - - MediaApp-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ra-rom-processor -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/ra-rom-processor - - https://github.com/RandomNinjaAtk/docker-raromprocessor - - https://hub.docker.com/r/randomninjaatk/raromprocessor - - https://github.com/RandomNinjaAtk/docker-raromprocessor#instructionsusage-guidelines -type: application -version: 2.0.14 -annotations: - truecharts.org/catagories: | - - MediaApp-Other - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/ra-rom-processor/2.0.14/app-changelog.md b/incubator/ra-rom-processor/2.0.14/app-changelog.md deleted file mode 100644 index 7100a575399..00000000000 --- a/incubator/ra-rom-processor/2.0.14/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ra-rom-processor-2.0.14](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.13...ra-rom-processor-2.0.14) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/ra-rom-processor to latest - - \ No newline at end of file diff --git a/incubator/ra-rom-processor/2.0.15/CHANGELOG.md b/incubator/ra-rom-processor/2.0.15/CHANGELOG.md new file mode 100644 index 00000000000..00923341f99 --- /dev/null +++ b/incubator/ra-rom-processor/2.0.15/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ra-rom-processor-2.0.15](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.14...ra-rom-processor-2.0.15) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ra-rom-processor-2.0.14](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.13...ra-rom-processor-2.0.14) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/ra-rom-processor to latest + + + + +## [ra-rom-processor-2.0.13](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.12...ra-rom-processor-2.0.13) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/ra-rom-processor to latest + + + + +## [ra-rom-processor-2.0.12](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.11...ra-rom-processor-2.0.12) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/ra-rom-processor to latest + + + + +## [ra-rom-processor-2.0.11](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.10...ra-rom-processor-2.0.11) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [ra-rom-processor-2.0.10](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.9...ra-rom-processor-2.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [ra-rom-processor-2.0.9](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.8...ra-rom-processor-2.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [ra-rom-processor-2.0.8](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.7...ra-rom-processor-2.0.8) (2022-12-25) + +### Chore + +- update container image tccr.io/truecharts/ra-rom-processor to latest ([#5748](https://github.com/truecharts/charts/issues/5748)) + + + + +## [ra-rom-processor-2.0.7](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.6...ra-rom-processor-2.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [ra-rom-processor-2.0.6](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.5...ra-rom-processor-2.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [ra-rom-processor-2.0.5](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.4...ra-rom-processor-2.0.5) (2022-12-12) + +### Chore diff --git a/incubator/ra-rom-processor/2.0.15/Chart.yaml b/incubator/ra-rom-processor/2.0.15/Chart.yaml new file mode 100644 index 00000000000..4b7d67a108c --- /dev/null +++ b/incubator/ra-rom-processor/2.0.15/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Download / Orgainze / Process / Verify / Dedupe / Scrape a ROMs library automatically by matching ROMs to the RetroAchievement.org database. +home: https://truecharts.org/charts/incubator/ra-rom-processor +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ra-rom-processor.png +keywords: + - ra-rom-processor + - MediaApp-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ra-rom-processor +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/ra-rom-processor + - https://hub.docker.com/randomninjaatk/raromprocessor + - https://github.com/RandomNinjaAtk/docker-raromprocessor + - https://github.com/RandomNinjaAtk/docker-raromprocessor#instructionsusage-guidelines +type: application +version: 2.0.15 +annotations: + truecharts.org/catagories: | + - MediaApp-Other + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/restreamer/2.0.10/README.md b/incubator/ra-rom-processor/2.0.15/README.md similarity index 100% rename from incubator/restreamer/2.0.10/README.md rename to incubator/ra-rom-processor/2.0.15/README.md diff --git a/incubator/ra-rom-processor/2.0.15/app-changelog.md b/incubator/ra-rom-processor/2.0.15/app-changelog.md new file mode 100644 index 00000000000..d2d2a23bb37 --- /dev/null +++ b/incubator/ra-rom-processor/2.0.15/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ra-rom-processor-2.0.15](https://github.com/truecharts/charts/compare/ra-rom-processor-2.0.14...ra-rom-processor-2.0.15) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/ra-rom-processor/2.0.14/app-readme.md b/incubator/ra-rom-processor/2.0.15/app-readme.md similarity index 100% rename from incubator/ra-rom-processor/2.0.14/app-readme.md rename to incubator/ra-rom-processor/2.0.15/app-readme.md diff --git a/incubator/redisinsight/2.0.7/charts/common-11.1.2.tgz b/incubator/ra-rom-processor/2.0.15/charts/common-11.1.2.tgz similarity index 100% rename from incubator/redisinsight/2.0.7/charts/common-11.1.2.tgz rename to incubator/ra-rom-processor/2.0.15/charts/common-11.1.2.tgz diff --git a/incubator/ra-rom-processor/2.0.14/ix_values.yaml b/incubator/ra-rom-processor/2.0.15/ix_values.yaml similarity index 100% rename from incubator/ra-rom-processor/2.0.14/ix_values.yaml rename to incubator/ra-rom-processor/2.0.15/ix_values.yaml diff --git a/incubator/ra-rom-processor/2.0.14/questions.yaml b/incubator/ra-rom-processor/2.0.15/questions.yaml similarity index 100% rename from incubator/ra-rom-processor/2.0.14/questions.yaml rename to incubator/ra-rom-processor/2.0.15/questions.yaml diff --git a/incubator/ra-rom-processor/2.0.14/templates/common.yaml b/incubator/ra-rom-processor/2.0.15/templates/common.yaml similarity index 100% rename from incubator/ra-rom-processor/2.0.14/templates/common.yaml rename to incubator/ra-rom-processor/2.0.15/templates/common.yaml diff --git a/incubator/redisinsight/2.0.7/values.yaml b/incubator/ra-rom-processor/2.0.15/values.yaml similarity index 100% rename from incubator/redisinsight/2.0.7/values.yaml rename to incubator/ra-rom-processor/2.0.15/values.yaml diff --git a/incubator/redisinsight/2.0.7/CHANGELOG.md b/incubator/redisinsight/2.0.7/CHANGELOG.md deleted file mode 100644 index 930766930c2..00000000000 --- a/incubator/redisinsight/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [redisinsight-2.0.7](https://github.com/truecharts/charts/compare/redisinsight-2.0.6...redisinsight-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [redisinsight-2.0.6](https://github.com/truecharts/charts/compare/redisinsight-2.0.5...redisinsight-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [redisinsight-2.0.5](https://github.com/truecharts/charts/compare/redisinsight-2.0.4...redisinsight-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [redisinsight-2.0.4](https://github.com/truecharts/charts/compare/redisinsight-2.0.3...redisinsight-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [redisinsight-2.0.3](https://github.com/truecharts/charts/compare/redisinsight-2.0.2...redisinsight-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - - - -## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) - - diff --git a/incubator/redisinsight/2.0.7/Chart.yaml b/incubator/redisinsight/2.0.7/Chart.yaml deleted file mode 100644 index 81ed85a6ad0..00000000000 --- a/incubator/redisinsight/2.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: redisinsight -version: 2.0.7 -appVersion: "latest" -description: GUI for Redis. -type: application -deprecated: false -home: https://truecharts.org/charts/incubator/redisinsight -icon: https://truecharts.org/img/hotlink-ok/chart-icons/redisinsight.png -keywords: - - redisinsight - - Tools-Utilities -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/redisinsight - - https://redis.com/redis-enterprise/redis-insight/ - - https://hub.docker.com/r/redislabs/redisinsight -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - Tools-Utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/redisinsight/2.0.7/app-changelog.md b/incubator/redisinsight/2.0.7/app-changelog.md deleted file mode 100644 index 35728f1fb76..00000000000 --- a/incubator/redisinsight/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [redisinsight-2.0.7](https://github.com/truecharts/charts/compare/redisinsight-2.0.6...redisinsight-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/redisinsight/2.0.7/app-readme.md b/incubator/redisinsight/2.0.7/app-readme.md deleted file mode 100644 index 1c71f65f8c2..00000000000 --- a/incubator/redisinsight/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -GUI for Redis. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/redisinsight](https://truecharts.org/charts/incubator/redisinsight) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/redisinsight/2.0.7/questions.yaml b/incubator/redisinsight/2.0.7/questions.yaml deleted file mode 100644 index 786b5564959..00000000000 --- a/incubator/redisinsight/2.0.7/questions.yaml +++ /dev/null @@ -1,1949 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: redisinsight - group: App Configuration - label: Redis Insight Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: trusted_origins - label: Trusted Origins - description: Configures the trusted origins of the application. ex https://app.mydomain.tld - schema: - type: list - default: [] - items: - - variable: origin - label: Trusted Origin - schema: - type: string - required: true - default: "" - - variable: log_level - label: Log Level - description: Configures the log level of the application. - schema: - type: string - required: true - default: WARNING - enum: - - value: DEBUG - description: DEBUG - - value: INFO - description: INFO - - value: WARNING - description: WARNING - - value: ERROR - description: ERROR - - value: CRITICAL - description: CRITICAL - - variable: auth_prompt - label: Auth Prompt - description: Enables authentication prompt that asks for authentication before opening an instance or when the user is idle. - schema: - type: boolean - default: false - - variable: auth_timer - label: Auth Timer - description: Idle timer value for authentication prompt, in minutes.. - schema: - type: int - default: 30 - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10579 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Configuration. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: logs - label: App Logs Storage - description: Stores the Application Logs. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/redisinsight/2.0.8/CHANGELOG.md b/incubator/redisinsight/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..57bd3037057 --- /dev/null +++ b/incubator/redisinsight/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [redisinsight-2.0.8](https://github.com/truecharts/charts/compare/redisinsight-2.0.7...redisinsight-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [redisinsight-2.0.7](https://github.com/truecharts/charts/compare/redisinsight-2.0.6...redisinsight-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [redisinsight-2.0.6](https://github.com/truecharts/charts/compare/redisinsight-2.0.5...redisinsight-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [redisinsight-2.0.5](https://github.com/truecharts/charts/compare/redisinsight-2.0.4...redisinsight-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [redisinsight-2.0.4](https://github.com/truecharts/charts/compare/redisinsight-2.0.3...redisinsight-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [redisinsight-2.0.3](https://github.com/truecharts/charts/compare/redisinsight-2.0.2...redisinsight-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) + + + + +## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) + + + + +## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) + + + + +## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) + + + + +## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) + + + + +## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) + + + + +## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) + + + + +## [redisinsight-2.0.2](https://github.com/truecharts/charts/compare/redisinsight-2.0.1...redisinsight-2.0.2) (2022-11-30) + + + diff --git a/incubator/redisinsight/2.0.8/Chart.yaml b/incubator/redisinsight/2.0.8/Chart.yaml new file mode 100644 index 00000000000..02538dc7be3 --- /dev/null +++ b/incubator/redisinsight/2.0.8/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: redisinsight +version: 2.0.8 +appVersion: "latest" +description: GUI for Redis. +type: application +deprecated: false +home: https://truecharts.org/charts/incubator/redisinsight +icon: https://truecharts.org/img/hotlink-ok/chart-icons/redisinsight.png +keywords: + - redisinsight + - Tools-Utilities +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/redisinsight + - https://hub.docker.com/redislabs/redisinsight + - https://redis.com/redis-enterprise/redis-insight/ +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - Tools-Utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/rstudio/3.0.3/README.md b/incubator/redisinsight/2.0.8/README.md similarity index 100% rename from incubator/rstudio/3.0.3/README.md rename to incubator/redisinsight/2.0.8/README.md diff --git a/incubator/redisinsight/2.0.8/app-changelog.md b/incubator/redisinsight/2.0.8/app-changelog.md new file mode 100644 index 00000000000..070373b71c5 --- /dev/null +++ b/incubator/redisinsight/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [redisinsight-2.0.8](https://github.com/truecharts/charts/compare/redisinsight-2.0.7...redisinsight-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/redisinsight/2.0.8/app-readme.md b/incubator/redisinsight/2.0.8/app-readme.md new file mode 100644 index 00000000000..2e5e759d9d3 --- /dev/null +++ b/incubator/redisinsight/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +GUI for Redis. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/redisinsight](https://truecharts.org/charts/incubator/redisinsight) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/restreamer/2.0.10/charts/common-11.1.2.tgz b/incubator/redisinsight/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/restreamer/2.0.10/charts/common-11.1.2.tgz rename to incubator/redisinsight/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/redisinsight/2.0.7/ix_values.yaml b/incubator/redisinsight/2.0.8/ix_values.yaml similarity index 100% rename from incubator/redisinsight/2.0.7/ix_values.yaml rename to incubator/redisinsight/2.0.8/ix_values.yaml diff --git a/incubator/redisinsight/2.0.8/questions.yaml b/incubator/redisinsight/2.0.8/questions.yaml new file mode 100644 index 00000000000..d334cefa424 --- /dev/null +++ b/incubator/redisinsight/2.0.8/questions.yaml @@ -0,0 +1,1990 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: redisinsight + group: App Configuration + label: Redis Insight Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: trusted_origins + label: Trusted Origins + description: Configures the trusted origins of the application. ex https://app.mydomain.tld + schema: + type: list + default: [] + items: + - variable: origin + label: Trusted Origin + schema: + type: string + required: true + default: "" + - variable: log_level + label: Log Level + description: Configures the log level of the application. + schema: + type: string + required: true + default: WARNING + enum: + - value: DEBUG + description: DEBUG + - value: INFO + description: INFO + - value: WARNING + description: WARNING + - value: ERROR + description: ERROR + - value: CRITICAL + description: CRITICAL + - variable: auth_prompt + label: Auth Prompt + description: Enables authentication prompt that asks for authentication before opening an instance or when the user is idle. + schema: + type: boolean + default: false + - variable: auth_timer + label: Auth Timer + description: Idle timer value for authentication prompt, in minutes.. + schema: + type: int + default: 30 + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10579 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: logs + label: App Logs Storage + description: Stores the Application Logs. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/redisinsight/2.0.7/templates/common.yaml b/incubator/redisinsight/2.0.8/templates/common.yaml similarity index 100% rename from incubator/redisinsight/2.0.7/templates/common.yaml rename to incubator/redisinsight/2.0.8/templates/common.yaml diff --git a/incubator/restreamer/2.0.10/values.yaml b/incubator/redisinsight/2.0.8/values.yaml similarity index 100% rename from incubator/restreamer/2.0.10/values.yaml rename to incubator/redisinsight/2.0.8/values.yaml diff --git a/incubator/restreamer/2.0.10/CHANGELOG.md b/incubator/restreamer/2.0.10/CHANGELOG.md deleted file mode 100644 index 08561bad03d..00000000000 --- a/incubator/restreamer/2.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [restreamer-2.0.10](https://github.com/truecharts/charts/compare/restreamer-2.0.9...restreamer-2.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [restreamer-2.0.9](https://github.com/truecharts/charts/compare/restreamer-2.0.8...restreamer-2.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [restreamer-2.0.8](https://github.com/truecharts/charts/compare/restreamer-2.0.7...restreamer-2.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [restreamer-2.0.7](https://github.com/truecharts/charts/compare/restreamer-2.0.6...restreamer-2.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [restreamer-2.0.6](https://github.com/truecharts/charts/compare/restreamer-2.0.5...restreamer-2.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - - - -## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) - - diff --git a/incubator/restreamer/2.0.10/Chart.yaml b/incubator/restreamer/2.0.10/Chart.yaml deleted file mode 100644 index 998d6721bdd..00000000000 --- a/incubator/restreamer/2.0.10/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: restreamer -version: 2.0.10 -appVersion: "2.4.2" -description: "Allows smart free video streaming in real time." -type: application -deprecated: false -home: https://truecharts.org/charts/incubator/restreamer -icon: https://truecharts.org/img/hotlink-ok/chart-icons/restreamer.png -keywords: - - restreamer - - Network-Other - - MediaApp-Video - - Productivity -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/restreamer - - https://datarhei.github.io/restreamer/ - - https://hub.docker.com/r/datarhei/restreamer -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - # condition: -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - Network-Other - - MediaApp-Video - - Productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/restreamer/2.0.10/app-changelog.md b/incubator/restreamer/2.0.10/app-changelog.md deleted file mode 100644 index e34122da01a..00000000000 --- a/incubator/restreamer/2.0.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [restreamer-2.0.10](https://github.com/truecharts/charts/compare/restreamer-2.0.9...restreamer-2.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/restreamer/2.0.10/app-readme.md b/incubator/restreamer/2.0.10/app-readme.md deleted file mode 100644 index f2ae9c72026..00000000000 --- a/incubator/restreamer/2.0.10/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Allows smart free video streaming in real time. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/restreamer](https://truecharts.org/charts/incubator/restreamer) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/restreamer/2.0.10/questions.yaml b/incubator/restreamer/2.0.10/questions.yaml deleted file mode 100644 index 83fc71b0903..00000000000 --- a/incubator/restreamer/2.0.10/questions.yaml +++ /dev/null @@ -1,2791 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: imageSelector - group: Container Image - label: Select Image - schema: - type: string - default: image - enum: - - value: image - description: Default Image - - value: cudaImage - description: CUDA - - value: vaapiImage - description: VAAPI - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: restreamer - group: App Configuration - label: Restreamer Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: general - label: General - schema: - additional_attrs: true - type: dict - attrs: - - variable: hostname - label: Hostname - description: Set to the domain name of the host this instance is running on. - schema: - type: string - default: "" - - variable: host_auto - label: Host Auto - description: Enable detection of public IP addresses. - schema: - type: boolean - default: true - - variable: tls_enable - label: TLS Enable - description: Set to true to enable TLS support. - schema: - type: boolean - default: false - - variable: origins - label: Origins - description: List of allowed CORS origins. Will be used for / and /memfs. - schema: - type: list - default: [] - items: - - variable: origin - label: Origin - schema: - type: string - default: "" - required: true - - variable: mimetype_file - label: Mime Types File - description: Path to file with MIME type definitions. - schema: - type: string - required: true - default: mime.types - - variable: api - label: API - schema: - additional_attrs: true - type: dict - attrs: - - variable: api_auth_username - label: API Auth Username - description: Username for auth - schema: - type: string - default: "" - required: true - - variable: api_auth_password - label: API Auth Password - description: Password for auth. - schema: - type: string - default: "" - private: true - required: true - - variable: api_read_only - label: API Read Only - description: Allow only ready only access to the API - schema: - type: boolean - default: false - - variable: api_access_http_allow - label: API Access HTTP Allow - description: List of IP ranges in CIDR notation - schema: - type: list - default: [] - items: - - variable: ipRangeAllow - label: IP Range to Allow - schema: - type: string - default: "" - required: true - - variable: api_access_http_block - label: API Access HTTP Block - description: List of IP ranges in CIDR notation - schema: - type: list - default: [] - items: - - variable: ipRangeBlock - label: IP Range to Block - schema: - type: string - default: "" - required: true - - variable: api_access_https_allow - label: API Access HTTPS Allow - description: List of IP ranges in CIDR notation - schema: - type: list - default: [] - items: - - variable: ipRangeAllow - label: IP Range to Allow - schema: - type: string - default: "" - required: true - - variable: api_access_https_block - label: API Access HTTPS Block - description: List of IP ranges in CIDR notation - schema: - type: list - default: [] - items: - - variable: ipRangeBlock - label: IP Range to Block - schema: - type: string - default: "" - required: true - - variable: api_auth_enable - label: API Auth Enable - description: Set to false to disable auth for all clients. - schema: - type: boolean - default: true - - variable: api_auth_disable_localhost - label: API Auth Disable Localhost - description: Set to true to disable auth for clients from localhost. - schema: - type: boolean - default: false - - variable: api_auth0_enable - label: API Auth0 Enable - description: Enable Auth0. - schema: - type: boolean - default: false - - variable: api_auth0_tenants - label: API Auth0 Tenants - description: List of base64 encoded Auth0 tenant JSON objects. - schema: - type: list - default: [] - items: - - variable: tenant - label: Tenant - schema: - type: string - default: "" - required: true - - variable: storage_disk - label: Storage Disk - schema: - additional_attrs: true - type: dict - attrs: - - variable: disk_max_size_mb - label: Storage Disk Max Size MByte - description: Max allowed megabytes for Disk Dir (0 for Unlimited) - schema: - type: int - default: 0 - - variable: cache_enable - label: Storage Disk Cache Enable - description: Enable cache for files Storage Disk - schema: - type: boolean - default: true - - variable: cache_max_size_mb - label: Storage Disk Cache Max Size MByte - description: Max allowed cache size. (0 for Unlimited) - schema: - type: int - default: 0 - - variable: cache_ttl - label: Storage Disk Cache TTL Seconds - description: Seconds to keep files in cache. - schema: - type: int - default: 300 - - variable: cache_max_file_size_mb - label: Storage Disk Max File Size MBytes - description: Max. file size to put in cache. (0 for Unlimited) - schema: - type: int - default: 0 - - variable: cache_types - label: Cache Types - description: List of file extensions to cache - schema: - type: list - default: [] - items: - - variable: type - label: Type - schema: - type: string - default: "" - required: true - - variable: log_max_lines - label: Log Max Lines - schema: - type: int - default: 10000 - - variable: storage_mem - label: Storage memory - schema: - additional_attrs: true - type: dict - attrs: - - variable: storage_mem_auth_enable - label: Storage Memory Auth Enable - description: Enable basic auth for PUT,POST, and DELETE on /memfs. - schema: - type: boolean - default: true - - variable: storage_mem_auth_username - label: Storage Memory Auth Username - description: Username for Basic-Auth of /memfs. Required if auth is enabled. - schema: - type: string - default: "" - required: true - show_if: [[storage_mem_auth_enable, "=", true]] - - variable: storage_mem_auth_password - label: Storage Memory Auth Password - description: Password for Basic-Auth of /memfs. Required if auth is enabled. - schema: - type: string - default: "" - private: true - required: true - show_if: [[storage_mem_auth_enable, "=", true]] - - variable: storage_mem_max_size_mb - label: Storage Memory Max Size MBytes - description: Max. allowed megabytes for /memfs. (0 for Unlimited) - schema: - type: int - default: 0 - - variable: storage_mem_purge - label: Storage Memory Purge - description: Set to true to remove the oldest entries if the /memfs is full. - schema: - type: boolean - default: false - - variable: rtmp - label: RTMP - schema: - additional_attrs: true - type: dict - attrs: - - variable: rtmp_enable - label: RTMP Enable - description: Enable RTMP server. - schema: - type: boolean - default: false - - variable: rtmps_enable - label: RTMPS Enable - description: Enable RTMP over TLS (Requires TLS to be enabled) - schema: - type: boolean - default: false - - variable: rtmp_token - label: RTMP Token - description: RTMP token for publishing and playing. The token is the value of the URL query parameter token. - schema: - type: string - default: "" - private: true - - variable: rtmp_app - label: RTMP App - description: RTMP app for publishing. - schema: - type: string - default: "/" - - variable: ffmpeg - label: FFMPEG - schema: - additional_attrs: true - type: dict - attrs: - - variable: ffmpeg_binary - label: FFMPEG Binary - description: Path to FFmpeg binary. - schema: - type: string - default: ffmpeg - required: true - - variable: ffmpeg_max_processes - label: FFMPEG Max Processes - description: Max. allowed simultaneously running FFmpeg instances. (0 for unlimited.) - schema: - type: string - default: ffmpeg - - variable: ffmpeg_access_input_allow - label: FFMPEG Access Input Allow - description: List of pattern for allowed input URI - schema: - type: list - default: [] - items: - - variable: allowInput - label: Allow Input - schema: - type: string - default: "" - required: true - - variable: ffmpeg_access_input_block - label: FFMPEG Access Input Block - description: List of pattern for blocked input URI - schema: - type: list - default: [] - items: - - variable: blockInput - label: Block Input - schema: - type: string - default: "" - required: true - - variable: ffmpeg_access_output_allow - label: FFMPEG Access Output Allow - description: List of pattern for allowed output URI - schema: - type: list - default: [] - items: - - variable: allowOutput - label: Allow Output - schema: - type: string - default: "" - required: true - - variable: ffmpeg_access_output_block - label: FFMPEG Access Output Block - description: List of pattern for blocked output URI - schema: - type: list - default: [] - items: - - variable: blockOutput - label: Block Output - schema: - type: string - default: "" - required: true - - variable: ffmpeg_log_max_lines - label: FFMPEG Log Max Lines - schema: - type: int - default: 50 - - variable: ffmpeg_log_max_history - label: FFMPEG Log Max History - schema: - type: int - default: 3 - - variable: playout - label: Playout - schema: - additional_attrs: true - type: dict - attrs: - - variable: playout_enable - label: Playout Enable - description: Enable playout API where available - schema: - type: boolean - default: false - - variable: playout_min_port - label: Playout Min Port - description: Min. port a playout server per input can run on. - schema: - type: int - default: 0 - - variable: playout_max_port - label: Playout Max Port - description: Max. port a playout server per input can run on. - schema: - type: int - default: 0 - - variable: logs - label: Logs - schema: - additional_attrs: true - type: dict - attrs: - - variable: log_level - label: Log Level - schema: - type: string - default: "" - enum: - - value: info - description: info - - value: silent - description: silent - - value: warn - description: warn - - value: error - description: error - - value: debug - description: debug - - variable: log_topics - label: Log Topics - description: List of topics to log - schema: - type: list - default: [] - items: - - variable: topic - label: Topic - schema: - type: string - default: "" - required: true - - variable: log_max_lines - label: Log Max Lines - schema: - type: int - default: 10000 - - variable: debug - label: Debug - schema: - additional_attrs: true - type: dict - attrs: - - variable: debug_profiling - label: Debug Profiling - description: Set to true to enable profiling endpoint on /profiling. - schema: - type: boolean - default: false - - variable: debug_force_gc - label: Debug Force GC - description: Number of seconds between forcing GC to return memory to the OS. - schema: - type: boolean - default: false - - variable: metrics - label: Metrics - schema: - additional_attrs: true - type: dict - attrs: - - variable: metrics_enable - label: Metrics Enable - description: Enable collecting historic metrics data. - schema: - type: boolean - default: false - - variable: metrics_prometheus_enable - label: Prometheus Metrics Enable - description: Enable prometheus endpoint /metrics. - schema: - type: boolean - default: false - - variable: metrics_range_seconds - label: Metrics Range Seconds - description: Seconds to keep history metric data. - schema: - type: int - default: 300 - - variable: metrics_interval_seconds - label: Metrics Interval Seconds - description: Interval for collecting metrics. - schema: - type: int - default: 2 - - variable: sessions - label: Sessions - schema: - additional_attrs: true - type: dict - attrs: - - variable: sessions_enable - label: Sessions Enable - description: Enable HLS statistics for /memfs. - schema: - type: boolean - default: false - - variable: sessions_ip_ignore_list - label: Session IP Ignore List - description: List of IP ranges in CIDR notation - schema: - type: list - default: [] - items: - - variable: ignoreIP - label: Ignore IP - schema: - type: string - default: "" - required: true - - variable: sessions_timeout_sec - label: Session Timeout Seconds - description: Timeout of a session in seconds. - schema: - type: int - default: 30 - - variable: sessions_persist - label: Sessions Persist - description: Whether to persist the session history - schema: - type: boolean - default: false - - variable: sessions_max_bitrate - label: Session Max Bitrate - description: Max. allowed outgoing bitrate in mbit/s. (0 for unlimited.) - schema: - type: int - default: 0 - - variable: sessions_max_sessions - label: Max Session - description: Max. allowed number of simultaneous sessions. (0 for unlimited.) - schema: - type: int - default: 0 - - variable: router - label: Router - schema: - additional_attrs: true - type: dict - attrs: - - variable: router_blocked_prefixes - label: Blocked Prefixes - description: List of path prefixes that can't be routed. - schema: - type: list - default: [] - items: - - variable: blockedPrefix - label: Blocked Prefix - schema: - type: string - default: "" - required: true - - variable: router_routes - label: Routes - description: "List of route mappings of the form [from]:[to], e.g." - schema: - type: list - default: [] - items: - - variable: route - label: Route - schema: - type: string - default: "" - required: true - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8080 - required: true - - variable: https - label: HTTPS Service - description: The HTTPS service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: https - label: HTTPS Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8081 - required: true - - variable: rtmp - label: RTmP Service - description: The RTmP service for live streaming - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: rtmp - label: RTMP Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 1935 - required: true - - variable: rtmps - label: RTMP Secure Service - description: The RTMP service for live streaming - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: rtmps - label: RTSP Secure Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 1936 - required: true - - variable: srt - label: SRT Data Service - description: The SRT service for data - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: srt - label: SRT Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 6000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Configuration. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: data - label: App Data Storage - description: Stores the Application Data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: https - label: HTTPS Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/restreamer/2.0.11/CHANGELOG.md b/incubator/restreamer/2.0.11/CHANGELOG.md new file mode 100644 index 00000000000..2375d973200 --- /dev/null +++ b/incubator/restreamer/2.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [restreamer-2.0.11](https://github.com/truecharts/charts/compare/restreamer-2.0.10...restreamer-2.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [restreamer-2.0.10](https://github.com/truecharts/charts/compare/restreamer-2.0.9...restreamer-2.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [restreamer-2.0.9](https://github.com/truecharts/charts/compare/restreamer-2.0.8...restreamer-2.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [restreamer-2.0.8](https://github.com/truecharts/charts/compare/restreamer-2.0.7...restreamer-2.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [restreamer-2.0.7](https://github.com/truecharts/charts/compare/restreamer-2.0.6...restreamer-2.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [restreamer-2.0.6](https://github.com/truecharts/charts/compare/restreamer-2.0.5...restreamer-2.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) + + + + +## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) + + + + +## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) + + + + +## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) + + + + +## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) + + + + +## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) + + + + +## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) + + + + +## [restreamer-2.0.5](https://github.com/truecharts/charts/compare/restreamer-2.0.4...restreamer-2.0.5) (2022-11-30) + + + diff --git a/incubator/restreamer/2.0.11/Chart.yaml b/incubator/restreamer/2.0.11/Chart.yaml new file mode 100644 index 00000000000..a3e08d0dc07 --- /dev/null +++ b/incubator/restreamer/2.0.11/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: restreamer +version: 2.0.11 +appVersion: "2.4.2" +description: "Allows smart free video streaming in real time." +type: application +deprecated: false +home: https://truecharts.org/charts/incubator/restreamer +icon: https://truecharts.org/img/hotlink-ok/chart-icons/restreamer.png +keywords: + - restreamer + - Network-Other + - MediaApp-Video + - Productivity +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/restreamer + - https://hub.docker.com/datarhei/restreamer + - https://datarhei.github.io/restreamer/ +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - Network-Other + - MediaApp-Video + - Productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/rustpad/2.0.8/README.md b/incubator/restreamer/2.0.11/README.md similarity index 100% rename from incubator/rustpad/2.0.8/README.md rename to incubator/restreamer/2.0.11/README.md diff --git a/incubator/restreamer/2.0.11/app-changelog.md b/incubator/restreamer/2.0.11/app-changelog.md new file mode 100644 index 00000000000..5eb252d3431 --- /dev/null +++ b/incubator/restreamer/2.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [restreamer-2.0.11](https://github.com/truecharts/charts/compare/restreamer-2.0.10...restreamer-2.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/restreamer/2.0.11/app-readme.md b/incubator/restreamer/2.0.11/app-readme.md new file mode 100644 index 00000000000..287d9f9989e --- /dev/null +++ b/incubator/restreamer/2.0.11/app-readme.md @@ -0,0 +1,8 @@ +Allows smart free video streaming in real time. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/restreamer](https://truecharts.org/charts/incubator/restreamer) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/rstudio/3.0.3/charts/common-11.1.2.tgz b/incubator/restreamer/2.0.11/charts/common-11.1.2.tgz similarity index 100% rename from incubator/rstudio/3.0.3/charts/common-11.1.2.tgz rename to incubator/restreamer/2.0.11/charts/common-11.1.2.tgz diff --git a/incubator/restreamer/2.0.10/ix_values.yaml b/incubator/restreamer/2.0.11/ix_values.yaml similarity index 100% rename from incubator/restreamer/2.0.10/ix_values.yaml rename to incubator/restreamer/2.0.11/ix_values.yaml diff --git a/incubator/restreamer/2.0.11/questions.yaml b/incubator/restreamer/2.0.11/questions.yaml new file mode 100644 index 00000000000..d607cc3bb28 --- /dev/null +++ b/incubator/restreamer/2.0.11/questions.yaml @@ -0,0 +1,2853 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: imageSelector + group: Container Image + label: Select Image + schema: + type: string + default: image + enum: + - value: image + description: Default Image + - value: cudaImage + description: CUDA + - value: vaapiImage + description: VAAPI + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: restreamer + group: App Configuration + label: Restreamer Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: general + label: General + schema: + additional_attrs: true + type: dict + attrs: + - variable: hostname + label: Hostname + description: Set to the domain name of the host this instance is running on. + schema: + type: string + default: "" + - variable: host_auto + label: Host Auto + description: Enable detection of public IP addresses. + schema: + type: boolean + default: true + - variable: tls_enable + label: TLS Enable + description: Set to true to enable TLS support. + schema: + type: boolean + default: false + - variable: origins + label: Origins + description: List of allowed CORS origins. Will be used for / and /memfs. + schema: + type: list + default: [] + items: + - variable: origin + label: Origin + schema: + type: string + default: "" + required: true + - variable: mimetype_file + label: Mime Types File + description: Path to file with MIME type definitions. + schema: + type: string + required: true + default: mime.types + - variable: api + label: API + schema: + additional_attrs: true + type: dict + attrs: + - variable: api_auth_username + label: API Auth Username + description: Username for auth + schema: + type: string + default: "" + required: true + - variable: api_auth_password + label: API Auth Password + description: Password for auth. + schema: + type: string + default: "" + private: true + required: true + - variable: api_read_only + label: API Read Only + description: Allow only ready only access to the API + schema: + type: boolean + default: false + - variable: api_access_http_allow + label: API Access HTTP Allow + description: List of IP ranges in CIDR notation + schema: + type: list + default: [] + items: + - variable: ipRangeAllow + label: IP Range to Allow + schema: + type: string + default: "" + required: true + - variable: api_access_http_block + label: API Access HTTP Block + description: List of IP ranges in CIDR notation + schema: + type: list + default: [] + items: + - variable: ipRangeBlock + label: IP Range to Block + schema: + type: string + default: "" + required: true + - variable: api_access_https_allow + label: API Access HTTPS Allow + description: List of IP ranges in CIDR notation + schema: + type: list + default: [] + items: + - variable: ipRangeAllow + label: IP Range to Allow + schema: + type: string + default: "" + required: true + - variable: api_access_https_block + label: API Access HTTPS Block + description: List of IP ranges in CIDR notation + schema: + type: list + default: [] + items: + - variable: ipRangeBlock + label: IP Range to Block + schema: + type: string + default: "" + required: true + - variable: api_auth_enable + label: API Auth Enable + description: Set to false to disable auth for all clients. + schema: + type: boolean + default: true + - variable: api_auth_disable_localhost + label: API Auth Disable Localhost + description: Set to true to disable auth for clients from localhost. + schema: + type: boolean + default: false + - variable: api_auth0_enable + label: API Auth0 Enable + description: Enable Auth0. + schema: + type: boolean + default: false + - variable: api_auth0_tenants + label: API Auth0 Tenants + description: List of base64 encoded Auth0 tenant JSON objects. + schema: + type: list + default: [] + items: + - variable: tenant + label: Tenant + schema: + type: string + default: "" + required: true + - variable: storage_disk + label: Storage Disk + schema: + additional_attrs: true + type: dict + attrs: + - variable: disk_max_size_mb + label: Storage Disk Max Size MByte + description: Max allowed megabytes for Disk Dir (0 for Unlimited) + schema: + type: int + default: 0 + - variable: cache_enable + label: Storage Disk Cache Enable + description: Enable cache for files Storage Disk + schema: + type: boolean + default: true + - variable: cache_max_size_mb + label: Storage Disk Cache Max Size MByte + description: Max allowed cache size. (0 for Unlimited) + schema: + type: int + default: 0 + - variable: cache_ttl + label: Storage Disk Cache TTL Seconds + description: Seconds to keep files in cache. + schema: + type: int + default: 300 + - variable: cache_max_file_size_mb + label: Storage Disk Max File Size MBytes + description: Max. file size to put in cache. (0 for Unlimited) + schema: + type: int + default: 0 + - variable: cache_types + label: Cache Types + description: List of file extensions to cache + schema: + type: list + default: [] + items: + - variable: type + label: Type + schema: + type: string + default: "" + required: true + - variable: log_max_lines + label: Log Max Lines + schema: + type: int + default: 10000 + - variable: storage_mem + label: Storage memory + schema: + additional_attrs: true + type: dict + attrs: + - variable: storage_mem_auth_enable + label: Storage Memory Auth Enable + description: Enable basic auth for PUT,POST, and DELETE on /memfs. + schema: + type: boolean + default: true + - variable: storage_mem_auth_username + label: Storage Memory Auth Username + description: Username for Basic-Auth of /memfs. Required if auth is enabled. + schema: + type: string + default: "" + required: true + show_if: [[storage_mem_auth_enable, "=", true]] + - variable: storage_mem_auth_password + label: Storage Memory Auth Password + description: Password for Basic-Auth of /memfs. Required if auth is enabled. + schema: + type: string + default: "" + private: true + required: true + show_if: [[storage_mem_auth_enable, "=", true]] + - variable: storage_mem_max_size_mb + label: Storage Memory Max Size MBytes + description: Max. allowed megabytes for /memfs. (0 for Unlimited) + schema: + type: int + default: 0 + - variable: storage_mem_purge + label: Storage Memory Purge + description: Set to true to remove the oldest entries if the /memfs is full. + schema: + type: boolean + default: false + - variable: rtmp + label: RTMP + schema: + additional_attrs: true + type: dict + attrs: + - variable: rtmp_enable + label: RTMP Enable + description: Enable RTMP server. + schema: + type: boolean + default: false + - variable: rtmps_enable + label: RTMPS Enable + description: Enable RTMP over TLS (Requires TLS to be enabled) + schema: + type: boolean + default: false + - variable: rtmp_token + label: RTMP Token + description: RTMP token for publishing and playing. The token is the value of the URL query parameter token. + schema: + type: string + default: "" + private: true + - variable: rtmp_app + label: RTMP App + description: RTMP app for publishing. + schema: + type: string + default: "/" + - variable: ffmpeg + label: FFMPEG + schema: + additional_attrs: true + type: dict + attrs: + - variable: ffmpeg_binary + label: FFMPEG Binary + description: Path to FFmpeg binary. + schema: + type: string + default: ffmpeg + required: true + - variable: ffmpeg_max_processes + label: FFMPEG Max Processes + description: Max. allowed simultaneously running FFmpeg instances. (0 for unlimited.) + schema: + type: string + default: ffmpeg + - variable: ffmpeg_access_input_allow + label: FFMPEG Access Input Allow + description: List of pattern for allowed input URI + schema: + type: list + default: [] + items: + - variable: allowInput + label: Allow Input + schema: + type: string + default: "" + required: true + - variable: ffmpeg_access_input_block + label: FFMPEG Access Input Block + description: List of pattern for blocked input URI + schema: + type: list + default: [] + items: + - variable: blockInput + label: Block Input + schema: + type: string + default: "" + required: true + - variable: ffmpeg_access_output_allow + label: FFMPEG Access Output Allow + description: List of pattern for allowed output URI + schema: + type: list + default: [] + items: + - variable: allowOutput + label: Allow Output + schema: + type: string + default: "" + required: true + - variable: ffmpeg_access_output_block + label: FFMPEG Access Output Block + description: List of pattern for blocked output URI + schema: + type: list + default: [] + items: + - variable: blockOutput + label: Block Output + schema: + type: string + default: "" + required: true + - variable: ffmpeg_log_max_lines + label: FFMPEG Log Max Lines + schema: + type: int + default: 50 + - variable: ffmpeg_log_max_history + label: FFMPEG Log Max History + schema: + type: int + default: 3 + - variable: playout + label: Playout + schema: + additional_attrs: true + type: dict + attrs: + - variable: playout_enable + label: Playout Enable + description: Enable playout API where available + schema: + type: boolean + default: false + - variable: playout_min_port + label: Playout Min Port + description: Min. port a playout server per input can run on. + schema: + type: int + default: 0 + - variable: playout_max_port + label: Playout Max Port + description: Max. port a playout server per input can run on. + schema: + type: int + default: 0 + - variable: logs + label: Logs + schema: + additional_attrs: true + type: dict + attrs: + - variable: log_level + label: Log Level + schema: + type: string + default: "" + enum: + - value: info + description: info + - value: silent + description: silent + - value: warn + description: warn + - value: error + description: error + - value: debug + description: debug + - variable: log_topics + label: Log Topics + description: List of topics to log + schema: + type: list + default: [] + items: + - variable: topic + label: Topic + schema: + type: string + default: "" + required: true + - variable: log_max_lines + label: Log Max Lines + schema: + type: int + default: 10000 + - variable: debug + label: Debug + schema: + additional_attrs: true + type: dict + attrs: + - variable: debug_profiling + label: Debug Profiling + description: Set to true to enable profiling endpoint on /profiling. + schema: + type: boolean + default: false + - variable: debug_force_gc + label: Debug Force GC + description: Number of seconds between forcing GC to return memory to the OS. + schema: + type: boolean + default: false + - variable: metrics + label: Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: metrics_enable + label: Metrics Enable + description: Enable collecting historic metrics data. + schema: + type: boolean + default: false + - variable: metrics_prometheus_enable + label: Prometheus Metrics Enable + description: Enable prometheus endpoint /metrics. + schema: + type: boolean + default: false + - variable: metrics_range_seconds + label: Metrics Range Seconds + description: Seconds to keep history metric data. + schema: + type: int + default: 300 + - variable: metrics_interval_seconds + label: Metrics Interval Seconds + description: Interval for collecting metrics. + schema: + type: int + default: 2 + - variable: sessions + label: Sessions + schema: + additional_attrs: true + type: dict + attrs: + - variable: sessions_enable + label: Sessions Enable + description: Enable HLS statistics for /memfs. + schema: + type: boolean + default: false + - variable: sessions_ip_ignore_list + label: Session IP Ignore List + description: List of IP ranges in CIDR notation + schema: + type: list + default: [] + items: + - variable: ignoreIP + label: Ignore IP + schema: + type: string + default: "" + required: true + - variable: sessions_timeout_sec + label: Session Timeout Seconds + description: Timeout of a session in seconds. + schema: + type: int + default: 30 + - variable: sessions_persist + label: Sessions Persist + description: Whether to persist the session history + schema: + type: boolean + default: false + - variable: sessions_max_bitrate + label: Session Max Bitrate + description: Max. allowed outgoing bitrate in mbit/s. (0 for unlimited.) + schema: + type: int + default: 0 + - variable: sessions_max_sessions + label: Max Session + description: Max. allowed number of simultaneous sessions. (0 for unlimited.) + schema: + type: int + default: 0 + - variable: router + label: Router + schema: + additional_attrs: true + type: dict + attrs: + - variable: router_blocked_prefixes + label: Blocked Prefixes + description: List of path prefixes that can't be routed. + schema: + type: list + default: [] + items: + - variable: blockedPrefix + label: Blocked Prefix + schema: + type: string + default: "" + required: true + - variable: router_routes + label: Routes + description: "List of route mappings of the form [from]:[to], e.g." + schema: + type: list + default: [] + items: + - variable: route + label: Route + schema: + type: string + default: "" + required: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8080 + required: true + - variable: https + label: HTTPS Service + description: The HTTPS service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: https + label: HTTPS Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8081 + required: true + - variable: rtmp + label: RTmP Service + description: The RTmP service for live streaming + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: rtmp + label: RTMP Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 1935 + required: true + - variable: rtmps + label: RTMP Secure Service + description: The RTMP service for live streaming + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: rtmps + label: RTSP Secure Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 1936 + required: true + - variable: srt + label: SRT Data Service + description: The SRT service for data + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: srt + label: SRT Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 6000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: App Data Storage + description: Stores the Application Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: https + label: HTTPS Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/restreamer/2.0.10/templates/_config.tpl b/incubator/restreamer/2.0.11/templates/_config.tpl similarity index 100% rename from incubator/restreamer/2.0.10/templates/_config.tpl rename to incubator/restreamer/2.0.11/templates/_config.tpl diff --git a/incubator/restreamer/2.0.10/templates/_secret.tpl b/incubator/restreamer/2.0.11/templates/_secret.tpl similarity index 100% rename from incubator/restreamer/2.0.10/templates/_secret.tpl rename to incubator/restreamer/2.0.11/templates/_secret.tpl diff --git a/incubator/restreamer/2.0.10/templates/common.yaml b/incubator/restreamer/2.0.11/templates/common.yaml similarity index 100% rename from incubator/restreamer/2.0.10/templates/common.yaml rename to incubator/restreamer/2.0.11/templates/common.yaml diff --git a/incubator/rstudio/3.0.3/values.yaml b/incubator/restreamer/2.0.11/values.yaml similarity index 100% rename from incubator/rstudio/3.0.3/values.yaml rename to incubator/restreamer/2.0.11/values.yaml diff --git a/incubator/rstudio/3.0.3/CHANGELOG.md b/incubator/rstudio/3.0.3/CHANGELOG.md deleted file mode 100644 index 737384bb74b..00000000000 --- a/incubator/rstudio/3.0.3/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [rstudio-3.0.3](https://github.com/truecharts/charts/compare/rstudio-3.0.2...rstudio-3.0.3) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [rstudio-3.0.2](https://github.com/truecharts/charts/compare/rstudio-3.0.1...rstudio-3.0.2) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [rstudio-3.0.1](https://github.com/truecharts/charts/compare/rstudio-3.0.0...rstudio-3.0.1) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [rstudio-3.0.0](https://github.com/truecharts/charts/compare/rstudio-2.0.7...rstudio-3.0.0) (2022-12-25) - - - - -## [rstudio-2.0.7](https://github.com/truecharts/charts/compare/rstudio-2.0.6...rstudio-2.0.7) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/rstudio to latest - - - - -## [rstudio-2.0.6](https://github.com/truecharts/charts/compare/rstudio-2.0.5...rstudio-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [rstudio-2.0.5](https://github.com/truecharts/charts/compare/rstudio-2.0.4...rstudio-2.0.5) (2022-12-17) - -### Chore - -- update container image tccr.io/truecharts/rstudio to latest - - - - -## [rstudio-2.0.4](https://github.com/truecharts/charts/compare/rstudio-2.0.3...rstudio-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [rstudio-2.0.3](https://github.com/truecharts/charts/compare/rstudio-2.0.2...rstudio-2.0.3) (2022-12-10) - - - - -## [rstudio-2.0.2](https://github.com/truecharts/charts/compare/rstudio-2.0.1...rstudio-2.0.2) (2022-11-30) - - - - -## [rstudio-2.0.2](https://github.com/truecharts/charts/compare/rstudio-2.0.1...rstudio-2.0.2) (2022-11-30) - - - - -## [rstudio-2.0.2](https://github.com/truecharts/charts/compare/rstudio-2.0.1...rstudio-2.0.2) (2022-11-30) - - - - -## [rstudio-2.0.2](https://github.com/truecharts/charts/compare/rstudio-2.0.1...rstudio-2.0.2) (2022-11-30) - - - - diff --git a/incubator/rstudio/3.0.3/Chart.yaml b/incubator/rstudio/3.0.3/Chart.yaml deleted file mode 100644 index 52869cc89fe..00000000000 --- a/incubator/rstudio/3.0.3/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "4.2.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Integrated development environment for R, a programming language for statistical computing and graphics. -home: https://truecharts.org/charts/incubator/rstudio -icon: https://truecharts.org/img/hotlink-ok/chart-icons/rstudio.png -keywords: - - rstudio - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: rstudio -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/rstudio - - https://github.com/rocker-org/rocker-versioned2 - - https://hub.docker.com/r/rocker/rstudio/ -type: application -version: 3.0.3 -annotations: - truecharts.org/catagories: | - - Productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/rstudio/3.0.3/app-changelog.md b/incubator/rstudio/3.0.3/app-changelog.md deleted file mode 100644 index 6b93ac2030f..00000000000 --- a/incubator/rstudio/3.0.3/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [rstudio-3.0.3](https://github.com/truecharts/charts/compare/rstudio-3.0.2...rstudio-3.0.3) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/rstudio/3.0.3/app-readme.md b/incubator/rstudio/3.0.3/app-readme.md deleted file mode 100644 index c695bc3dfb8..00000000000 --- a/incubator/rstudio/3.0.3/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Integrated development environment for R, a programming language for statistical computing and graphics. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/rstudio](https://truecharts.org/charts/incubator/rstudio) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/rstudio/3.0.3/questions.yaml b/incubator/rstudio/3.0.3/questions.yaml deleted file mode 100644 index a004066ed51..00000000000 --- a/incubator/rstudio/3.0.3/questions.yaml +++ /dev/null @@ -1,1938 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: USER - label: User Name - description: Optionally set a User Name - schema: - type: string - default: "" - - variable: PASSWORD - label: User Password - description: Optionally set a Password - schema: - type: string - private: true - default: "" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: DISABLE_AUTH - label: Disable Auth - description: Disable authentication for RStudio Server. - schema: - type: boolean - default: false - - variable: ROOT - label: Root - description: If set to true, the default non-root user will be added to the sudoers group when the server init process. - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8787 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: workspace - label: "App WorkSpace Storage" - description: "Stores the Application WorkSpace." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/rstudio/3.0.4/CHANGELOG.md b/incubator/rstudio/3.0.4/CHANGELOG.md new file mode 100644 index 00000000000..8dc726ffb6c --- /dev/null +++ b/incubator/rstudio/3.0.4/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [rstudio-3.0.4](https://github.com/truecharts/charts/compare/rstudio-3.0.3...rstudio-3.0.4) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [rstudio-3.0.3](https://github.com/truecharts/charts/compare/rstudio-3.0.2...rstudio-3.0.3) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [rstudio-3.0.2](https://github.com/truecharts/charts/compare/rstudio-3.0.1...rstudio-3.0.2) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [rstudio-3.0.1](https://github.com/truecharts/charts/compare/rstudio-3.0.0...rstudio-3.0.1) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [rstudio-3.0.0](https://github.com/truecharts/charts/compare/rstudio-2.0.7...rstudio-3.0.0) (2022-12-25) + + + + +## [rstudio-2.0.7](https://github.com/truecharts/charts/compare/rstudio-2.0.6...rstudio-2.0.7) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/rstudio to latest + + + + +## [rstudio-2.0.6](https://github.com/truecharts/charts/compare/rstudio-2.0.5...rstudio-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [rstudio-2.0.5](https://github.com/truecharts/charts/compare/rstudio-2.0.4...rstudio-2.0.5) (2022-12-17) + +### Chore + +- update container image tccr.io/truecharts/rstudio to latest + + + + +## [rstudio-2.0.4](https://github.com/truecharts/charts/compare/rstudio-2.0.3...rstudio-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [rstudio-2.0.3](https://github.com/truecharts/charts/compare/rstudio-2.0.2...rstudio-2.0.3) (2022-12-10) + + + + +## [rstudio-2.0.2](https://github.com/truecharts/charts/compare/rstudio-2.0.1...rstudio-2.0.2) (2022-11-30) + + + + +## [rstudio-2.0.2](https://github.com/truecharts/charts/compare/rstudio-2.0.1...rstudio-2.0.2) (2022-11-30) + + + + +## [rstudio-2.0.2](https://github.com/truecharts/charts/compare/rstudio-2.0.1...rstudio-2.0.2) (2022-11-30) diff --git a/incubator/rstudio/3.0.4/Chart.yaml b/incubator/rstudio/3.0.4/Chart.yaml new file mode 100644 index 00000000000..f92b6f089b4 --- /dev/null +++ b/incubator/rstudio/3.0.4/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "4.2.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Integrated development environment for R, a programming language for statistical computing and graphics. +home: https://truecharts.org/charts/incubator/rstudio +icon: https://truecharts.org/img/hotlink-ok/chart-icons/rstudio.png +keywords: + - rstudio + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: rstudio +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/rstudio + - https://hub.docker.com/rocker/rstudio + - https://github.com/rocker-org/rocker-versioned2 +type: application +version: 3.0.4 +annotations: + truecharts.org/catagories: | + - Productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/scprime/2.0.8/README.md b/incubator/rstudio/3.0.4/README.md similarity index 100% rename from incubator/scprime/2.0.8/README.md rename to incubator/rstudio/3.0.4/README.md diff --git a/incubator/rstudio/3.0.4/app-changelog.md b/incubator/rstudio/3.0.4/app-changelog.md new file mode 100644 index 00000000000..46ed44af0d6 --- /dev/null +++ b/incubator/rstudio/3.0.4/app-changelog.md @@ -0,0 +1,9 @@ + + +## [rstudio-3.0.4](https://github.com/truecharts/charts/compare/rstudio-3.0.3...rstudio-3.0.4) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/rstudio/3.0.4/app-readme.md b/incubator/rstudio/3.0.4/app-readme.md new file mode 100644 index 00000000000..3b1588d4664 --- /dev/null +++ b/incubator/rstudio/3.0.4/app-readme.md @@ -0,0 +1,8 @@ +Integrated development environment for R, a programming language for statistical computing and graphics. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/rstudio](https://truecharts.org/charts/incubator/rstudio) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/rustpad/2.0.8/charts/common-11.1.2.tgz b/incubator/rstudio/3.0.4/charts/common-11.1.2.tgz similarity index 100% rename from incubator/rustpad/2.0.8/charts/common-11.1.2.tgz rename to incubator/rstudio/3.0.4/charts/common-11.1.2.tgz diff --git a/incubator/rstudio/3.0.3/ix_values.yaml b/incubator/rstudio/3.0.4/ix_values.yaml similarity index 100% rename from incubator/rstudio/3.0.3/ix_values.yaml rename to incubator/rstudio/3.0.4/ix_values.yaml diff --git a/incubator/rstudio/3.0.4/questions.yaml b/incubator/rstudio/3.0.4/questions.yaml new file mode 100644 index 00000000000..3164db6d45b --- /dev/null +++ b/incubator/rstudio/3.0.4/questions.yaml @@ -0,0 +1,1979 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: USER + label: User Name + description: Optionally set a User Name + schema: + type: string + default: "" + - variable: PASSWORD + label: User Password + description: Optionally set a Password + schema: + type: string + private: true + default: "" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DISABLE_AUTH + label: Disable Auth + description: Disable authentication for RStudio Server. + schema: + type: boolean + default: false + - variable: ROOT + label: Root + description: If set to true, the default non-root user will be added to the sudoers group when the server init process. + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8787 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: workspace + label: "App WorkSpace Storage" + description: "Stores the Application WorkSpace." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/rstudio/3.0.3/templates/common.yaml b/incubator/rstudio/3.0.4/templates/common.yaml similarity index 100% rename from incubator/rstudio/3.0.3/templates/common.yaml rename to incubator/rstudio/3.0.4/templates/common.yaml diff --git a/incubator/rustpad/2.0.8/values.yaml b/incubator/rstudio/3.0.4/values.yaml similarity index 100% rename from incubator/rustpad/2.0.8/values.yaml rename to incubator/rstudio/3.0.4/values.yaml diff --git a/incubator/rustpad/2.0.8/CHANGELOG.md b/incubator/rustpad/2.0.8/CHANGELOG.md deleted file mode 100644 index 4b63f30a947..00000000000 --- a/incubator/rustpad/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [rustpad-2.0.8](https://github.com/truecharts/charts/compare/rustpad-2.0.7...rustpad-2.0.8) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/rustpad to latest - - - - -## [rustpad-2.0.7](https://github.com/truecharts/charts/compare/rustpad-2.0.6...rustpad-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [rustpad-2.0.6](https://github.com/truecharts/charts/compare/rustpad-2.0.5...rustpad-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [rustpad-2.0.5](https://github.com/truecharts/charts/compare/rustpad-2.0.4...rustpad-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [rustpad-2.0.4](https://github.com/truecharts/charts/compare/rustpad-2.0.3...rustpad-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [rustpad-2.0.3](https://github.com/truecharts/charts/compare/rustpad-2.0.2...rustpad-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) - - - - -## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) - - - - -## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) - - - - -## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) - - - - -## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) - - - - -## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) - - - - -## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) - - - - -## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) - - - diff --git a/incubator/rustpad/2.0.8/Chart.yaml b/incubator/rustpad/2.0.8/Chart.yaml deleted file mode 100644 index 7a332a6f452..00000000000 --- a/incubator/rustpad/2.0.8/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Rustpad is an efficient and minimal open-source collaborative text editor based on the operational transformation algorithm. It lets users collaborate in real time while writing code in their browser. Rustpad is completely self-hosted and fits in a tiny Chart, no database required." -home: https://truecharts.org/charts/incubator/rustpad -icon: https://truecharts.org/img/hotlink-ok/chart-icons/rustpad.png -keywords: - - rustpad - - Cloud - - Productivity - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: rustpad -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/rustpad - - https://github.com/ekzhang/rustpad - - https://hub.docker.com/r/ekzhang/rustpad -type: application -version: 2.0.8 diff --git a/incubator/rustpad/2.0.8/app-changelog.md b/incubator/rustpad/2.0.8/app-changelog.md deleted file mode 100644 index 6e184288f1a..00000000000 --- a/incubator/rustpad/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [rustpad-2.0.8](https://github.com/truecharts/charts/compare/rustpad-2.0.7...rustpad-2.0.8) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/rustpad to latest - - \ No newline at end of file diff --git a/incubator/rustpad/2.0.8/app-readme.md b/incubator/rustpad/2.0.8/app-readme.md deleted file mode 100644 index 30752fdd085..00000000000 --- a/incubator/rustpad/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Rustpad is an efficient and minimal open-source collaborative text editor based on the operational transformation algorithm. It lets users collaborate in real time while writing code in their browser. Rustpad is completely self-hosted and fits in a tiny Chart, no database required. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/rustpad](https://truecharts.org/charts/incubator/rustpad) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/rustpad/2.0.8/questions.yaml b/incubator/rustpad/2.0.8/questions.yaml deleted file mode 100644 index f75abdac138..00000000000 --- a/incubator/rustpad/2.0.8/questions.yaml +++ /dev/null @@ -1,1854 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: EXPIRY_DAYS - label: "EXPIRY_DAYS" - description: "The number of days that inactive documents are kept in memory before being garbage collected by the server (default 1)." - schema: - type: string - default: "1" - - variable: RUST_LOG - label: "RUST_LOG" - description: "Directives that control application logging. (errorwarninfodebugtrace)" - schema: - type: string - default: "info" - - variable: SQLITE_URI - label: "SQLITE_URI" - description: "A SQLite connection string used for persistence." - schema: - type: string - default: "sqlite:///persist/rustpad_db.db" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3030 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: storagedatabase - label: "storagedatabase Storage" - description: "This is the location for the SQLite DB file." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/rustpad/2.0.9/CHANGELOG.md b/incubator/rustpad/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..85cc1907d02 --- /dev/null +++ b/incubator/rustpad/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [rustpad-2.0.9](https://github.com/truecharts/charts/compare/rustpad-2.0.8...rustpad-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [rustpad-2.0.8](https://github.com/truecharts/charts/compare/rustpad-2.0.7...rustpad-2.0.8) (2023-01-04) + +### Chore + +- update container image tccr.io/truecharts/rustpad to latest + + + + +## [rustpad-2.0.7](https://github.com/truecharts/charts/compare/rustpad-2.0.6...rustpad-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [rustpad-2.0.6](https://github.com/truecharts/charts/compare/rustpad-2.0.5...rustpad-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [rustpad-2.0.5](https://github.com/truecharts/charts/compare/rustpad-2.0.4...rustpad-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [rustpad-2.0.4](https://github.com/truecharts/charts/compare/rustpad-2.0.3...rustpad-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [rustpad-2.0.3](https://github.com/truecharts/charts/compare/rustpad-2.0.2...rustpad-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) + + + + +## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) + + + + +## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) + + + + +## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) + + + + +## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) + + + + +## [rustpad-2.0.2](https://github.com/truecharts/charts/compare/rustpad-2.0.1...rustpad-2.0.2) (2022-11-30) + + + + diff --git a/incubator/rustpad/2.0.9/Chart.yaml b/incubator/rustpad/2.0.9/Chart.yaml new file mode 100644 index 00000000000..3193d09f2a6 --- /dev/null +++ b/incubator/rustpad/2.0.9/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Rustpad is an efficient and minimal open-source collaborative text editor based on the operational transformation algorithm. It lets users collaborate in real time while writing code in their browser. Rustpad is completely self-hosted and fits in a tiny Chart, no database required." +home: https://truecharts.org/charts/incubator/rustpad +icon: https://truecharts.org/img/hotlink-ok/chart-icons/rustpad.png +keywords: + - rustpad + - Cloud + - Productivity + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: rustpad +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/rustpad + - https://hub.docker.com/ekzhang/rustpad + - https://github.com/ekzhang/rustpad +type: application +version: 2.0.9 diff --git a/incubator/searxng/2.0.16/README.md b/incubator/rustpad/2.0.9/README.md similarity index 100% rename from incubator/searxng/2.0.16/README.md rename to incubator/rustpad/2.0.9/README.md diff --git a/incubator/rustpad/2.0.9/app-changelog.md b/incubator/rustpad/2.0.9/app-changelog.md new file mode 100644 index 00000000000..b15013e6b22 --- /dev/null +++ b/incubator/rustpad/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [rustpad-2.0.9](https://github.com/truecharts/charts/compare/rustpad-2.0.8...rustpad-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/rustpad/2.0.9/app-readme.md b/incubator/rustpad/2.0.9/app-readme.md new file mode 100644 index 00000000000..782bbe3d006 --- /dev/null +++ b/incubator/rustpad/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +Rustpad is an efficient and minimal open-source collaborative text editor based on the operational transformation algorithm. It lets users collaborate in real time while writing code in their browser. Rustpad is completely self-hosted and fits in a tiny Chart, no database required. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/rustpad](https://truecharts.org/charts/incubator/rustpad) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/scprime/2.0.8/charts/common-11.1.2.tgz b/incubator/rustpad/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/scprime/2.0.8/charts/common-11.1.2.tgz rename to incubator/rustpad/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/rustpad/2.0.8/ix_values.yaml b/incubator/rustpad/2.0.9/ix_values.yaml similarity index 100% rename from incubator/rustpad/2.0.8/ix_values.yaml rename to incubator/rustpad/2.0.9/ix_values.yaml diff --git a/incubator/rustpad/2.0.9/questions.yaml b/incubator/rustpad/2.0.9/questions.yaml new file mode 100644 index 00000000000..a9126951fcc --- /dev/null +++ b/incubator/rustpad/2.0.9/questions.yaml @@ -0,0 +1,1895 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: EXPIRY_DAYS + label: "EXPIRY_DAYS" + description: "The number of days that inactive documents are kept in memory before being garbage collected by the server (default 1)." + schema: + type: string + default: "1" + - variable: RUST_LOG + label: "RUST_LOG" + description: "Directives that control application logging. (errorwarninfodebugtrace)" + schema: + type: string + default: "info" + - variable: SQLITE_URI + label: "SQLITE_URI" + description: "A SQLite connection string used for persistence." + schema: + type: string + default: "sqlite:///persist/rustpad_db.db" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3030 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: storagedatabase + label: "storagedatabase Storage" + description: "This is the location for the SQLite DB file." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/rustpad/2.0.8/templates/common.yaml b/incubator/rustpad/2.0.9/templates/common.yaml similarity index 100% rename from incubator/rustpad/2.0.8/templates/common.yaml rename to incubator/rustpad/2.0.9/templates/common.yaml diff --git a/incubator/scprime/2.0.8/values.yaml b/incubator/rustpad/2.0.9/values.yaml similarity index 100% rename from incubator/scprime/2.0.8/values.yaml rename to incubator/rustpad/2.0.9/values.yaml diff --git a/incubator/scprime/2.0.8/CHANGELOG.md b/incubator/scprime/2.0.8/CHANGELOG.md deleted file mode 100644 index fb42b5d3e81..00000000000 --- a/incubator/scprime/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [scprime-2.0.8](https://github.com/truecharts/charts/compare/scprime-2.0.7...scprime-2.0.8) (2023-01-09) - -### Chore - -- update container image tccr.io/truecharts/scprime to latest - - - - -## [scprime-2.0.7](https://github.com/truecharts/charts/compare/scprime-2.0.6...scprime-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [scprime-2.0.6](https://github.com/truecharts/charts/compare/scprime-2.0.5...scprime-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [scprime-2.0.5](https://github.com/truecharts/charts/compare/scprime-2.0.4...scprime-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [scprime-2.0.4](https://github.com/truecharts/charts/compare/scprime-2.0.3...scprime-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [scprime-2.0.3](https://github.com/truecharts/charts/compare/scprime-2.0.2...scprime-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) - - - - -## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) - - - - -## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) - - - - -## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) - - - - -## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) - - - - -## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) - - - - -## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) - - - - -## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) - - - diff --git a/incubator/scprime/2.0.8/Chart.yaml b/incubator/scprime/2.0.8/Chart.yaml deleted file mode 100644 index cec95265bdc..00000000000 --- a/incubator/scprime/2.0.8/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Crypto -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "ScPrime is a cryptocurrency project targeting public cloud services with a blockchain based ecosystem to pay individuals to store data around the globe using smart contracts and cryptographic proofs to ensure accuracy, security and redundancy." -home: https://truecharts.org/charts/incubator/scprime -icon: https://truecharts.org/img/hotlink-ok/chart-icons/scprime.png -keywords: - - scprime - - Cloud - - Crypto -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: scprime -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/scprime - - https://scpri.me - - https://hub.docker.com/r/scprime/scprime -type: application -version: 2.0.8 diff --git a/incubator/scprime/2.0.8/app-changelog.md b/incubator/scprime/2.0.8/app-changelog.md deleted file mode 100644 index b40b4daa8b6..00000000000 --- a/incubator/scprime/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [scprime-2.0.8](https://github.com/truecharts/charts/compare/scprime-2.0.7...scprime-2.0.8) (2023-01-09) - -### Chore - -- update container image tccr.io/truecharts/scprime to latest - - \ No newline at end of file diff --git a/incubator/scprime/2.0.8/app-readme.md b/incubator/scprime/2.0.8/app-readme.md deleted file mode 100644 index cc0ed2c0c44..00000000000 --- a/incubator/scprime/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -ScPrime is a cryptocurrency project targeting public cloud services with a blockchain based ecosystem to pay individuals to store data around the globe using smart contracts and cryptographic proofs to ensure accuracy, security and redundancy. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/scprime](https://truecharts.org/charts/incubator/scprime) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/scprime/2.0.8/questions.yaml b/incubator/scprime/2.0.8/questions.yaml deleted file mode 100644 index 30a5b7f55b6..00000000000 --- a/incubator/scprime/2.0.8/questions.yaml +++ /dev/null @@ -1,1964 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: SCPRIME_WALLET_PASSWORD - label: "SCPRIME_WALLET_PASSWORD" - description: "Enter your password to automatically unlock your wallet when the docker starts.<br><b>NOTE<b> Your default password is your seed phrase unless changed." - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 4282 - required: true - - variable: hostapiaddress - label: 'hostapiaddress service' - description: "Open this port in your firewall and forward to your server." - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: hostapiaddress - label: "hostapiaddress Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 4283 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: metadata - label: "metadata Storage" - description: "Location where metadata is stored including consensus, wallets and file contracts. 100Gb of free space is recommended, SSD preferred.<br>Container Path scp-data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "storage Storage" - description: "Path where shared folders are located.<br>Container Path storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/scprime/2.0.9/CHANGELOG.md b/incubator/scprime/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..3f00996b1ac --- /dev/null +++ b/incubator/scprime/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [scprime-2.0.9](https://github.com/truecharts/charts/compare/scprime-2.0.8...scprime-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [scprime-2.0.8](https://github.com/truecharts/charts/compare/scprime-2.0.7...scprime-2.0.8) (2023-01-09) + +### Chore + +- update container image tccr.io/truecharts/scprime to latest + + + + +## [scprime-2.0.7](https://github.com/truecharts/charts/compare/scprime-2.0.6...scprime-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [scprime-2.0.6](https://github.com/truecharts/charts/compare/scprime-2.0.5...scprime-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [scprime-2.0.5](https://github.com/truecharts/charts/compare/scprime-2.0.4...scprime-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [scprime-2.0.4](https://github.com/truecharts/charts/compare/scprime-2.0.3...scprime-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [scprime-2.0.3](https://github.com/truecharts/charts/compare/scprime-2.0.2...scprime-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) + + + + +## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) + + + + +## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) + + + + +## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) + + + + +## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) + + + + +## [scprime-2.0.2](https://github.com/truecharts/charts/compare/scprime-2.0.1...scprime-2.0.2) (2022-11-30) + + + + diff --git a/incubator/scprime/2.0.9/Chart.yaml b/incubator/scprime/2.0.9/Chart.yaml new file mode 100644 index 00000000000..0d6ced91aed --- /dev/null +++ b/incubator/scprime/2.0.9/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Crypto +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "ScPrime is a cryptocurrency project targeting public cloud services with a blockchain based ecosystem to pay individuals to store data around the globe using smart contracts and cryptographic proofs to ensure accuracy, security and redundancy." +home: https://truecharts.org/charts/incubator/scprime +icon: https://truecharts.org/img/hotlink-ok/chart-icons/scprime.png +keywords: + - scprime + - Cloud + - Crypto +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: scprime +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/scprime + - https://hub.docker.com/scprime/scprime + - https://scpri.me +type: application +version: 2.0.9 diff --git a/incubator/serpbear/0.0.7/README.md b/incubator/scprime/2.0.9/README.md similarity index 100% rename from incubator/serpbear/0.0.7/README.md rename to incubator/scprime/2.0.9/README.md diff --git a/incubator/scprime/2.0.9/app-changelog.md b/incubator/scprime/2.0.9/app-changelog.md new file mode 100644 index 00000000000..207927e3c1a --- /dev/null +++ b/incubator/scprime/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [scprime-2.0.9](https://github.com/truecharts/charts/compare/scprime-2.0.8...scprime-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/scprime/2.0.9/app-readme.md b/incubator/scprime/2.0.9/app-readme.md new file mode 100644 index 00000000000..41a00aba7bc --- /dev/null +++ b/incubator/scprime/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +ScPrime is a cryptocurrency project targeting public cloud services with a blockchain based ecosystem to pay individuals to store data around the globe using smart contracts and cryptographic proofs to ensure accuracy, security and redundancy. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/scprime](https://truecharts.org/charts/incubator/scprime) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/searxng/2.0.16/charts/common-11.1.2.tgz b/incubator/scprime/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/searxng/2.0.16/charts/common-11.1.2.tgz rename to incubator/scprime/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/scprime/2.0.8/ix_values.yaml b/incubator/scprime/2.0.9/ix_values.yaml similarity index 100% rename from incubator/scprime/2.0.8/ix_values.yaml rename to incubator/scprime/2.0.9/ix_values.yaml diff --git a/incubator/scprime/2.0.9/questions.yaml b/incubator/scprime/2.0.9/questions.yaml new file mode 100644 index 00000000000..ed74288f8d9 --- /dev/null +++ b/incubator/scprime/2.0.9/questions.yaml @@ -0,0 +1,2005 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: SCPRIME_WALLET_PASSWORD + label: "SCPRIME_WALLET_PASSWORD" + description: "Enter your password to automatically unlock your wallet when the docker starts.<br><b>NOTE<b> Your default password is your seed phrase unless changed." + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 4282 + required: true + - variable: hostapiaddress + label: 'hostapiaddress service' + description: "Open this port in your firewall and forward to your server." + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hostapiaddress + label: "hostapiaddress Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 4283 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: metadata + label: "metadata Storage" + description: "Location where metadata is stored including consensus, wallets and file contracts. 100Gb of free space is recommended, SSD preferred.<br>Container Path scp-data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "storage Storage" + description: "Path where shared folders are located.<br>Container Path storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/scprime/2.0.8/templates/common.yaml b/incubator/scprime/2.0.9/templates/common.yaml similarity index 100% rename from incubator/scprime/2.0.8/templates/common.yaml rename to incubator/scprime/2.0.9/templates/common.yaml diff --git a/incubator/searxng/2.0.16/values.yaml b/incubator/scprime/2.0.9/values.yaml similarity index 100% rename from incubator/searxng/2.0.16/values.yaml rename to incubator/scprime/2.0.9/values.yaml diff --git a/incubator/searxng/2.0.16/CHANGELOG.md b/incubator/searxng/2.0.16/CHANGELOG.md deleted file mode 100644 index 2d88b06db93..00000000000 --- a/incubator/searxng/2.0.16/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [searxng-2.0.16](https://github.com/truecharts/charts/compare/searxng-2.0.15...searxng-2.0.16) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/searxng to latest - - - - -## [searxng-2.0.15](https://github.com/truecharts/charts/compare/searxng-2.0.14...searxng-2.0.15) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/searxng to latest - - - - -## [searxng-2.0.14](https://github.com/truecharts/charts/compare/searxng-2.0.13...searxng-2.0.14) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/searxng to latest - - - - -## [searxng-2.0.13](https://github.com/truecharts/charts/compare/searxng-2.0.12...searxng-2.0.13) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/searxng to latest - - - - -## [searxng-2.0.12](https://github.com/truecharts/charts/compare/searxng-2.0.11...searxng-2.0.12) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [searxng-2.0.11](https://github.com/truecharts/charts/compare/searxng-2.0.10...searxng-2.0.11) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [searxng-2.0.10](https://github.com/truecharts/charts/compare/searxng-2.0.9...searxng-2.0.10) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [searxng-2.0.9](https://github.com/truecharts/charts/compare/searxng-2.0.8...searxng-2.0.9) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/searxng to latest - - - - -## [searxng-2.0.8](https://github.com/truecharts/charts/compare/searxng-2.0.7...searxng-2.0.8) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [searxng-2.0.7](https://github.com/truecharts/charts/compare/searxng-2.0.6...searxng-2.0.7) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [searxng-2.0.6](https://github.com/truecharts/charts/compare/searxng-2.0.5...searxng-2.0.6) (2022-12-12) - -### Chore diff --git a/incubator/searxng/2.0.16/Chart.yaml b/incubator/searxng/2.0.16/Chart.yaml deleted file mode 100644 index 836a721b947..00000000000 --- a/incubator/searxng/2.0.16/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Meta search engine which aggregates results from more than 70 search services. -home: https://truecharts.org/charts/incubator/searxng -icon: https://truecharts.org/img/hotlink-ok/chart-icons/searxng.png -keywords: - - searxng - - Productivity - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: searxng -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/searxng - - https://github.com/searxng/searxng - - https://hub.docker.com/r/searxng/searxng -type: application -version: 2.0.16 -annotations: - truecharts.org/catagories: | - - Productivity - - Other - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/searxng/2.0.16/app-changelog.md b/incubator/searxng/2.0.16/app-changelog.md deleted file mode 100644 index 235d9afa0bd..00000000000 --- a/incubator/searxng/2.0.16/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [searxng-2.0.16](https://github.com/truecharts/charts/compare/searxng-2.0.15...searxng-2.0.16) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/searxng to latest - - \ No newline at end of file diff --git a/incubator/searxng/2.0.17/CHANGELOG.md b/incubator/searxng/2.0.17/CHANGELOG.md new file mode 100644 index 00000000000..14d42197f3b --- /dev/null +++ b/incubator/searxng/2.0.17/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [searxng-2.0.17](https://github.com/truecharts/charts/compare/searxng-2.0.16...searxng-2.0.17) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [searxng-2.0.16](https://github.com/truecharts/charts/compare/searxng-2.0.15...searxng-2.0.16) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/searxng to latest + + + + +## [searxng-2.0.15](https://github.com/truecharts/charts/compare/searxng-2.0.14...searxng-2.0.15) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/searxng to latest + + + + +## [searxng-2.0.14](https://github.com/truecharts/charts/compare/searxng-2.0.13...searxng-2.0.14) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/searxng to latest + + + + +## [searxng-2.0.13](https://github.com/truecharts/charts/compare/searxng-2.0.12...searxng-2.0.13) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/searxng to latest + + + + +## [searxng-2.0.12](https://github.com/truecharts/charts/compare/searxng-2.0.11...searxng-2.0.12) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [searxng-2.0.11](https://github.com/truecharts/charts/compare/searxng-2.0.10...searxng-2.0.11) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [searxng-2.0.10](https://github.com/truecharts/charts/compare/searxng-2.0.9...searxng-2.0.10) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [searxng-2.0.9](https://github.com/truecharts/charts/compare/searxng-2.0.8...searxng-2.0.9) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/searxng to latest + + + + +## [searxng-2.0.8](https://github.com/truecharts/charts/compare/searxng-2.0.7...searxng-2.0.8) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [searxng-2.0.7](https://github.com/truecharts/charts/compare/searxng-2.0.6...searxng-2.0.7) (2022-12-13) + +### Chore diff --git a/incubator/searxng/2.0.17/Chart.yaml b/incubator/searxng/2.0.17/Chart.yaml new file mode 100644 index 00000000000..73076c605ec --- /dev/null +++ b/incubator/searxng/2.0.17/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Meta search engine which aggregates results from more than 70 search services. +home: https://truecharts.org/charts/incubator/searxng +icon: https://truecharts.org/img/hotlink-ok/chart-icons/searxng.png +keywords: + - searxng + - Productivity + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: searxng +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/searxng + - https://hub.docker.com/searxng/searxng + - https://github.com/searxng/searxng +type: application +version: 2.0.17 +annotations: + truecharts.org/catagories: | + - Productivity + - Other + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/serviio/2.0.7/README.md b/incubator/searxng/2.0.17/README.md similarity index 100% rename from incubator/serviio/2.0.7/README.md rename to incubator/searxng/2.0.17/README.md diff --git a/incubator/searxng/2.0.17/app-changelog.md b/incubator/searxng/2.0.17/app-changelog.md new file mode 100644 index 00000000000..5bb0ce0c359 --- /dev/null +++ b/incubator/searxng/2.0.17/app-changelog.md @@ -0,0 +1,9 @@ + + +## [searxng-2.0.17](https://github.com/truecharts/charts/compare/searxng-2.0.16...searxng-2.0.17) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/searxng/2.0.16/app-readme.md b/incubator/searxng/2.0.17/app-readme.md similarity index 100% rename from incubator/searxng/2.0.16/app-readme.md rename to incubator/searxng/2.0.17/app-readme.md diff --git a/incubator/serpbear/0.0.7/charts/common-11.1.2.tgz b/incubator/searxng/2.0.17/charts/common-11.1.2.tgz similarity index 100% rename from incubator/serpbear/0.0.7/charts/common-11.1.2.tgz rename to incubator/searxng/2.0.17/charts/common-11.1.2.tgz diff --git a/incubator/searxng/2.0.16/ix_values.yaml b/incubator/searxng/2.0.17/ix_values.yaml similarity index 100% rename from incubator/searxng/2.0.16/ix_values.yaml rename to incubator/searxng/2.0.17/ix_values.yaml diff --git a/incubator/searxng/2.0.16/questions.yaml b/incubator/searxng/2.0.17/questions.yaml similarity index 100% rename from incubator/searxng/2.0.16/questions.yaml rename to incubator/searxng/2.0.17/questions.yaml diff --git a/incubator/searxng/2.0.16/templates/common.yaml b/incubator/searxng/2.0.17/templates/common.yaml similarity index 100% rename from incubator/searxng/2.0.16/templates/common.yaml rename to incubator/searxng/2.0.17/templates/common.yaml diff --git a/incubator/serpbear/0.0.7/values.yaml b/incubator/searxng/2.0.17/values.yaml similarity index 100% rename from incubator/serpbear/0.0.7/values.yaml rename to incubator/searxng/2.0.17/values.yaml diff --git a/incubator/serpbear/0.0.7/CHANGELOG.md b/incubator/serpbear/0.0.7/CHANGELOG.md deleted file mode 100644 index 7bc859f448f..00000000000 --- a/incubator/serpbear/0.0.7/CHANGELOG.md +++ /dev/null @@ -1,62 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [serpbear-0.0.7](https://github.com/truecharts/charts/compare/serpbear-0.0.6...serpbear-0.0.7) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/serpbear to latest - - - - -## [serpbear-0.0.6](https://github.com/truecharts/charts/compare/serpbear-0.0.5...serpbear-0.0.6) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/serpbear to latest - - - - -## [serpbear-0.0.5](https://github.com/truecharts/charts/compare/serpbear-0.0.4...serpbear-0.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [serpbear-0.0.4](https://github.com/truecharts/charts/compare/serpbear-0.0.3...serpbear-0.0.4) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [serpbear-0.0.3](https://github.com/truecharts/charts/compare/serpbear-0.0.2...serpbear-0.0.3) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [serpbear-0.0.2](https://github.com/truecharts/charts/compare/serpbear-0.0.1...serpbear-0.0.2) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/serpbear to latest - - - - -## [serpbear-0.0.1]serpbear-0.0.1 (2022-12-24) - diff --git a/incubator/serpbear/0.0.7/Chart.yaml b/incubator/serpbear/0.0.7/Chart.yaml deleted file mode 100644 index 86751df5d32..00000000000 --- a/incubator/serpbear/0.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Search Engine Position Tracking App. -home: https://truecharts.org/charts/incubator/serpbear -icon: https://truecharts.org/img/hotlink-ok/chart-icons/serpbear.png -keywords: - - serpbear - - metrics -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: serpbear -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/serpbear - - https://github.com/towfiqi/serpbear - - https://hub.docker.com/r/towfiqi/serpbear -type: application -version: 0.0.7 -annotations: - truecharts.org/catagories: | - - metrics - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/serpbear/0.0.7/app-changelog.md b/incubator/serpbear/0.0.7/app-changelog.md deleted file mode 100644 index 6a77acc5ba8..00000000000 --- a/incubator/serpbear/0.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [serpbear-0.0.7](https://github.com/truecharts/charts/compare/serpbear-0.0.6...serpbear-0.0.7) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/serpbear to latest - - \ No newline at end of file diff --git a/incubator/serpbear/0.0.7/questions.yaml b/incubator/serpbear/0.0.7/questions.yaml deleted file mode 100644 index 3d69708c738..00000000000 --- a/incubator/serpbear/0.0.7/questions.yaml +++ /dev/null @@ -1,1872 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: serpbear - group: App Configuration - label: Serpbear Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: user - label: User - description: The username you want to use to login to the app. - schema: - type: string - required: true - default: "" - - variable: password - label: Password - description: The password you want to use to login to the app. - schema: - type: string - private: true - required: true - default: "" - - variable: api_key - label: API Key - description: API key that will be used to access the apps API. - schema: - type: string - private: true - required: true - default: "" - - variable: app_url - label: Next Public App URL - description: The URL where your app is hosted and can be accessed. - schema: - type: string - required: true - default: http://localhost:10605 - - variable: session_duration - label: Session Duration - description: The duration(in hour) of the user's logged in session. - schema: - type: int - default: 24 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10605 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: App Data Storage - description: Stores the Application Data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/serpbear/0.0.8/CHANGELOG.md b/incubator/serpbear/0.0.8/CHANGELOG.md new file mode 100644 index 00000000000..747ba662105 --- /dev/null +++ b/incubator/serpbear/0.0.8/CHANGELOG.md @@ -0,0 +1,71 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [serpbear-0.0.8](https://github.com/truecharts/charts/compare/serpbear-0.0.7...serpbear-0.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [serpbear-0.0.7](https://github.com/truecharts/charts/compare/serpbear-0.0.6...serpbear-0.0.7) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/serpbear to latest + + + + +## [serpbear-0.0.6](https://github.com/truecharts/charts/compare/serpbear-0.0.5...serpbear-0.0.6) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/serpbear to latest + + + + +## [serpbear-0.0.5](https://github.com/truecharts/charts/compare/serpbear-0.0.4...serpbear-0.0.5) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [serpbear-0.0.4](https://github.com/truecharts/charts/compare/serpbear-0.0.3...serpbear-0.0.4) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [serpbear-0.0.3](https://github.com/truecharts/charts/compare/serpbear-0.0.2...serpbear-0.0.3) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [serpbear-0.0.2](https://github.com/truecharts/charts/compare/serpbear-0.0.1...serpbear-0.0.2) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/serpbear to latest + + + + +## [serpbear-0.0.1]serpbear-0.0.1 (2022-12-24) + diff --git a/incubator/serpbear/0.0.8/Chart.yaml b/incubator/serpbear/0.0.8/Chart.yaml new file mode 100644 index 00000000000..85b7059bf1c --- /dev/null +++ b/incubator/serpbear/0.0.8/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Search Engine Position Tracking App. +home: https://truecharts.org/charts/incubator/serpbear +icon: https://truecharts.org/img/hotlink-ok/chart-icons/serpbear.png +keywords: + - serpbear + - metrics +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: serpbear +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/serpbear + - https://hub.docker.com/towfiqi/serpbear + - https://github.com/towfiqi/serpbear +type: application +version: 0.0.8 +annotations: + truecharts.org/catagories: | + - metrics + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/sftpgo/2.0.9/README.md b/incubator/serpbear/0.0.8/README.md similarity index 100% rename from incubator/sftpgo/2.0.9/README.md rename to incubator/serpbear/0.0.8/README.md diff --git a/incubator/serpbear/0.0.8/app-changelog.md b/incubator/serpbear/0.0.8/app-changelog.md new file mode 100644 index 00000000000..0f4058da22b --- /dev/null +++ b/incubator/serpbear/0.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [serpbear-0.0.8](https://github.com/truecharts/charts/compare/serpbear-0.0.7...serpbear-0.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/serpbear/0.0.7/app-readme.md b/incubator/serpbear/0.0.8/app-readme.md similarity index 100% rename from incubator/serpbear/0.0.7/app-readme.md rename to incubator/serpbear/0.0.8/app-readme.md diff --git a/incubator/serviio/2.0.7/charts/common-11.1.2.tgz b/incubator/serpbear/0.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/serviio/2.0.7/charts/common-11.1.2.tgz rename to incubator/serpbear/0.0.8/charts/common-11.1.2.tgz diff --git a/incubator/serpbear/0.0.7/ix_values.yaml b/incubator/serpbear/0.0.8/ix_values.yaml similarity index 100% rename from incubator/serpbear/0.0.7/ix_values.yaml rename to incubator/serpbear/0.0.8/ix_values.yaml diff --git a/incubator/serpbear/0.0.8/questions.yaml b/incubator/serpbear/0.0.8/questions.yaml new file mode 100644 index 00000000000..d0a98c57bae --- /dev/null +++ b/incubator/serpbear/0.0.8/questions.yaml @@ -0,0 +1,1913 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: serpbear + group: App Configuration + label: Serpbear Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: user + label: User + description: The username you want to use to login to the app. + schema: + type: string + required: true + default: "" + - variable: password + label: Password + description: The password you want to use to login to the app. + schema: + type: string + private: true + required: true + default: "" + - variable: api_key + label: API Key + description: API key that will be used to access the apps API. + schema: + type: string + private: true + required: true + default: "" + - variable: app_url + label: Next Public App URL + description: The URL where your app is hosted and can be accessed. + schema: + type: string + required: true + default: http://localhost:10605 + - variable: session_duration + label: Session Duration + description: The duration(in hour) of the user's logged in session. + schema: + type: int + default: 24 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10605 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: App Data Storage + description: Stores the Application Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/serpbear/0.0.7/templates/_secret.tpl b/incubator/serpbear/0.0.8/templates/_secret.tpl similarity index 100% rename from incubator/serpbear/0.0.7/templates/_secret.tpl rename to incubator/serpbear/0.0.8/templates/_secret.tpl diff --git a/incubator/serpbear/0.0.7/templates/common.yaml b/incubator/serpbear/0.0.8/templates/common.yaml similarity index 100% rename from incubator/serpbear/0.0.7/templates/common.yaml rename to incubator/serpbear/0.0.8/templates/common.yaml diff --git a/incubator/serviio/2.0.7/values.yaml b/incubator/serpbear/0.0.8/values.yaml similarity index 100% rename from incubator/serviio/2.0.7/values.yaml rename to incubator/serpbear/0.0.8/values.yaml diff --git a/incubator/serviio/2.0.7/CHANGELOG.md b/incubator/serviio/2.0.7/CHANGELOG.md deleted file mode 100644 index 3f95ea3e7df..00000000000 --- a/incubator/serviio/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [serviio-2.0.7](https://github.com/truecharts/charts/compare/serviio-2.0.6...serviio-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [serviio-2.0.6](https://github.com/truecharts/charts/compare/serviio-2.0.5...serviio-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [serviio-2.0.5](https://github.com/truecharts/charts/compare/serviio-2.0.4...serviio-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [serviio-2.0.4](https://github.com/truecharts/charts/compare/serviio-2.0.3...serviio-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [serviio-2.0.3](https://github.com/truecharts/charts/compare/serviio-2.0.2...serviio-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - - - -## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) - - diff --git a/incubator/serviio/2.0.7/Chart.yaml b/incubator/serviio/2.0.7/Chart.yaml deleted file mode 100644 index 9afa19e5698..00000000000 --- a/incubator/serviio/2.0.7/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaServer-Video - - MediaServer-Music - - MediaServer-Books - - MediaServer-Photos - - MediaServer-Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Serviio is a freeware media server designed to let users stream music, video, or image files to DLNA compliant televisions, Blu-ray players, game consoles, and Android or Windows Mobile devices on a home network." -home: https://truecharts.org/charts/incubator/serviio -icon: https://truecharts.org/img/hotlink-ok/chart-icons/serviio.png -keywords: - - serviio - - MediaServer-Video - - MediaServer-Music - - MediaServer-Books - - MediaServer-Photos - - MediaServer-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: serviio -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/serviio - - https://serviio.org/ - - https://hub.docker.com/r/riftbit/serviio -type: application -version: 2.0.7 diff --git a/incubator/serviio/2.0.7/app-changelog.md b/incubator/serviio/2.0.7/app-changelog.md deleted file mode 100644 index d0136d4e595..00000000000 --- a/incubator/serviio/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [serviio-2.0.7](https://github.com/truecharts/charts/compare/serviio-2.0.6...serviio-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/serviio/2.0.7/app-readme.md b/incubator/serviio/2.0.7/app-readme.md deleted file mode 100644 index 4efb76c3073..00000000000 --- a/incubator/serviio/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Serviio is a freeware media server designed to let users stream music, video, or image files to DLNA compliant televisions, Blu-ray players, game consoles, and Android or Windows Mobile devices on a home network. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/serviio](https://truecharts.org/charts/incubator/serviio) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/serviio/2.0.7/questions.yaml b/incubator/serviio/2.0.7/questions.yaml deleted file mode 100644 index e3b7b5a3c4f..00000000000 --- a/incubator/serviio/2.0.7/questions.yaml +++ /dev/null @@ -1,2247 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 23423 - required: true - - variable: hostport2 - label: 'hostport2 service' - description: "Container Port 8895" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: hostport2 - label: "hostport2 Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8895 - required: true - - variable: hostport3 - label: 'hostport3 service' - description: "Container Port 23523" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: hostport3 - label: "hostport3 Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 23523 - required: true - - variable: hostport5 - label: 'hostport5 service' - description: "Container Port 23424" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: hostport5 - label: "hostport5 Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 23424 - required: true - - variable: hostport6 - label: 'hostport6 service' - description: "Container Port 23524" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: hostport6 - label: "hostport6 Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 23524 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: hostpath5 - label: "hostpath5 Storage" - description: "Path (root) to media content. ADD the container path (mediaserviio) into Library > Shared Folder in Serviio GUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: hostpath2 - label: "hostpath2 Storage" - description: "Container Path optserviiolibrary" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: hostpath3 - label: "hostpath3 Storage" - description: "Container Path optserviioplugins" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: hostpath4 - label: "hostpath4 Storage" - description: "Container Path optserviiolog" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/serviio/2.0.8/CHANGELOG.md b/incubator/serviio/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..1e45c052fe0 --- /dev/null +++ b/incubator/serviio/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [serviio-2.0.8](https://github.com/truecharts/charts/compare/serviio-2.0.7...serviio-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [serviio-2.0.7](https://github.com/truecharts/charts/compare/serviio-2.0.6...serviio-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [serviio-2.0.6](https://github.com/truecharts/charts/compare/serviio-2.0.5...serviio-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [serviio-2.0.5](https://github.com/truecharts/charts/compare/serviio-2.0.4...serviio-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [serviio-2.0.4](https://github.com/truecharts/charts/compare/serviio-2.0.3...serviio-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [serviio-2.0.3](https://github.com/truecharts/charts/compare/serviio-2.0.2...serviio-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) + + + + +## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) + + + + +## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) + + + + +## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) + + + + +## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) + + + + +## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) + + + + +## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) + + + + +## [serviio-2.0.2](https://github.com/truecharts/charts/compare/serviio-2.0.1...serviio-2.0.2) (2022-11-30) + + + diff --git a/incubator/serviio/2.0.8/Chart.yaml b/incubator/serviio/2.0.8/Chart.yaml new file mode 100644 index 00000000000..ca0cec91277 --- /dev/null +++ b/incubator/serviio/2.0.8/Chart.yaml @@ -0,0 +1,37 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaServer-Video + - MediaServer-Music + - MediaServer-Books + - MediaServer-Photos + - MediaServer-Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Serviio is a freeware media server designed to let users stream music, video, or image files to DLNA compliant televisions, Blu-ray players, game consoles, and Android or Windows Mobile devices on a home network." +home: https://truecharts.org/charts/incubator/serviio +icon: https://truecharts.org/img/hotlink-ok/chart-icons/serviio.png +keywords: + - serviio + - MediaServer-Video + - MediaServer-Music + - MediaServer-Books + - MediaServer-Photos + - MediaServer-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: serviio +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/serviio + - https://hub.docker.com/riftbit/serviio + - https://serviio.org/ +type: application +version: 2.0.8 diff --git a/incubator/shaarli/2.0.8/README.md b/incubator/serviio/2.0.8/README.md similarity index 100% rename from incubator/shaarli/2.0.8/README.md rename to incubator/serviio/2.0.8/README.md diff --git a/incubator/serviio/2.0.8/app-changelog.md b/incubator/serviio/2.0.8/app-changelog.md new file mode 100644 index 00000000000..7841ed2f960 --- /dev/null +++ b/incubator/serviio/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [serviio-2.0.8](https://github.com/truecharts/charts/compare/serviio-2.0.7...serviio-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/serviio/2.0.8/app-readme.md b/incubator/serviio/2.0.8/app-readme.md new file mode 100644 index 00000000000..a6e2286149f --- /dev/null +++ b/incubator/serviio/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Serviio is a freeware media server designed to let users stream music, video, or image files to DLNA compliant televisions, Blu-ray players, game consoles, and Android or Windows Mobile devices on a home network. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/serviio](https://truecharts.org/charts/incubator/serviio) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/sftpgo/2.0.9/charts/common-11.1.2.tgz b/incubator/serviio/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/sftpgo/2.0.9/charts/common-11.1.2.tgz rename to incubator/serviio/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/serviio/2.0.7/ix_values.yaml b/incubator/serviio/2.0.8/ix_values.yaml similarity index 100% rename from incubator/serviio/2.0.7/ix_values.yaml rename to incubator/serviio/2.0.8/ix_values.yaml diff --git a/incubator/serviio/2.0.8/questions.yaml b/incubator/serviio/2.0.8/questions.yaml new file mode 100644 index 00000000000..8a159eab913 --- /dev/null +++ b/incubator/serviio/2.0.8/questions.yaml @@ -0,0 +1,2288 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 23423 + required: true + - variable: hostport2 + label: 'hostport2 service' + description: "Container Port 8895" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hostport2 + label: "hostport2 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8895 + required: true + - variable: hostport3 + label: 'hostport3 service' + description: "Container Port 23523" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hostport3 + label: "hostport3 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 23523 + required: true + - variable: hostport5 + label: 'hostport5 service' + description: "Container Port 23424" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hostport5 + label: "hostport5 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 23424 + required: true + - variable: hostport6 + label: 'hostport6 service' + description: "Container Port 23524" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: hostport6 + label: "hostport6 Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 23524 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: hostpath5 + label: "hostpath5 Storage" + description: "Path (root) to media content. ADD the container path (mediaserviio) into Library > Shared Folder in Serviio GUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostpath2 + label: "hostpath2 Storage" + description: "Container Path optserviiolibrary" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostpath3 + label: "hostpath3 Storage" + description: "Container Path optserviioplugins" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostpath4 + label: "hostpath4 Storage" + description: "Container Path optserviiolog" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/serviio/2.0.7/templates/common.yaml b/incubator/serviio/2.0.8/templates/common.yaml similarity index 100% rename from incubator/serviio/2.0.7/templates/common.yaml rename to incubator/serviio/2.0.8/templates/common.yaml diff --git a/incubator/sftpgo/2.0.9/values.yaml b/incubator/serviio/2.0.8/values.yaml similarity index 100% rename from incubator/sftpgo/2.0.9/values.yaml rename to incubator/serviio/2.0.8/values.yaml diff --git a/incubator/sftpgo/2.0.10/CHANGELOG.md b/incubator/sftpgo/2.0.10/CHANGELOG.md new file mode 100644 index 00000000000..144bf366b31 --- /dev/null +++ b/incubator/sftpgo/2.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [sftpgo-2.0.10](https://github.com/truecharts/charts/compare/sftpgo-2.0.9...sftpgo-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [sftpgo-2.0.9](https://github.com/truecharts/charts/compare/sftpgo-2.0.8...sftpgo-2.0.9) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/sftpgo to latest + + + + +## [sftpgo-2.0.8](https://github.com/truecharts/charts/compare/sftpgo-2.0.7...sftpgo-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [sftpgo-2.0.7](https://github.com/truecharts/charts/compare/sftpgo-2.0.6...sftpgo-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [sftpgo-2.0.6](https://github.com/truecharts/charts/compare/sftpgo-2.0.5...sftpgo-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [sftpgo-2.0.5](https://github.com/truecharts/charts/compare/sftpgo-2.0.4...sftpgo-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [sftpgo-2.0.4](https://github.com/truecharts/charts/compare/sftpgo-2.0.3...sftpgo-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) + + + + +## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) + + + + +## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) + + + + +## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) + + + + +## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) + + + + +## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) + + + + diff --git a/incubator/sftpgo/2.0.10/Chart.yaml b/incubator/sftpgo/2.0.10/Chart.yaml new file mode 100644 index 00000000000..e5f397369b4 --- /dev/null +++ b/incubator/sftpgo/2.0.10/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Network-FTP +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Fully featured and highly configurable SFTP server with optional HTTP/S, FTP, FTPS and WebDAV support. Several storage backends are supported: local filesystem, encrypted local filesystem, S3 (compatible) Object Storage, Google Cloud Storage, Azure Blob Storage, SFTP." +home: https://truecharts.org/charts/incubator/sftpgo +icon: https://truecharts.org/img/hotlink-ok/chart-icons/sftpgo.png +keywords: + - sftpgo + - Network-FTP +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: sftpgo +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/sftpgo + - https://hub.docker.com/drakkan/sftpgo + - https://github.com/drakkan/sftpgo +type: application +version: 2.0.10 diff --git a/incubator/sheetable/3.0.19/README.md b/incubator/sftpgo/2.0.10/README.md similarity index 100% rename from incubator/sheetable/3.0.19/README.md rename to incubator/sftpgo/2.0.10/README.md diff --git a/incubator/sftpgo/2.0.10/app-changelog.md b/incubator/sftpgo/2.0.10/app-changelog.md new file mode 100644 index 00000000000..6f3737e1d80 --- /dev/null +++ b/incubator/sftpgo/2.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [sftpgo-2.0.10](https://github.com/truecharts/charts/compare/sftpgo-2.0.9...sftpgo-2.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/sftpgo/2.0.10/app-readme.md b/incubator/sftpgo/2.0.10/app-readme.md new file mode 100644 index 00000000000..6e431b453b4 --- /dev/null +++ b/incubator/sftpgo/2.0.10/app-readme.md @@ -0,0 +1,8 @@ +Fully featured and highly configurable SFTP server with optional HTTP/S, FTP, FTPS and WebDAV support. Several storage backends are supported: local filesystem, encrypted local filesystem, S3 (compatible) Object Storage, Google Cloud Storage, Azure Blob Storage, SFTP. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/sftpgo](https://truecharts.org/charts/incubator/sftpgo) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/shaarli/2.0.8/charts/common-11.1.2.tgz b/incubator/sftpgo/2.0.10/charts/common-11.1.2.tgz similarity index 100% rename from incubator/shaarli/2.0.8/charts/common-11.1.2.tgz rename to incubator/sftpgo/2.0.10/charts/common-11.1.2.tgz diff --git a/incubator/sftpgo/2.0.9/ix_values.yaml b/incubator/sftpgo/2.0.10/ix_values.yaml similarity index 100% rename from incubator/sftpgo/2.0.9/ix_values.yaml rename to incubator/sftpgo/2.0.10/ix_values.yaml diff --git a/incubator/sftpgo/2.0.10/questions.yaml b/incubator/sftpgo/2.0.10/questions.yaml new file mode 100644 index 00000000000..2b26dc315dc --- /dev/null +++ b/incubator/sftpgo/2.0.10/questions.yaml @@ -0,0 +1,2325 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP + label: "SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP" + description: "Put your server IP here for local access, or your public IP for public access via port forwarding." + schema: + type: string + default: "10.0.0.10" + - variable: SFTPGO_COMMON__DEFENDER__ENABLED + label: "SFTPGO_COMMON__DEFENDER__ENABLED" + description: "httpsgithub.comdrakkansftpgoblobmaindocsdefender.md" + schema: + type: string + default: "true" + - variable: SFTPGO_FTPD__PASSIVE_PORT_RANGE__START + label: "SFTPGO_FTPD__PASSIVE_PORT_RANGE__START" + schema: + type: string + default: "50000" + - variable: SFTPGO_FTPD__PASSIVE_PORT_RANGE__END + label: "SFTPGO_FTPD__PASSIVE_PORT_RANGE__END" + schema: + type: string + default: "50100" + - variable: SFTPGO_FTPD__BINDINGS__0__PORT + label: "SFTPGO_FTPD__BINDINGS__0__PORT" + schema: + type: string + default: "2121" + - variable: SFTPGO_WEBDAVD__BINDINGS__0__PORT + label: "SFTPGO_WEBDAVD__BINDINGS__0__PORT" + schema: + type: string + default: "10080" + - variable: SFTPGO_FTPD__BINDINGS__0__DEBUG + label: "SFTPGO_FTPD__BINDINGS__0__DEBUG" + description: "0 = false, 1 = true" + schema: + type: string + default: "0" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 2221 + required: true + - variable: ftpport + label: 'ftpport service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ftpport + label: "ftpport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 2121 + required: true + - variable: sftpport + label: 'sftpport service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: sftpport + label: "sftpport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 2022 + required: true + - variable: passiveports + label: 'passiveports service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: passiveports + label: "passiveports Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50000 + required: true + - variable: webdavport + label: 'webdavport service' + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: webdavport + label: "webdavport Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10080 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: backupdirectory + label: "backupdirectory Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: configpath + label: "configpath Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: shareaccess + label: "shareaccess Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/sftpgo/2.0.9/templates/common.yaml b/incubator/sftpgo/2.0.10/templates/common.yaml similarity index 100% rename from incubator/sftpgo/2.0.9/templates/common.yaml rename to incubator/sftpgo/2.0.10/templates/common.yaml diff --git a/incubator/shaarli/2.0.8/values.yaml b/incubator/sftpgo/2.0.10/values.yaml similarity index 100% rename from incubator/shaarli/2.0.8/values.yaml rename to incubator/sftpgo/2.0.10/values.yaml diff --git a/incubator/sftpgo/2.0.9/CHANGELOG.md b/incubator/sftpgo/2.0.9/CHANGELOG.md deleted file mode 100644 index a28df3e2550..00000000000 --- a/incubator/sftpgo/2.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [sftpgo-2.0.9](https://github.com/truecharts/charts/compare/sftpgo-2.0.8...sftpgo-2.0.9) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/sftpgo to latest - - - - -## [sftpgo-2.0.8](https://github.com/truecharts/charts/compare/sftpgo-2.0.7...sftpgo-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [sftpgo-2.0.7](https://github.com/truecharts/charts/compare/sftpgo-2.0.6...sftpgo-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [sftpgo-2.0.6](https://github.com/truecharts/charts/compare/sftpgo-2.0.5...sftpgo-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [sftpgo-2.0.5](https://github.com/truecharts/charts/compare/sftpgo-2.0.4...sftpgo-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [sftpgo-2.0.4](https://github.com/truecharts/charts/compare/sftpgo-2.0.3...sftpgo-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) - - - - -## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) - - - - -## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) - - - - -## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) - - - - -## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) - - - - -## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) - - - - -## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) - - - - -## [sftpgo-2.0.3](https://github.com/truecharts/charts/compare/sftpgo-2.0.2...sftpgo-2.0.3) (2022-11-30) - - - diff --git a/incubator/sftpgo/2.0.9/Chart.yaml b/incubator/sftpgo/2.0.9/Chart.yaml deleted file mode 100644 index 513ff52ed84..00000000000 --- a/incubator/sftpgo/2.0.9/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Network-FTP -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Fully featured and highly configurable SFTP server with optional HTTP/S, FTP, FTPS and WebDAV support. Several storage backends are supported: local filesystem, encrypted local filesystem, S3 (compatible) Object Storage, Google Cloud Storage, Azure Blob Storage, SFTP." -home: https://truecharts.org/charts/incubator/sftpgo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/sftpgo.png -keywords: - - sftpgo - - Network-FTP -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: sftpgo -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/sftpgo - - https://github.com/drakkan/sftpgo - - https://hub.docker.com/r/drakkan/sftpgo -type: application -version: 2.0.9 diff --git a/incubator/sftpgo/2.0.9/app-changelog.md b/incubator/sftpgo/2.0.9/app-changelog.md deleted file mode 100644 index 92f7b6e327b..00000000000 --- a/incubator/sftpgo/2.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [sftpgo-2.0.9](https://github.com/truecharts/charts/compare/sftpgo-2.0.8...sftpgo-2.0.9) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/sftpgo to latest - - \ No newline at end of file diff --git a/incubator/sftpgo/2.0.9/app-readme.md b/incubator/sftpgo/2.0.9/app-readme.md deleted file mode 100644 index 6ee3ea8f61b..00000000000 --- a/incubator/sftpgo/2.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Fully featured and highly configurable SFTP server with optional HTTP/S, FTP, FTPS and WebDAV support. Several storage backends are supported: local filesystem, encrypted local filesystem, S3 (compatible) Object Storage, Google Cloud Storage, Azure Blob Storage, SFTP. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/sftpgo](https://truecharts.org/charts/incubator/sftpgo) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/sftpgo/2.0.9/questions.yaml b/incubator/sftpgo/2.0.9/questions.yaml deleted file mode 100644 index 4c65d8fe291..00000000000 --- a/incubator/sftpgo/2.0.9/questions.yaml +++ /dev/null @@ -1,2284 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP - label: "SFTPGO_FTPD__BINDINGS__0__FORCE_PASSIVE_IP" - description: "Put your server IP here for local access, or your public IP for public access via port forwarding." - schema: - type: string - default: "10.0.0.10" - - variable: SFTPGO_COMMON__DEFENDER__ENABLED - label: "SFTPGO_COMMON__DEFENDER__ENABLED" - description: "httpsgithub.comdrakkansftpgoblobmaindocsdefender.md" - schema: - type: string - default: "true" - - variable: SFTPGO_FTPD__PASSIVE_PORT_RANGE__START - label: "SFTPGO_FTPD__PASSIVE_PORT_RANGE__START" - schema: - type: string - default: "50000" - - variable: SFTPGO_FTPD__PASSIVE_PORT_RANGE__END - label: "SFTPGO_FTPD__PASSIVE_PORT_RANGE__END" - schema: - type: string - default: "50100" - - variable: SFTPGO_FTPD__BINDINGS__0__PORT - label: "SFTPGO_FTPD__BINDINGS__0__PORT" - schema: - type: string - default: "2121" - - variable: SFTPGO_WEBDAVD__BINDINGS__0__PORT - label: "SFTPGO_WEBDAVD__BINDINGS__0__PORT" - schema: - type: string - default: "10080" - - variable: SFTPGO_FTPD__BINDINGS__0__DEBUG - label: "SFTPGO_FTPD__BINDINGS__0__DEBUG" - description: "0 = false, 1 = true" - schema: - type: string - default: "0" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 2221 - required: true - - variable: ftpport - label: 'ftpport service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ftpport - label: "ftpport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 2121 - required: true - - variable: sftpport - label: 'sftpport service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: sftpport - label: "sftpport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 2022 - required: true - - variable: passiveports - label: 'passiveports service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: passiveports - label: "passiveports Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50000 - required: true - - variable: webdavport - label: 'webdavport service' - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: webdavport - label: "webdavport Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10080 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: backupdirectory - label: "backupdirectory Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: configpath - label: "configpath Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: shareaccess - label: "shareaccess Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/shaarli/2.0.8/CHANGELOG.md b/incubator/shaarli/2.0.8/CHANGELOG.md deleted file mode 100644 index 8fa5c5cbf83..00000000000 --- a/incubator/shaarli/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [shaarli-2.0.8](https://github.com/truecharts/charts/compare/shaarli-2.0.7...shaarli-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [shaarli-2.0.7](https://github.com/truecharts/charts/compare/shaarli-2.0.6...shaarli-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [shaarli-2.0.6](https://github.com/truecharts/charts/compare/shaarli-2.0.5...shaarli-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [shaarli-2.0.5](https://github.com/truecharts/charts/compare/shaarli-2.0.4...shaarli-2.0.5) (2022-12-24) - -### Chore - -- pin dependencies ([#5688](https://github.com/truecharts/charts/issues/5688)) - - - - -## [shaarli-2.0.4](https://github.com/truecharts/charts/compare/shaarli-2.0.3...shaarli-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [shaarli-2.0.3](https://github.com/truecharts/charts/compare/shaarli-2.0.2...shaarli-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) - - - - -## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) - - - - -## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) - - - - -## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) - - - - -## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) - - - - -## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) - - - - -## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) - - - - -## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) - - - diff --git a/incubator/shaarli/2.0.8/Chart.yaml b/incubator/shaarli/2.0.8/Chart.yaml deleted file mode 100644 index 0673d33ac54..00000000000 --- a/incubator/shaarli/2.0.8/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity -apiVersion: v2 -appVersion: "master" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: The personal, minimalist, super-fast, database free, bookmarking service. -home: https://truecharts.org/charts/incubator/shaarli -icon: https://truecharts.org/img/hotlink-ok/chart-icons/shaarli.png -keywords: - - shaarli - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: shaarli -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/shaarli - - https://github.com/shaarli/Shaarli - - https://hub.docker.com/r/shaarli/shaarli/ -type: application -version: 2.0.8 diff --git a/incubator/shaarli/2.0.8/app-changelog.md b/incubator/shaarli/2.0.8/app-changelog.md deleted file mode 100644 index e9f141131d3..00000000000 --- a/incubator/shaarli/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [shaarli-2.0.8](https://github.com/truecharts/charts/compare/shaarli-2.0.7...shaarli-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/shaarli/2.0.8/app-readme.md b/incubator/shaarli/2.0.8/app-readme.md deleted file mode 100644 index d0300fead9d..00000000000 --- a/incubator/shaarli/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -The personal, minimalist, super-fast, database free, bookmarking service. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/shaarli](https://truecharts.org/charts/incubator/shaarli) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/shaarli/2.0.8/questions.yaml b/incubator/shaarli/2.0.8/questions.yaml deleted file mode 100644 index f81ced5e478..00000000000 --- a/incubator/shaarli/2.0.8/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: cache - label: "cache Storage" - description: "Cache" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: data - label: "data Storage" - description: "Data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/shaarli/2.0.9/CHANGELOG.md b/incubator/shaarli/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..99161a1f2fd --- /dev/null +++ b/incubator/shaarli/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [shaarli-2.0.9](https://github.com/truecharts/charts/compare/shaarli-2.0.8...shaarli-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [shaarli-2.0.8](https://github.com/truecharts/charts/compare/shaarli-2.0.7...shaarli-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [shaarli-2.0.7](https://github.com/truecharts/charts/compare/shaarli-2.0.6...shaarli-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [shaarli-2.0.6](https://github.com/truecharts/charts/compare/shaarli-2.0.5...shaarli-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [shaarli-2.0.5](https://github.com/truecharts/charts/compare/shaarli-2.0.4...shaarli-2.0.5) (2022-12-24) + +### Chore + +- pin dependencies ([#5688](https://github.com/truecharts/charts/issues/5688)) + + + + +## [shaarli-2.0.4](https://github.com/truecharts/charts/compare/shaarli-2.0.3...shaarli-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [shaarli-2.0.3](https://github.com/truecharts/charts/compare/shaarli-2.0.2...shaarli-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) + + + + +## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) + + + + +## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) + + + + +## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) + + + + +## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) + + + + +## [shaarli-2.0.2](https://github.com/truecharts/charts/compare/shaarli-2.0.1...shaarli-2.0.2) (2022-11-30) + + + + diff --git a/incubator/shaarli/2.0.9/Chart.yaml b/incubator/shaarli/2.0.9/Chart.yaml new file mode 100644 index 00000000000..c146816d2d3 --- /dev/null +++ b/incubator/shaarli/2.0.9/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity +apiVersion: v2 +appVersion: "master" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: The personal, minimalist, super-fast, database free, bookmarking service. +home: https://truecharts.org/charts/incubator/shaarli +icon: https://truecharts.org/img/hotlink-ok/chart-icons/shaarli.png +keywords: + - shaarli + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: shaarli +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/shaarli + - https://hub.docker.com/shaarli/shaarli + - https://github.com/shaarli/Shaarli +type: application +version: 2.0.9 diff --git a/incubator/shoko-server/3.0.0/README.md b/incubator/shaarli/2.0.9/README.md similarity index 100% rename from incubator/shoko-server/3.0.0/README.md rename to incubator/shaarli/2.0.9/README.md diff --git a/incubator/shaarli/2.0.9/app-changelog.md b/incubator/shaarli/2.0.9/app-changelog.md new file mode 100644 index 00000000000..1d1b3348625 --- /dev/null +++ b/incubator/shaarli/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [shaarli-2.0.9](https://github.com/truecharts/charts/compare/shaarli-2.0.8...shaarli-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/shaarli/2.0.9/app-readme.md b/incubator/shaarli/2.0.9/app-readme.md new file mode 100644 index 00000000000..102d6a77f1e --- /dev/null +++ b/incubator/shaarli/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +The personal, minimalist, super-fast, database free, bookmarking service. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/shaarli](https://truecharts.org/charts/incubator/shaarli) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/sheetable/3.0.19/charts/common-11.1.2.tgz b/incubator/shaarli/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/sheetable/3.0.19/charts/common-11.1.2.tgz rename to incubator/shaarli/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/shaarli/2.0.8/ix_values.yaml b/incubator/shaarli/2.0.9/ix_values.yaml similarity index 100% rename from incubator/shaarli/2.0.8/ix_values.yaml rename to incubator/shaarli/2.0.9/ix_values.yaml diff --git a/incubator/shaarli/2.0.9/questions.yaml b/incubator/shaarli/2.0.9/questions.yaml new file mode 100644 index 00000000000..32b9aa7dbf3 --- /dev/null +++ b/incubator/shaarli/2.0.9/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: cache + label: "cache Storage" + description: "Cache" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: "data Storage" + description: "Data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/shaarli/2.0.8/templates/common.yaml b/incubator/shaarli/2.0.9/templates/common.yaml similarity index 100% rename from incubator/shaarli/2.0.8/templates/common.yaml rename to incubator/shaarli/2.0.9/templates/common.yaml diff --git a/incubator/sheetable/3.0.19/values.yaml b/incubator/shaarli/2.0.9/values.yaml similarity index 100% rename from incubator/sheetable/3.0.19/values.yaml rename to incubator/shaarli/2.0.9/values.yaml diff --git a/incubator/sheetable/3.0.19/CHANGELOG.md b/incubator/sheetable/3.0.19/CHANGELOG.md deleted file mode 100644 index 8a562070238..00000000000 --- a/incubator/sheetable/3.0.19/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [sheetable-3.0.19](https://github.com/truecharts/charts/compare/sheetable-3.0.18...sheetable-3.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [sheetable-3.0.18](https://github.com/truecharts/charts/compare/sheetable-3.0.17...sheetable-3.0.18) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [sheetable-3.0.17](https://github.com/truecharts/charts/compare/sheetable-3.0.16...sheetable-3.0.17) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [sheetable-3.0.16](https://github.com/truecharts/charts/compare/sheetable-3.0.15...sheetable-3.0.16) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [sheetable-3.0.15](https://github.com/truecharts/charts/compare/sheetable-3.0.14...sheetable-3.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [sheetable-3.0.14](https://github.com/truecharts/charts/compare/sheetable-3.0.13...sheetable-3.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [sheetable-3.0.13](https://github.com/truecharts/charts/compare/sheetable-3.0.12...sheetable-3.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [sheetable-3.0.12](https://github.com/truecharts/charts/compare/sheetable-3.0.11...sheetable-3.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [sheetable-3.0.11](https://github.com/truecharts/charts/compare/sheetable-3.0.10...sheetable-3.0.11) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - - - -## [sheetable-3.0.10](https://github.com/truecharts/charts/compare/sheetable-3.0.9...sheetable-3.0.10) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [sheetable-3.0.9](https://github.com/truecharts/charts/compare/sheetable-3.0.8...sheetable-3.0.9) (2022-12-05) - -### Chore diff --git a/incubator/sheetable/3.0.19/Chart.yaml b/incubator/sheetable/3.0.19/Chart.yaml deleted file mode 100644 index 6356512587b..00000000000 --- a/incubator/sheetable/3.0.19/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -appVersion: "0.8" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -description: SheetAble is an easy to use music sheet organiser for all the music enthusiasts out there. -home: https://truecharts.org/charts/incubator/sheetable -icon: https://truecharts.org/img/hotlink-ok/chart-icons/sheetable.png -keywords: - - sheetable -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: sheetable -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/sheetable - - https://sheetable.net/docs - - https://github.com/SheetAble -version: 3.0.19 -annotations: - truecharts.org/catagories: | - - music - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/sheetable/3.0.19/app-changelog.md b/incubator/sheetable/3.0.19/app-changelog.md deleted file mode 100644 index aaf50427bd4..00000000000 --- a/incubator/sheetable/3.0.19/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [sheetable-3.0.19](https://github.com/truecharts/charts/compare/sheetable-3.0.18...sheetable-3.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/incubator/sheetable/3.0.20/CHANGELOG.md b/incubator/sheetable/3.0.20/CHANGELOG.md new file mode 100644 index 00000000000..024d747c0a0 --- /dev/null +++ b/incubator/sheetable/3.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [sheetable-3.0.20](https://github.com/truecharts/charts/compare/sheetable-3.0.19...sheetable-3.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [sheetable-3.0.19](https://github.com/truecharts/charts/compare/sheetable-3.0.18...sheetable-3.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [sheetable-3.0.18](https://github.com/truecharts/charts/compare/sheetable-3.0.17...sheetable-3.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [sheetable-3.0.17](https://github.com/truecharts/charts/compare/sheetable-3.0.16...sheetable-3.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [sheetable-3.0.16](https://github.com/truecharts/charts/compare/sheetable-3.0.15...sheetable-3.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [sheetable-3.0.15](https://github.com/truecharts/charts/compare/sheetable-3.0.14...sheetable-3.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [sheetable-3.0.14](https://github.com/truecharts/charts/compare/sheetable-3.0.13...sheetable-3.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [sheetable-3.0.13](https://github.com/truecharts/charts/compare/sheetable-3.0.12...sheetable-3.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [sheetable-3.0.12](https://github.com/truecharts/charts/compare/sheetable-3.0.11...sheetable-3.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [sheetable-3.0.11](https://github.com/truecharts/charts/compare/sheetable-3.0.10...sheetable-3.0.11) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [sheetable-3.0.10](https://github.com/truecharts/charts/compare/sheetable-3.0.9...sheetable-3.0.10) (2022-12-13) + +### Chore diff --git a/incubator/sheetable/3.0.20/Chart.yaml b/incubator/sheetable/3.0.20/Chart.yaml new file mode 100644 index 00000000000..9741dde8281 --- /dev/null +++ b/incubator/sheetable/3.0.20/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "0.8" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +description: SheetAble is an easy to use music sheet organiser for all the music enthusiasts out there. +home: https://truecharts.org/charts/incubator/sheetable +icon: https://truecharts.org/img/hotlink-ok/chart-icons/sheetable.png +keywords: + - sheetable +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: sheetable +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/sheetable + - https://hub.docker.com/vallezw/sheetable + - https://sheetable.net/docs + - https://github.com/SheetAble +version: 3.0.20 +annotations: + truecharts.org/catagories: | + - music + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/sinusbot/2.0.7/README.md b/incubator/sheetable/3.0.20/README.md similarity index 100% rename from incubator/sinusbot/2.0.7/README.md rename to incubator/sheetable/3.0.20/README.md diff --git a/incubator/sheetable/3.0.20/app-changelog.md b/incubator/sheetable/3.0.20/app-changelog.md new file mode 100644 index 00000000000..fc76aa4e52e --- /dev/null +++ b/incubator/sheetable/3.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [sheetable-3.0.20](https://github.com/truecharts/charts/compare/sheetable-3.0.19...sheetable-3.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/sheetable/3.0.19/app-readme.md b/incubator/sheetable/3.0.20/app-readme.md similarity index 100% rename from incubator/sheetable/3.0.19/app-readme.md rename to incubator/sheetable/3.0.20/app-readme.md diff --git a/incubator/shoko-server/3.0.0/charts/common-11.1.2.tgz b/incubator/sheetable/3.0.20/charts/common-11.1.2.tgz similarity index 100% rename from incubator/shoko-server/3.0.0/charts/common-11.1.2.tgz rename to incubator/sheetable/3.0.20/charts/common-11.1.2.tgz diff --git a/incubator/sheetable/3.0.19/charts/postgresql-11.0.22.tgz b/incubator/sheetable/3.0.20/charts/postgresql-11.0.22.tgz similarity index 100% rename from incubator/sheetable/3.0.19/charts/postgresql-11.0.22.tgz rename to incubator/sheetable/3.0.20/charts/postgresql-11.0.22.tgz diff --git a/incubator/sheetable/3.0.19/ix_values.yaml b/incubator/sheetable/3.0.20/ix_values.yaml similarity index 100% rename from incubator/sheetable/3.0.19/ix_values.yaml rename to incubator/sheetable/3.0.20/ix_values.yaml diff --git a/incubator/sheetable/3.0.19/questions.yaml b/incubator/sheetable/3.0.20/questions.yaml similarity index 100% rename from incubator/sheetable/3.0.19/questions.yaml rename to incubator/sheetable/3.0.20/questions.yaml diff --git a/incubator/sheetable/3.0.19/templates/_secrets.tpl b/incubator/sheetable/3.0.20/templates/_secrets.tpl similarity index 100% rename from incubator/sheetable/3.0.19/templates/_secrets.tpl rename to incubator/sheetable/3.0.20/templates/_secrets.tpl diff --git a/incubator/sheetable/3.0.19/templates/common.yaml b/incubator/sheetable/3.0.20/templates/common.yaml similarity index 100% rename from incubator/sheetable/3.0.19/templates/common.yaml rename to incubator/sheetable/3.0.20/templates/common.yaml diff --git a/incubator/shoko-server/3.0.0/values.yaml b/incubator/sheetable/3.0.20/values.yaml similarity index 100% rename from incubator/shoko-server/3.0.0/values.yaml rename to incubator/sheetable/3.0.20/values.yaml diff --git a/incubator/shoko-server/3.0.0/CHANGELOG.md b/incubator/shoko-server/3.0.0/CHANGELOG.md deleted file mode 100644 index efe0ce8daea..00000000000 --- a/incubator/shoko-server/3.0.0/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [shoko-server-3.0.0](https://github.com/truecharts/charts/compare/shoko-server-2.0.10...shoko-server-3.0.0) (2023-01-30) - - - - -## [shoko-server-2.0.10](https://github.com/truecharts/charts/compare/shoko-server-2.0.9...shoko-server-2.0.10) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/shoko-server to vdaily - - - - -## [shoko-server-2.0.9](https://github.com/truecharts/charts/compare/shoko-server-2.0.8...shoko-server-2.0.9) (2022-12-28) - -### Chore - -- update container image tccr.io/truecharts/shoko-server to vdaily - - - - -## [shoko-server-2.0.8](https://github.com/truecharts/charts/compare/shoko-server-2.0.7...shoko-server-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [shoko-server-2.0.7](https://github.com/truecharts/charts/compare/shoko-server-2.0.6...shoko-server-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [shoko-server-2.0.6](https://github.com/truecharts/charts/compare/shoko-server-2.0.5...shoko-server-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [shoko-server-2.0.5](https://github.com/truecharts/charts/compare/shoko-server-2.0.4...shoko-server-2.0.5) (2022-12-24) - -### Chore - -- pin dependencies ([#5688](https://github.com/truecharts/charts/issues/5688)) - - - - -## [shoko-server-2.0.4](https://github.com/truecharts/charts/compare/shoko-server-2.0.3...shoko-server-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [shoko-server-2.0.3](https://github.com/truecharts/charts/compare/shoko-server-2.0.2...shoko-server-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [shoko-server-2.0.2](https://github.com/truecharts/charts/compare/shoko-server-2.0.1...shoko-server-2.0.2) (2022-11-30) - - - - -## [shoko-server-2.0.2](https://github.com/truecharts/charts/compare/shoko-server-2.0.1...shoko-server-2.0.2) (2022-11-30) - - - - -## [shoko-server-2.0.2](https://github.com/truecharts/charts/compare/shoko-server-2.0.1...shoko-server-2.0.2) (2022-11-30) - - - - -## [shoko-server-2.0.2](https://github.com/truecharts/charts/compare/shoko-server-2.0.1...shoko-server-2.0.2) (2022-11-30) diff --git a/incubator/shoko-server/3.0.0/Chart.yaml b/incubator/shoko-server/3.0.0/Chart.yaml deleted file mode 100644 index c960e267122..00000000000 --- a/incubator/shoko-server/3.0.0/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -appVersion: "4.1.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Shoko is an anime cataloging program designed to automate the cataloging of your collection. -home: https://truecharts.org/charts/incubator/shoko-server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/shoko-server.png -keywords: - - shoko-server - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: shoko-server -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/shoko-server - - https://github.com/ShokoAnime/ShokoServer - - https://hub.docker.com/r/shokoanime/server/ -type: application -version: 3.0.0 -annotations: - truecharts.org/catagories: | - - media - - Tools-Utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/shoko-server/3.0.0/app-changelog.md b/incubator/shoko-server/3.0.0/app-changelog.md deleted file mode 100644 index bd164e27aae..00000000000 --- a/incubator/shoko-server/3.0.0/app-changelog.md +++ /dev/null @@ -1,4 +0,0 @@ - - -## [shoko-server-3.0.0](https://github.com/truecharts/charts/compare/shoko-server-2.0.10...shoko-server-3.0.0) (2023-01-30) - diff --git a/incubator/shoko-server/3.0.1/CHANGELOG.md b/incubator/shoko-server/3.0.1/CHANGELOG.md new file mode 100644 index 00000000000..fb4713a1d57 --- /dev/null +++ b/incubator/shoko-server/3.0.1/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [shoko-server-3.0.1](https://github.com/truecharts/charts/compare/shoko-server-3.0.0...shoko-server-3.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [shoko-server-3.0.0](https://github.com/truecharts/charts/compare/shoko-server-2.0.10...shoko-server-3.0.0) (2023-01-30) + + + + +## [shoko-server-2.0.10](https://github.com/truecharts/charts/compare/shoko-server-2.0.9...shoko-server-2.0.10) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/shoko-server to vdaily + + + + +## [shoko-server-2.0.9](https://github.com/truecharts/charts/compare/shoko-server-2.0.8...shoko-server-2.0.9) (2022-12-28) + +### Chore + +- update container image tccr.io/truecharts/shoko-server to vdaily + + + + +## [shoko-server-2.0.8](https://github.com/truecharts/charts/compare/shoko-server-2.0.7...shoko-server-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [shoko-server-2.0.7](https://github.com/truecharts/charts/compare/shoko-server-2.0.6...shoko-server-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [shoko-server-2.0.6](https://github.com/truecharts/charts/compare/shoko-server-2.0.5...shoko-server-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [shoko-server-2.0.5](https://github.com/truecharts/charts/compare/shoko-server-2.0.4...shoko-server-2.0.5) (2022-12-24) + +### Chore + +- pin dependencies ([#5688](https://github.com/truecharts/charts/issues/5688)) + + + + +## [shoko-server-2.0.4](https://github.com/truecharts/charts/compare/shoko-server-2.0.3...shoko-server-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [shoko-server-2.0.3](https://github.com/truecharts/charts/compare/shoko-server-2.0.2...shoko-server-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [shoko-server-2.0.2](https://github.com/truecharts/charts/compare/shoko-server-2.0.1...shoko-server-2.0.2) (2022-11-30) + + + + +## [shoko-server-2.0.2](https://github.com/truecharts/charts/compare/shoko-server-2.0.1...shoko-server-2.0.2) (2022-11-30) + diff --git a/incubator/shoko-server/3.0.1/Chart.yaml b/incubator/shoko-server/3.0.1/Chart.yaml new file mode 100644 index 00000000000..4affdec1bb4 --- /dev/null +++ b/incubator/shoko-server/3.0.1/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "4.1.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Shoko is an anime cataloging program designed to automate the cataloging of your collection. +home: https://truecharts.org/charts/incubator/shoko-server +icon: https://truecharts.org/img/hotlink-ok/chart-icons/shoko-server.png +keywords: + - shoko-server + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: shoko-server +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/shoko-server + - https://hub.docker.com/shokoanime/server + - https://github.com/ShokoAnime/ShokoServer +type: application +version: 3.0.1 +annotations: + truecharts.org/catagories: | + - media + - Tools-Utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/songkong/2.0.12/README.md b/incubator/shoko-server/3.0.1/README.md similarity index 100% rename from incubator/songkong/2.0.12/README.md rename to incubator/shoko-server/3.0.1/README.md diff --git a/incubator/shoko-server/3.0.1/app-changelog.md b/incubator/shoko-server/3.0.1/app-changelog.md new file mode 100644 index 00000000000..e904326b3ad --- /dev/null +++ b/incubator/shoko-server/3.0.1/app-changelog.md @@ -0,0 +1,9 @@ + + +## [shoko-server-3.0.1](https://github.com/truecharts/charts/compare/shoko-server-3.0.0...shoko-server-3.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/shoko-server/3.0.0/app-readme.md b/incubator/shoko-server/3.0.1/app-readme.md similarity index 100% rename from incubator/shoko-server/3.0.0/app-readme.md rename to incubator/shoko-server/3.0.1/app-readme.md diff --git a/incubator/sinusbot/2.0.7/charts/common-11.1.2.tgz b/incubator/shoko-server/3.0.1/charts/common-11.1.2.tgz similarity index 100% rename from incubator/sinusbot/2.0.7/charts/common-11.1.2.tgz rename to incubator/shoko-server/3.0.1/charts/common-11.1.2.tgz diff --git a/incubator/shoko-server/3.0.0/ix_values.yaml b/incubator/shoko-server/3.0.1/ix_values.yaml similarity index 100% rename from incubator/shoko-server/3.0.0/ix_values.yaml rename to incubator/shoko-server/3.0.1/ix_values.yaml diff --git a/incubator/shoko-server/3.0.0/questions.yaml b/incubator/shoko-server/3.0.1/questions.yaml similarity index 100% rename from incubator/shoko-server/3.0.0/questions.yaml rename to incubator/shoko-server/3.0.1/questions.yaml diff --git a/incubator/shoko-server/3.0.0/templates/common.yaml b/incubator/shoko-server/3.0.1/templates/common.yaml similarity index 100% rename from incubator/shoko-server/3.0.0/templates/common.yaml rename to incubator/shoko-server/3.0.1/templates/common.yaml diff --git a/incubator/sinusbot/2.0.7/values.yaml b/incubator/shoko-server/3.0.1/values.yaml similarity index 100% rename from incubator/sinusbot/2.0.7/values.yaml rename to incubator/shoko-server/3.0.1/values.yaml diff --git a/incubator/sinusbot/2.0.7/CHANGELOG.md b/incubator/sinusbot/2.0.7/CHANGELOG.md deleted file mode 100644 index 4b3d51595f0..00000000000 --- a/incubator/sinusbot/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [sinusbot-2.0.7](https://github.com/truecharts/charts/compare/sinusbot-2.0.6...sinusbot-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [sinusbot-2.0.6](https://github.com/truecharts/charts/compare/sinusbot-2.0.5...sinusbot-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [sinusbot-2.0.5](https://github.com/truecharts/charts/compare/sinusbot-2.0.4...sinusbot-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [sinusbot-2.0.4](https://github.com/truecharts/charts/compare/sinusbot-2.0.3...sinusbot-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [sinusbot-2.0.3](https://github.com/truecharts/charts/compare/sinusbot-2.0.2...sinusbot-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - - - -## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) - - diff --git a/incubator/sinusbot/2.0.7/Chart.yaml b/incubator/sinusbot/2.0.7/Chart.yaml deleted file mode 100644 index 870afd93060..00000000000 --- a/incubator/sinusbot/2.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - - Tools-Utilities - - MediaServer-Music -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "SinusBot is a MusicBot that will let you listen to music together with your friends on either TeamSpeak 3 or Discord." -home: https://truecharts.org/charts/incubator/sinusbot -icon: https://truecharts.org/img/hotlink-ok/chart-icons/sinusbot.png -keywords: - - sinusbot - - Productivity - - Tools-Utilities - - MediaServer-Music -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: sinusbot -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/sinusbot - - https://forum.sinusbot.com - - https://hub.docker.com/r/sinusbot/docker -type: application -version: 2.0.7 diff --git a/incubator/sinusbot/2.0.7/app-changelog.md b/incubator/sinusbot/2.0.7/app-changelog.md deleted file mode 100644 index a22a218dd5a..00000000000 --- a/incubator/sinusbot/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [sinusbot-2.0.7](https://github.com/truecharts/charts/compare/sinusbot-2.0.6...sinusbot-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/sinusbot/2.0.7/app-readme.md b/incubator/sinusbot/2.0.7/app-readme.md deleted file mode 100644 index 765bafbbe47..00000000000 --- a/incubator/sinusbot/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -SinusBot is a MusicBot that will let you listen to music together with your friends on either TeamSpeak 3 or Discord. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/sinusbot](https://truecharts.org/charts/incubator/sinusbot) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/sinusbot/2.0.7/questions.yaml b/incubator/sinusbot/2.0.7/questions.yaml deleted file mode 100644 index 52aa26a371c..00000000000 --- a/incubator/sinusbot/2.0.7/questions.yaml +++ /dev/null @@ -1,1911 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: OVERRIDE_PASSWORD - label: "OVERRIDE_PASSWORD" - schema: - type: string - default: "foobar" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8087 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: scriptspath - label: "scriptspath Storage" - description: "Data Path for the Sinusbot Scripts" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: data - label: "data Storage" - description: "Sinusbot Data Path. Where Sinusbot can Store Data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/sinusbot/2.0.8/CHANGELOG.md b/incubator/sinusbot/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..9500ba8063c --- /dev/null +++ b/incubator/sinusbot/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [sinusbot-2.0.8](https://github.com/truecharts/charts/compare/sinusbot-2.0.7...sinusbot-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [sinusbot-2.0.7](https://github.com/truecharts/charts/compare/sinusbot-2.0.6...sinusbot-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [sinusbot-2.0.6](https://github.com/truecharts/charts/compare/sinusbot-2.0.5...sinusbot-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [sinusbot-2.0.5](https://github.com/truecharts/charts/compare/sinusbot-2.0.4...sinusbot-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [sinusbot-2.0.4](https://github.com/truecharts/charts/compare/sinusbot-2.0.3...sinusbot-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [sinusbot-2.0.3](https://github.com/truecharts/charts/compare/sinusbot-2.0.2...sinusbot-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) + + + + +## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) + + + + +## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) + + + + +## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) + + + + +## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) + + + + +## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) + + + + +## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) + + + + +## [sinusbot-2.0.2](https://github.com/truecharts/charts/compare/sinusbot-2.0.1...sinusbot-2.0.2) (2022-11-30) + + + diff --git a/incubator/sinusbot/2.0.8/Chart.yaml b/incubator/sinusbot/2.0.8/Chart.yaml new file mode 100644 index 00000000000..5a9abba40ae --- /dev/null +++ b/incubator/sinusbot/2.0.8/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + - Tools-Utilities + - MediaServer-Music +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "SinusBot is a MusicBot that will let you listen to music together with your friends on either TeamSpeak 3 or Discord." +home: https://truecharts.org/charts/incubator/sinusbot +icon: https://truecharts.org/img/hotlink-ok/chart-icons/sinusbot.png +keywords: + - sinusbot + - Productivity + - Tools-Utilities + - MediaServer-Music +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: sinusbot +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/sinusbot + - https://hub.docker.com/sinusbot/docker + - https://forum.sinusbot.com +type: application +version: 2.0.8 diff --git a/incubator/sourcegraph/2.0.12/README.md b/incubator/sinusbot/2.0.8/README.md similarity index 100% rename from incubator/sourcegraph/2.0.12/README.md rename to incubator/sinusbot/2.0.8/README.md diff --git a/incubator/sinusbot/2.0.8/app-changelog.md b/incubator/sinusbot/2.0.8/app-changelog.md new file mode 100644 index 00000000000..7324fa3e414 --- /dev/null +++ b/incubator/sinusbot/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [sinusbot-2.0.8](https://github.com/truecharts/charts/compare/sinusbot-2.0.7...sinusbot-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/sinusbot/2.0.8/app-readme.md b/incubator/sinusbot/2.0.8/app-readme.md new file mode 100644 index 00000000000..0563fab565c --- /dev/null +++ b/incubator/sinusbot/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +SinusBot is a MusicBot that will let you listen to music together with your friends on either TeamSpeak 3 or Discord. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/sinusbot](https://truecharts.org/charts/incubator/sinusbot) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/songkong/2.0.12/charts/common-11.1.2.tgz b/incubator/sinusbot/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/songkong/2.0.12/charts/common-11.1.2.tgz rename to incubator/sinusbot/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/sinusbot/2.0.7/ix_values.yaml b/incubator/sinusbot/2.0.8/ix_values.yaml similarity index 100% rename from incubator/sinusbot/2.0.7/ix_values.yaml rename to incubator/sinusbot/2.0.8/ix_values.yaml diff --git a/incubator/sinusbot/2.0.8/questions.yaml b/incubator/sinusbot/2.0.8/questions.yaml new file mode 100644 index 00000000000..9c5a9e66a61 --- /dev/null +++ b/incubator/sinusbot/2.0.8/questions.yaml @@ -0,0 +1,1952 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: OVERRIDE_PASSWORD + label: "OVERRIDE_PASSWORD" + schema: + type: string + default: "foobar" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8087 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: scriptspath + label: "scriptspath Storage" + description: "Data Path for the Sinusbot Scripts" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: "data Storage" + description: "Sinusbot Data Path. Where Sinusbot can Store Data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/sinusbot/2.0.7/templates/common.yaml b/incubator/sinusbot/2.0.8/templates/common.yaml similarity index 100% rename from incubator/sinusbot/2.0.7/templates/common.yaml rename to incubator/sinusbot/2.0.8/templates/common.yaml diff --git a/incubator/songkong/2.0.12/values.yaml b/incubator/sinusbot/2.0.8/values.yaml similarity index 100% rename from incubator/songkong/2.0.12/values.yaml rename to incubator/sinusbot/2.0.8/values.yaml diff --git a/incubator/songkong/2.0.12/CHANGELOG.md b/incubator/songkong/2.0.12/CHANGELOG.md deleted file mode 100644 index 00bb7d7693b..00000000000 --- a/incubator/songkong/2.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [songkong-2.0.12](https://github.com/truecharts/charts/compare/songkong-2.0.11...songkong-2.0.12) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/songkong to latest - - - - -## [songkong-2.0.11](https://github.com/truecharts/charts/compare/songkong-2.0.10...songkong-2.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [songkong-2.0.10](https://github.com/truecharts/charts/compare/songkong-2.0.9...songkong-2.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [songkong-2.0.9](https://github.com/truecharts/charts/compare/songkong-2.0.8...songkong-2.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [songkong-2.0.8](https://github.com/truecharts/charts/compare/songkong-2.0.7...songkong-2.0.8) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [songkong-2.0.7](https://github.com/truecharts/charts/compare/songkong-2.0.6...songkong-2.0.7) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [songkong-2.0.6](https://github.com/truecharts/charts/compare/songkong-2.0.5...songkong-2.0.6) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/songkong to latest - - - - -## [songkong-2.0.5](https://github.com/truecharts/charts/compare/songkong-2.0.3...songkong-2.0.5) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/songkong to latest - - - - -## [songkong-2.0.5](https://github.com/truecharts/charts/compare/songkong-2.0.3...songkong-2.0.5) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/songkong to latest - - - - -## [songkong-2.0.5](https://github.com/truecharts/charts/compare/songkong-2.0.3...songkong-2.0.5) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/songkong to latest - - - - -## [songkong-2.0.5](https://github.com/truecharts/charts/compare/songkong-2.0.3...songkong-2.0.5) (2022-11-30) - -### Chore diff --git a/incubator/songkong/2.0.12/Chart.yaml b/incubator/songkong/2.0.12/Chart.yaml deleted file mode 100644 index 9da230400c0..00000000000 --- a/incubator/songkong/2.0.12/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Music -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Official SongKong Chart repository, Identify your songs and add metadata and artwork automatically -home: https://truecharts.org/charts/incubator/songkong -icon: https://truecharts.org/img/hotlink-ok/chart-icons/songkong.png -keywords: - - songkong - - MediaApp-Music -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: songkong -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/songkong - - http://www.jthink.net/songkong - - https://hub.docker.com/r/songkong/songkong/ -type: application -version: 2.0.12 diff --git a/incubator/songkong/2.0.12/app-changelog.md b/incubator/songkong/2.0.12/app-changelog.md deleted file mode 100644 index 2ad19c54a3c..00000000000 --- a/incubator/songkong/2.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [songkong-2.0.12](https://github.com/truecharts/charts/compare/songkong-2.0.11...songkong-2.0.12) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/songkong to latest - - \ No newline at end of file diff --git a/incubator/songkong/2.0.12/app-readme.md b/incubator/songkong/2.0.12/app-readme.md deleted file mode 100644 index 118ecf9f054..00000000000 --- a/incubator/songkong/2.0.12/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Official SongKong Chart repository, Identify your songs and add metadata and artwork automatically - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/songkong](https://truecharts.org/charts/incubator/songkong) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/songkong/2.0.12/questions.yaml b/incubator/songkong/2.0.12/questions.yaml deleted file mode 100644 index e7ea24c47f6..00000000000 --- a/incubator/songkong/2.0.12/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 4567 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: music - label: "music Storage" - description: "Container Path music" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: songkongconfig - label: "songkongconfig Storage" - description: "Container Path songkong" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/songkong/2.0.13/CHANGELOG.md b/incubator/songkong/2.0.13/CHANGELOG.md new file mode 100644 index 00000000000..cee375df946 --- /dev/null +++ b/incubator/songkong/2.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [songkong-2.0.13](https://github.com/truecharts/charts/compare/songkong-2.0.12...songkong-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [songkong-2.0.12](https://github.com/truecharts/charts/compare/songkong-2.0.11...songkong-2.0.12) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/songkong to latest + + + + +## [songkong-2.0.11](https://github.com/truecharts/charts/compare/songkong-2.0.10...songkong-2.0.11) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [songkong-2.0.10](https://github.com/truecharts/charts/compare/songkong-2.0.9...songkong-2.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [songkong-2.0.9](https://github.com/truecharts/charts/compare/songkong-2.0.8...songkong-2.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [songkong-2.0.8](https://github.com/truecharts/charts/compare/songkong-2.0.7...songkong-2.0.8) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [songkong-2.0.7](https://github.com/truecharts/charts/compare/songkong-2.0.6...songkong-2.0.7) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [songkong-2.0.6](https://github.com/truecharts/charts/compare/songkong-2.0.5...songkong-2.0.6) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/songkong to latest + + + + +## [songkong-2.0.5](https://github.com/truecharts/charts/compare/songkong-2.0.3...songkong-2.0.5) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/songkong to latest + + + + +## [songkong-2.0.5](https://github.com/truecharts/charts/compare/songkong-2.0.3...songkong-2.0.5) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/songkong to latest + + + + +## [songkong-2.0.5](https://github.com/truecharts/charts/compare/songkong-2.0.3...songkong-2.0.5) (2022-11-30) + +### Chore diff --git a/incubator/songkong/2.0.13/Chart.yaml b/incubator/songkong/2.0.13/Chart.yaml new file mode 100644 index 00000000000..4442231616e --- /dev/null +++ b/incubator/songkong/2.0.13/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Music +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Official SongKong Chart repository, Identify your songs and add metadata and artwork automatically +home: https://truecharts.org/charts/incubator/songkong +icon: https://truecharts.org/img/hotlink-ok/chart-icons/songkong.png +keywords: + - songkong + - MediaApp-Music +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: songkong +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/songkong + - https://hub.docker.com/songkong/songkong + - http://www.jthink.net/songkong +type: application +version: 2.0.13 diff --git a/incubator/spaceengineers/2.0.8/README.md b/incubator/songkong/2.0.13/README.md similarity index 100% rename from incubator/spaceengineers/2.0.8/README.md rename to incubator/songkong/2.0.13/README.md diff --git a/incubator/songkong/2.0.13/app-changelog.md b/incubator/songkong/2.0.13/app-changelog.md new file mode 100644 index 00000000000..68a08e76ea8 --- /dev/null +++ b/incubator/songkong/2.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [songkong-2.0.13](https://github.com/truecharts/charts/compare/songkong-2.0.12...songkong-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/songkong/2.0.13/app-readme.md b/incubator/songkong/2.0.13/app-readme.md new file mode 100644 index 00000000000..534b767a592 --- /dev/null +++ b/incubator/songkong/2.0.13/app-readme.md @@ -0,0 +1,8 @@ +Official SongKong Chart repository, Identify your songs and add metadata and artwork automatically + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/songkong](https://truecharts.org/charts/incubator/songkong) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/sourcegraph/2.0.12/charts/common-11.1.2.tgz b/incubator/songkong/2.0.13/charts/common-11.1.2.tgz similarity index 100% rename from incubator/sourcegraph/2.0.12/charts/common-11.1.2.tgz rename to incubator/songkong/2.0.13/charts/common-11.1.2.tgz diff --git a/incubator/songkong/2.0.12/ix_values.yaml b/incubator/songkong/2.0.13/ix_values.yaml similarity index 100% rename from incubator/songkong/2.0.12/ix_values.yaml rename to incubator/songkong/2.0.13/ix_values.yaml diff --git a/incubator/songkong/2.0.13/questions.yaml b/incubator/songkong/2.0.13/questions.yaml new file mode 100644 index 00000000000..30071d06a6e --- /dev/null +++ b/incubator/songkong/2.0.13/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 4567 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: music + label: "music Storage" + description: "Container Path music" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: songkongconfig + label: "songkongconfig Storage" + description: "Container Path songkong" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/songkong/2.0.12/templates/common.yaml b/incubator/songkong/2.0.13/templates/common.yaml similarity index 100% rename from incubator/songkong/2.0.12/templates/common.yaml rename to incubator/songkong/2.0.13/templates/common.yaml diff --git a/incubator/sourcegraph/2.0.12/values.yaml b/incubator/songkong/2.0.13/values.yaml similarity index 100% rename from incubator/sourcegraph/2.0.12/values.yaml rename to incubator/songkong/2.0.13/values.yaml diff --git a/incubator/sourcegraph/2.0.12/CHANGELOG.md b/incubator/sourcegraph/2.0.12/CHANGELOG.md deleted file mode 100644 index d9a3e4833fb..00000000000 --- a/incubator/sourcegraph/2.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [sourcegraph-2.0.12](https://github.com/truecharts/charts/compare/sourcegraph-2.0.11...sourcegraph-2.0.12) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/sourcegraph to v4.4.1 - - - - -## [sourcegraph-2.0.11](https://github.com/truecharts/charts/compare/sourcegraph-2.0.10...sourcegraph-2.0.11) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/sourcegraph to v4.3.1 - - - - -## [sourcegraph-2.0.10](https://github.com/truecharts/charts/compare/sourcegraph-2.0.9...sourcegraph-2.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [sourcegraph-2.0.9](https://github.com/truecharts/charts/compare/sourcegraph-2.0.8...sourcegraph-2.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [sourcegraph-2.0.8](https://github.com/truecharts/charts/compare/sourcegraph-2.0.7...sourcegraph-2.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [sourcegraph-2.0.7](https://github.com/truecharts/charts/compare/sourcegraph-2.0.6...sourcegraph-2.0.7) (2022-12-24) - -### Chore - -- pin dependencies ([#5688](https://github.com/truecharts/charts/issues/5688)) - - - - -## [sourcegraph-2.0.6](https://github.com/truecharts/charts/compare/sourcegraph-2.0.5...sourcegraph-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [sourcegraph-2.0.5](https://github.com/truecharts/charts/compare/sourcegraph-2.0.4...sourcegraph-2.0.5) (2022-12-16) - -### Chore - -- update container image tccr.io/truecharts/sourcegraph to v4.3.0 - - - - -## [sourcegraph-2.0.4](https://github.com/truecharts/charts/compare/sourcegraph-2.0.3...sourcegraph-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [sourcegraph-2.0.3](https://github.com/truecharts/charts/compare/sourcegraph-2.0.2...sourcegraph-2.0.3) (2022-12-08) - -### Chore - -- update container image tccr.io/truecharts/sourcegraph to v4.2.1 - - - - -## [sourcegraph-2.0.2](https://github.com/truecharts/charts/compare/sourcegraph-2.0.1...sourcegraph-2.0.2) (2022-11-30) - - diff --git a/incubator/sourcegraph/2.0.12/Chart.yaml b/incubator/sourcegraph/2.0.12/Chart.yaml deleted file mode 100644 index ec04a03392e..00000000000 --- a/incubator/sourcegraph/2.0.12/Chart.yaml +++ /dev/null @@ -1,36 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Backup - - Cloud - - Network-Web - - Productivity - - Tools-Utilities -apiVersion: v2 -appVersion: "4.4.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Sourcegraph Chart. -home: https://truecharts.org/charts/incubator/sourcegraph -icon: https://truecharts.org/img/hotlink-ok/chart-icons/sourcegraph.png -keywords: - - sourcegraph - - Backup - - Cloud - - Network-Web - - Productivity - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: sourcegraph -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/sourcegraph - - https://hub.docker.com/r/sourcegraph/server/ -type: application -version: 2.0.12 diff --git a/incubator/sourcegraph/2.0.12/app-changelog.md b/incubator/sourcegraph/2.0.12/app-changelog.md deleted file mode 100644 index b29c7cf091a..00000000000 --- a/incubator/sourcegraph/2.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [sourcegraph-2.0.12](https://github.com/truecharts/charts/compare/sourcegraph-2.0.11...sourcegraph-2.0.12) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/sourcegraph to v4.4.1 - - \ No newline at end of file diff --git a/incubator/sourcegraph/2.0.13/CHANGELOG.md b/incubator/sourcegraph/2.0.13/CHANGELOG.md new file mode 100644 index 00000000000..c52a5e12009 --- /dev/null +++ b/incubator/sourcegraph/2.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [sourcegraph-2.0.13](https://github.com/truecharts/charts/compare/sourcegraph-2.0.12...sourcegraph-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [sourcegraph-2.0.12](https://github.com/truecharts/charts/compare/sourcegraph-2.0.11...sourcegraph-2.0.12) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/sourcegraph to v4.4.1 + + + + +## [sourcegraph-2.0.11](https://github.com/truecharts/charts/compare/sourcegraph-2.0.10...sourcegraph-2.0.11) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/sourcegraph to v4.3.1 + + + + +## [sourcegraph-2.0.10](https://github.com/truecharts/charts/compare/sourcegraph-2.0.9...sourcegraph-2.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [sourcegraph-2.0.9](https://github.com/truecharts/charts/compare/sourcegraph-2.0.8...sourcegraph-2.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [sourcegraph-2.0.8](https://github.com/truecharts/charts/compare/sourcegraph-2.0.7...sourcegraph-2.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [sourcegraph-2.0.7](https://github.com/truecharts/charts/compare/sourcegraph-2.0.6...sourcegraph-2.0.7) (2022-12-24) + +### Chore + +- pin dependencies ([#5688](https://github.com/truecharts/charts/issues/5688)) + + + + +## [sourcegraph-2.0.6](https://github.com/truecharts/charts/compare/sourcegraph-2.0.5...sourcegraph-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [sourcegraph-2.0.5](https://github.com/truecharts/charts/compare/sourcegraph-2.0.4...sourcegraph-2.0.5) (2022-12-16) + +### Chore + +- update container image tccr.io/truecharts/sourcegraph to v4.3.0 + + + + +## [sourcegraph-2.0.4](https://github.com/truecharts/charts/compare/sourcegraph-2.0.3...sourcegraph-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [sourcegraph-2.0.3](https://github.com/truecharts/charts/compare/sourcegraph-2.0.2...sourcegraph-2.0.3) (2022-12-08) + +### Chore diff --git a/incubator/sourcegraph/2.0.13/Chart.yaml b/incubator/sourcegraph/2.0.13/Chart.yaml new file mode 100644 index 00000000000..c6f08133e1c --- /dev/null +++ b/incubator/sourcegraph/2.0.13/Chart.yaml @@ -0,0 +1,36 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Backup + - Cloud + - Network-Web + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "4.4.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Sourcegraph Chart. +home: https://truecharts.org/charts/incubator/sourcegraph +icon: https://truecharts.org/img/hotlink-ok/chart-icons/sourcegraph.png +keywords: + - sourcegraph + - Backup + - Cloud + - Network-Web + - Productivity + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: sourcegraph +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/sourcegraph + - https://hub.docker.com/sourcegraph/server +type: application +version: 2.0.13 diff --git a/incubator/splunk/3.0.6/README.md b/incubator/sourcegraph/2.0.13/README.md similarity index 100% rename from incubator/splunk/3.0.6/README.md rename to incubator/sourcegraph/2.0.13/README.md diff --git a/incubator/sourcegraph/2.0.13/app-changelog.md b/incubator/sourcegraph/2.0.13/app-changelog.md new file mode 100644 index 00000000000..92f1a2d47f6 --- /dev/null +++ b/incubator/sourcegraph/2.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [sourcegraph-2.0.13](https://github.com/truecharts/charts/compare/sourcegraph-2.0.12...sourcegraph-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/sourcegraph/2.0.12/app-readme.md b/incubator/sourcegraph/2.0.13/app-readme.md similarity index 100% rename from incubator/sourcegraph/2.0.12/app-readme.md rename to incubator/sourcegraph/2.0.13/app-readme.md diff --git a/incubator/spaceengineers/2.0.8/charts/common-11.1.2.tgz b/incubator/sourcegraph/2.0.13/charts/common-11.1.2.tgz similarity index 100% rename from incubator/spaceengineers/2.0.8/charts/common-11.1.2.tgz rename to incubator/sourcegraph/2.0.13/charts/common-11.1.2.tgz diff --git a/incubator/sourcegraph/2.0.12/ix_values.yaml b/incubator/sourcegraph/2.0.13/ix_values.yaml similarity index 100% rename from incubator/sourcegraph/2.0.12/ix_values.yaml rename to incubator/sourcegraph/2.0.13/ix_values.yaml diff --git a/incubator/sourcegraph/2.0.12/questions.yaml b/incubator/sourcegraph/2.0.13/questions.yaml similarity index 100% rename from incubator/sourcegraph/2.0.12/questions.yaml rename to incubator/sourcegraph/2.0.13/questions.yaml diff --git a/incubator/sourcegraph/2.0.12/templates/common.yaml b/incubator/sourcegraph/2.0.13/templates/common.yaml similarity index 100% rename from incubator/sourcegraph/2.0.12/templates/common.yaml rename to incubator/sourcegraph/2.0.13/templates/common.yaml diff --git a/incubator/spaceengineers/2.0.8/values.yaml b/incubator/sourcegraph/2.0.13/values.yaml similarity index 100% rename from incubator/spaceengineers/2.0.8/values.yaml rename to incubator/sourcegraph/2.0.13/values.yaml diff --git a/incubator/spaceengineers/2.0.8/CHANGELOG.md b/incubator/spaceengineers/2.0.8/CHANGELOG.md deleted file mode 100644 index dee4baa51ba..00000000000 --- a/incubator/spaceengineers/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [spaceengineers-2.0.8](https://github.com/truecharts/charts/compare/spaceengineers-2.0.7...spaceengineers-2.0.8) (2023-01-26) - -### Chore - -- update container image tccr.io/truecharts/spaceengineers to latest - - - - -## [spaceengineers-2.0.7](https://github.com/truecharts/charts/compare/spaceengineers-2.0.6...spaceengineers-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [spaceengineers-2.0.6](https://github.com/truecharts/charts/compare/spaceengineers-2.0.5...spaceengineers-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [spaceengineers-2.0.5](https://github.com/truecharts/charts/compare/spaceengineers-2.0.4...spaceengineers-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [spaceengineers-2.0.4](https://github.com/truecharts/charts/compare/spaceengineers-2.0.3...spaceengineers-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [spaceengineers-2.0.3](https://github.com/truecharts/charts/compare/spaceengineers-2.0.2...spaceengineers-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) - - - - -## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) - - - - -## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) - - - - -## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) - - - - -## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) - - - - -## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) - - - - -## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) - - - - -## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) - - - diff --git a/incubator/spaceengineers/2.0.8/Chart.yaml b/incubator/spaceengineers/2.0.8/Chart.yaml deleted file mode 100644 index 0ba41febbe7..00000000000 --- a/incubator/spaceengineers/2.0.8/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - GameServers -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Space Engineers Dedicated Server build on Debian10" -home: https://truecharts.org/charts/incubator/spaceengineers -icon: https://truecharts.org/img/hotlink-ok/chart-icons/spaceengineers.png -keywords: - - spaceengineers - - GameServers -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: spaceengineers -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/spaceengineers - - https://hub.docker.com/r/devidian/spaceengineers/ - - https://hub.docker.com/r/devidian/spaceengineers/ -type: application -version: 2.0.8 diff --git a/incubator/spaceengineers/2.0.8/app-changelog.md b/incubator/spaceengineers/2.0.8/app-changelog.md deleted file mode 100644 index e54f7db64db..00000000000 --- a/incubator/spaceengineers/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [spaceengineers-2.0.8](https://github.com/truecharts/charts/compare/spaceengineers-2.0.7...spaceengineers-2.0.8) (2023-01-26) - -### Chore - -- update container image tccr.io/truecharts/spaceengineers to latest - - \ No newline at end of file diff --git a/incubator/spaceengineers/2.0.9/CHANGELOG.md b/incubator/spaceengineers/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..ea24d78a95a --- /dev/null +++ b/incubator/spaceengineers/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [spaceengineers-2.0.9](https://github.com/truecharts/charts/compare/spaceengineers-2.0.8...spaceengineers-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [spaceengineers-2.0.8](https://github.com/truecharts/charts/compare/spaceengineers-2.0.7...spaceengineers-2.0.8) (2023-01-26) + +### Chore + +- update container image tccr.io/truecharts/spaceengineers to latest + + + + +## [spaceengineers-2.0.7](https://github.com/truecharts/charts/compare/spaceengineers-2.0.6...spaceengineers-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [spaceengineers-2.0.6](https://github.com/truecharts/charts/compare/spaceengineers-2.0.5...spaceengineers-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [spaceengineers-2.0.5](https://github.com/truecharts/charts/compare/spaceengineers-2.0.4...spaceengineers-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [spaceengineers-2.0.4](https://github.com/truecharts/charts/compare/spaceengineers-2.0.3...spaceengineers-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [spaceengineers-2.0.3](https://github.com/truecharts/charts/compare/spaceengineers-2.0.2...spaceengineers-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) + + + + +## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) + + + + +## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) + + + + +## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) + + + + +## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) + + + + +## [spaceengineers-2.0.2](https://github.com/truecharts/charts/compare/spaceengineers-2.0.1...spaceengineers-2.0.2) (2022-11-30) + + + + diff --git a/incubator/spaceengineers/2.0.9/Chart.yaml b/incubator/spaceengineers/2.0.9/Chart.yaml new file mode 100644 index 00000000000..5db2c1495bc --- /dev/null +++ b/incubator/spaceengineers/2.0.9/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - GameServers +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Space Engineers Dedicated Server build on Debian10" +home: https://truecharts.org/charts/incubator/spaceengineers +icon: https://truecharts.org/img/hotlink-ok/chart-icons/spaceengineers.png +keywords: + - spaceengineers + - GameServers +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: spaceengineers +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/spaceengineers + - https://hub.docker.com/devidian/spaceengineers +type: application +version: 2.0.9 diff --git a/incubator/stackedit/2.0.7/README.md b/incubator/spaceengineers/2.0.9/README.md similarity index 100% rename from incubator/stackedit/2.0.7/README.md rename to incubator/spaceengineers/2.0.9/README.md diff --git a/incubator/spaceengineers/2.0.9/app-changelog.md b/incubator/spaceengineers/2.0.9/app-changelog.md new file mode 100644 index 00000000000..e4cd6b63aff --- /dev/null +++ b/incubator/spaceengineers/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [spaceengineers-2.0.9](https://github.com/truecharts/charts/compare/spaceengineers-2.0.8...spaceengineers-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/spaceengineers/2.0.8/app-readme.md b/incubator/spaceengineers/2.0.9/app-readme.md similarity index 100% rename from incubator/spaceengineers/2.0.8/app-readme.md rename to incubator/spaceengineers/2.0.9/app-readme.md diff --git a/incubator/splunk/3.0.6/charts/common-11.1.2.tgz b/incubator/spaceengineers/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/splunk/3.0.6/charts/common-11.1.2.tgz rename to incubator/spaceengineers/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/spaceengineers/2.0.8/ix_values.yaml b/incubator/spaceengineers/2.0.9/ix_values.yaml similarity index 100% rename from incubator/spaceengineers/2.0.8/ix_values.yaml rename to incubator/spaceengineers/2.0.9/ix_values.yaml diff --git a/incubator/spaceengineers/2.0.8/questions.yaml b/incubator/spaceengineers/2.0.9/questions.yaml similarity index 100% rename from incubator/spaceengineers/2.0.8/questions.yaml rename to incubator/spaceengineers/2.0.9/questions.yaml diff --git a/incubator/spaceengineers/2.0.8/templates/common.yaml b/incubator/spaceengineers/2.0.9/templates/common.yaml similarity index 100% rename from incubator/spaceengineers/2.0.8/templates/common.yaml rename to incubator/spaceengineers/2.0.9/templates/common.yaml diff --git a/incubator/splunk/3.0.6/values.yaml b/incubator/spaceengineers/2.0.9/values.yaml similarity index 100% rename from incubator/splunk/3.0.6/values.yaml rename to incubator/spaceengineers/2.0.9/values.yaml diff --git a/incubator/splunk/3.0.6/CHANGELOG.md b/incubator/splunk/3.0.6/CHANGELOG.md deleted file mode 100644 index dc5bc0e5315..00000000000 --- a/incubator/splunk/3.0.6/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [splunk-3.0.6](https://github.com/truecharts/charts/compare/splunk-3.0.5...splunk-3.0.6) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [splunk-3.0.5](https://github.com/truecharts/charts/compare/splunk-3.0.4...splunk-3.0.5) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [splunk-3.0.4](https://github.com/truecharts/charts/compare/splunk-3.0.3...splunk-3.0.4) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [splunk-3.0.3](https://github.com/truecharts/charts/compare/splunk-3.0.2...splunk-3.0.3) (2022-12-21) - -### Chore - -- update container image splunk/splunk to v9.0.3 - - - - -## [splunk-3.0.2](https://github.com/truecharts/charts/compare/splunk-3.0.1...splunk-3.0.2) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [splunk-3.0.1](https://github.com/truecharts/charts/compare/splunk-3.0.0...splunk-3.0.1) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [splunk-3.0.0](https://github.com/truecharts/charts/compare/splunk-2.1.1...splunk-3.0.0) (2022-12-05) - -### Feat - -- Change to upstream *Breaking change* ([#5092](https://github.com/truecharts/charts/issues/5092)) - - - - -## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) - - - - -## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) - - - - -## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) - - - - -## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) - - - - -## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) - - - - -## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) - - - - diff --git a/incubator/splunk/3.0.6/Chart.yaml b/incubator/splunk/3.0.6/Chart.yaml deleted file mode 100644 index 7466c830423..00000000000 --- a/incubator/splunk/3.0.6/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities - - Network-Management -apiVersion: v2 -appVersion: "9.0.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "This is a Chartfile for Splunk designed for OpenShift and TrueNAS based on Alpine Linux - https://www.splunk.com" -home: https://truecharts.org/charts/incubator/splunk -icon: https://truecharts.org/img/hotlink-ok/chart-icons/splunk.png -keywords: - - splunk - - Tools-Utilities - - Network-Management -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: splunk -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/splunk - - https://splunk.github.io/docker-splunk - - https://hub.docker.com/r/splunk/splunk -type: application -version: 3.0.6 diff --git a/incubator/splunk/3.0.6/app-changelog.md b/incubator/splunk/3.0.6/app-changelog.md deleted file mode 100644 index b095d709754..00000000000 --- a/incubator/splunk/3.0.6/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [splunk-3.0.6](https://github.com/truecharts/charts/compare/splunk-3.0.5...splunk-3.0.6) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/splunk/3.0.6/app-readme.md b/incubator/splunk/3.0.6/app-readme.md deleted file mode 100644 index 7387784aff8..00000000000 --- a/incubator/splunk/3.0.6/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is a Chartfile for Splunk designed for OpenShift and TrueNAS based on Alpine Linux - https://www.splunk.com - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/splunk](https://truecharts.org/charts/incubator/splunk) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/splunk/3.0.6/questions.yaml b/incubator/splunk/3.0.6/questions.yaml deleted file mode 100644 index 041ffc896c7..00000000000 --- a/incubator/splunk/3.0.6/questions.yaml +++ /dev/null @@ -1,2105 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: splunk - group: App Configuration - label: Splunk Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: acceptLicense - label: Accept License - description: Arguments to start Splunk with. - schema: - type: boolean - default: true - - variable: password - label: Splunk Password - description: Splunk Web UI admin password. - schema: - type: string - private: true - default: "" - - variable: extraArgs - label: Extra Startup Arg - schema: - type: list - default: [] - items: - - variable: argEntry - label: Arg Entry - schema: - type: string - required: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8000 - required: true - - variable: management - label: management service - description: HTTPS API - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: management - label: management Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8089 - required: true - - variable: dataingest - label: dataingest service - description: SplunkTCP input - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: dataingest - label: dataingest Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 9997 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: data Storage - description: For indexed data persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: config - label: config Storage - description: For config and app data persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: appcreds - label: appcreds Storage - description: For passwordencryption persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/splunk/3.0.7/CHANGELOG.md b/incubator/splunk/3.0.7/CHANGELOG.md new file mode 100644 index 00000000000..634321ddb91 --- /dev/null +++ b/incubator/splunk/3.0.7/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [splunk-3.0.7](https://github.com/truecharts/charts/compare/splunk-3.0.6...splunk-3.0.7) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [splunk-3.0.6](https://github.com/truecharts/charts/compare/splunk-3.0.5...splunk-3.0.6) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [splunk-3.0.5](https://github.com/truecharts/charts/compare/splunk-3.0.4...splunk-3.0.5) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [splunk-3.0.4](https://github.com/truecharts/charts/compare/splunk-3.0.3...splunk-3.0.4) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [splunk-3.0.3](https://github.com/truecharts/charts/compare/splunk-3.0.2...splunk-3.0.3) (2022-12-21) + +### Chore + +- update container image splunk/splunk to v9.0.3 + + + + +## [splunk-3.0.2](https://github.com/truecharts/charts/compare/splunk-3.0.1...splunk-3.0.2) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [splunk-3.0.1](https://github.com/truecharts/charts/compare/splunk-3.0.0...splunk-3.0.1) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [splunk-3.0.0](https://github.com/truecharts/charts/compare/splunk-2.1.1...splunk-3.0.0) (2022-12-05) + +### Feat + +- Change to upstream *Breaking change* ([#5092](https://github.com/truecharts/charts/issues/5092)) + + + + +## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) + + + + +## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) + + + + +## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) + + + + +## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) + + + + +## [splunk-2.1.1](https://github.com/truecharts/charts/compare/splunk-2.1.0...splunk-2.1.1) (2022-11-30) diff --git a/incubator/splunk/3.0.7/Chart.yaml b/incubator/splunk/3.0.7/Chart.yaml new file mode 100644 index 00000000000..062573a3092 --- /dev/null +++ b/incubator/splunk/3.0.7/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities + - Network-Management +apiVersion: v2 +appVersion: "9.0.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "This is a Chartfile for Splunk designed for OpenShift and TrueNAS based on Alpine Linux - https://www.splunk.com" +home: https://truecharts.org/charts/incubator/splunk +icon: https://truecharts.org/img/hotlink-ok/chart-icons/splunk.png +keywords: + - splunk + - Tools-Utilities + - Network-Management +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: splunk +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/splunk + - https://hub.docker.com/atunnecliffe/splunk + - https://splunk.github.io/docker-splunk +type: application +version: 3.0.7 diff --git a/incubator/standardnotes-web/2.0.7/README.md b/incubator/splunk/3.0.7/README.md similarity index 100% rename from incubator/standardnotes-web/2.0.7/README.md rename to incubator/splunk/3.0.7/README.md diff --git a/incubator/splunk/3.0.7/app-changelog.md b/incubator/splunk/3.0.7/app-changelog.md new file mode 100644 index 00000000000..1e5c489f48a --- /dev/null +++ b/incubator/splunk/3.0.7/app-changelog.md @@ -0,0 +1,9 @@ + + +## [splunk-3.0.7](https://github.com/truecharts/charts/compare/splunk-3.0.6...splunk-3.0.7) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/splunk/3.0.7/app-readme.md b/incubator/splunk/3.0.7/app-readme.md new file mode 100644 index 00000000000..118737c3673 --- /dev/null +++ b/incubator/splunk/3.0.7/app-readme.md @@ -0,0 +1,8 @@ +This is a Chartfile for Splunk designed for OpenShift and TrueNAS based on Alpine Linux - https://www.splunk.com + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/splunk](https://truecharts.org/charts/incubator/splunk) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/stackedit/2.0.7/charts/common-11.1.2.tgz b/incubator/splunk/3.0.7/charts/common-11.1.2.tgz similarity index 100% rename from incubator/stackedit/2.0.7/charts/common-11.1.2.tgz rename to incubator/splunk/3.0.7/charts/common-11.1.2.tgz diff --git a/incubator/splunk/3.0.6/ix_values.yaml b/incubator/splunk/3.0.7/ix_values.yaml similarity index 100% rename from incubator/splunk/3.0.6/ix_values.yaml rename to incubator/splunk/3.0.7/ix_values.yaml diff --git a/incubator/splunk/3.0.7/questions.yaml b/incubator/splunk/3.0.7/questions.yaml new file mode 100644 index 00000000000..ff636be4ebe --- /dev/null +++ b/incubator/splunk/3.0.7/questions.yaml @@ -0,0 +1,2146 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: splunk + group: App Configuration + label: Splunk Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: acceptLicense + label: Accept License + description: Arguments to start Splunk with. + schema: + type: boolean + default: true + - variable: password + label: Splunk Password + description: Splunk Web UI admin password. + schema: + type: string + private: true + default: "" + - variable: extraArgs + label: Extra Startup Arg + schema: + type: list + default: [] + items: + - variable: argEntry + label: Arg Entry + schema: + type: string + required: true + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8000 + required: true + - variable: management + label: management service + description: HTTPS API + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: management + label: management Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8089 + required: true + - variable: dataingest + label: dataingest service + description: SplunkTCP input + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dataingest + label: dataingest Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 9997 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: data Storage + description: For indexed data persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: config + label: config Storage + description: For config and app data persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: appcreds + label: appcreds Storage + description: For passwordencryption persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/splunk/3.0.6/templates/_config.tpl b/incubator/splunk/3.0.7/templates/_config.tpl similarity index 100% rename from incubator/splunk/3.0.6/templates/_config.tpl rename to incubator/splunk/3.0.7/templates/_config.tpl diff --git a/incubator/splunk/3.0.6/templates/common.yaml b/incubator/splunk/3.0.7/templates/common.yaml similarity index 100% rename from incubator/splunk/3.0.6/templates/common.yaml rename to incubator/splunk/3.0.7/templates/common.yaml diff --git a/incubator/stackedit/2.0.7/values.yaml b/incubator/splunk/3.0.7/values.yaml similarity index 100% rename from incubator/stackedit/2.0.7/values.yaml rename to incubator/splunk/3.0.7/values.yaml diff --git a/incubator/stackedit/2.0.7/CHANGELOG.md b/incubator/stackedit/2.0.7/CHANGELOG.md deleted file mode 100644 index 09371eadfb1..00000000000 --- a/incubator/stackedit/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [stackedit-2.0.7](https://github.com/truecharts/charts/compare/stackedit-2.0.6...stackedit-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [stackedit-2.0.6](https://github.com/truecharts/charts/compare/stackedit-2.0.5...stackedit-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [stackedit-2.0.5](https://github.com/truecharts/charts/compare/stackedit-2.0.4...stackedit-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [stackedit-2.0.4](https://github.com/truecharts/charts/compare/stackedit-2.0.3...stackedit-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [stackedit-2.0.3](https://github.com/truecharts/charts/compare/stackedit-2.0.2...stackedit-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - - - -## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) - - diff --git a/incubator/stackedit/2.0.7/Chart.yaml b/incubator/stackedit/2.0.7/Chart.yaml deleted file mode 100644 index 1e483a57e08..00000000000 --- a/incubator/stackedit/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: StackEdits Markdown syntax highlighting is unique. The refined text formatting of the editor helps you visualize the final rendering of your files. -home: https://truecharts.org/charts/incubator/stackedit -icon: https://truecharts.org/img/hotlink-ok/chart-icons/stackedit.png -keywords: - - stackedit - - Productivity - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: stackedit -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/stackedit - - https://stackedit.io/ - - https://hub.docker.com/r/qmcgaw/stackedit/ -type: application -version: 2.0.7 diff --git a/incubator/stackedit/2.0.7/app-changelog.md b/incubator/stackedit/2.0.7/app-changelog.md deleted file mode 100644 index 13b6b13331c..00000000000 --- a/incubator/stackedit/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [stackedit-2.0.7](https://github.com/truecharts/charts/compare/stackedit-2.0.6...stackedit-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/stackedit/2.0.7/app-readme.md b/incubator/stackedit/2.0.7/app-readme.md deleted file mode 100644 index 5c294f4a407..00000000000 --- a/incubator/stackedit/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -StackEdits Markdown syntax highlighting is unique. The refined text formatting of the editor helps you visualize the final rendering of your files. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/stackedit](https://truecharts.org/charts/incubator/stackedit) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/stackedit/2.0.7/questions.yaml b/incubator/stackedit/2.0.7/questions.yaml deleted file mode 100644 index d50dff463a7..00000000000 --- a/incubator/stackedit/2.0.7/questions.yaml +++ /dev/null @@ -1,1764 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ROOT_URL - label: "ROOT_URL" - description: "Sets production behavior for stackedit" - schema: - type: string - default: "/" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/stackedit/2.0.8/CHANGELOG.md b/incubator/stackedit/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..2a72b73cbd4 --- /dev/null +++ b/incubator/stackedit/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [stackedit-2.0.8](https://github.com/truecharts/charts/compare/stackedit-2.0.7...stackedit-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [stackedit-2.0.7](https://github.com/truecharts/charts/compare/stackedit-2.0.6...stackedit-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [stackedit-2.0.6](https://github.com/truecharts/charts/compare/stackedit-2.0.5...stackedit-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [stackedit-2.0.5](https://github.com/truecharts/charts/compare/stackedit-2.0.4...stackedit-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [stackedit-2.0.4](https://github.com/truecharts/charts/compare/stackedit-2.0.3...stackedit-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [stackedit-2.0.3](https://github.com/truecharts/charts/compare/stackedit-2.0.2...stackedit-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) + + + + +## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) + + + + +## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) + + + + +## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) + + + + +## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) + + + + +## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) + + + + +## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) + + + + +## [stackedit-2.0.2](https://github.com/truecharts/charts/compare/stackedit-2.0.1...stackedit-2.0.2) (2022-11-30) + + + diff --git a/incubator/stackedit/2.0.8/Chart.yaml b/incubator/stackedit/2.0.8/Chart.yaml new file mode 100644 index 00000000000..9a2bba2c917 --- /dev/null +++ b/incubator/stackedit/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: StackEdits Markdown syntax highlighting is unique. The refined text formatting of the editor helps you visualize the final rendering of your files. +home: https://truecharts.org/charts/incubator/stackedit +icon: https://truecharts.org/img/hotlink-ok/chart-icons/stackedit.png +keywords: + - stackedit + - Productivity + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: stackedit +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/stackedit + - https://hub.docker.com/qmcgaw/stackedit + - https://stackedit.io/ +type: application +version: 2.0.8 diff --git a/incubator/tanoshi/2.0.7/README.md b/incubator/stackedit/2.0.8/README.md similarity index 100% rename from incubator/tanoshi/2.0.7/README.md rename to incubator/stackedit/2.0.8/README.md diff --git a/incubator/stackedit/2.0.8/app-changelog.md b/incubator/stackedit/2.0.8/app-changelog.md new file mode 100644 index 00000000000..ee4c00abfd1 --- /dev/null +++ b/incubator/stackedit/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [stackedit-2.0.8](https://github.com/truecharts/charts/compare/stackedit-2.0.7...stackedit-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/stackedit/2.0.8/app-readme.md b/incubator/stackedit/2.0.8/app-readme.md new file mode 100644 index 00000000000..39d19a652fb --- /dev/null +++ b/incubator/stackedit/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +StackEdits Markdown syntax highlighting is unique. The refined text formatting of the editor helps you visualize the final rendering of your files. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/stackedit](https://truecharts.org/charts/incubator/stackedit) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/standardnotes-web/2.0.7/charts/common-11.1.2.tgz b/incubator/stackedit/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/standardnotes-web/2.0.7/charts/common-11.1.2.tgz rename to incubator/stackedit/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/stackedit/2.0.7/ix_values.yaml b/incubator/stackedit/2.0.8/ix_values.yaml similarity index 100% rename from incubator/stackedit/2.0.7/ix_values.yaml rename to incubator/stackedit/2.0.8/ix_values.yaml diff --git a/incubator/stackedit/2.0.8/questions.yaml b/incubator/stackedit/2.0.8/questions.yaml new file mode 100644 index 00000000000..13d21e3a820 --- /dev/null +++ b/incubator/stackedit/2.0.8/questions.yaml @@ -0,0 +1,1805 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ROOT_URL + label: "ROOT_URL" + description: "Sets production behavior for stackedit" + schema: + type: string + default: "/" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/stackedit/2.0.7/templates/common.yaml b/incubator/stackedit/2.0.8/templates/common.yaml similarity index 100% rename from incubator/stackedit/2.0.7/templates/common.yaml rename to incubator/stackedit/2.0.8/templates/common.yaml diff --git a/incubator/standardnotes-web/2.0.7/values.yaml b/incubator/stackedit/2.0.8/values.yaml similarity index 100% rename from incubator/standardnotes-web/2.0.7/values.yaml rename to incubator/stackedit/2.0.8/values.yaml diff --git a/incubator/standardnotes-web/2.0.7/CHANGELOG.md b/incubator/standardnotes-web/2.0.7/CHANGELOG.md deleted file mode 100644 index 0dedb3f25a7..00000000000 --- a/incubator/standardnotes-web/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [standardnotes-web-2.0.7](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.6...standardnotes-web-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [standardnotes-web-2.0.6](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.5...standardnotes-web-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [standardnotes-web-2.0.5](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.4...standardnotes-web-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [standardnotes-web-2.0.4](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.3...standardnotes-web-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [standardnotes-web-2.0.3](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.2...standardnotes-web-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - - - -## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) - - diff --git a/incubator/standardnotes-web/2.0.7/Chart.yaml b/incubator/standardnotes-web/2.0.7/Chart.yaml deleted file mode 100644 index b12bf644d73..00000000000 --- a/incubator/standardnotes-web/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity -apiVersion: v2 -appVersion: "stable" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "A safe and private place for your life's work." -home: https://truecharts.org/charts/incubator/standardnotes-web -icon: https://truecharts.org/img/hotlink-ok/chart-icons/standardnotes-web.png -keywords: - - standardnotes-web - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: standardnotes-web -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/standardnotes-web - - https://standardnotes.org/ - - https://hub.docker.com/r/standardnotes/web -type: application -version: 2.0.7 diff --git a/incubator/standardnotes-web/2.0.7/app-changelog.md b/incubator/standardnotes-web/2.0.7/app-changelog.md deleted file mode 100644 index 765a3926dd0..00000000000 --- a/incubator/standardnotes-web/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [standardnotes-web-2.0.7](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.6...standardnotes-web-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/standardnotes-web/2.0.7/app-readme.md b/incubator/standardnotes-web/2.0.7/app-readme.md deleted file mode 100644 index 8dd23fd576c..00000000000 --- a/incubator/standardnotes-web/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A safe and private place for your life's work. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/standardnotes-web](https://truecharts.org/charts/incubator/standardnotes-web) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/standardnotes-web/2.0.7/questions.yaml b/incubator/standardnotes-web/2.0.7/questions.yaml deleted file mode 100644 index c688869148e..00000000000 --- a/incubator/standardnotes-web/2.0.7/questions.yaml +++ /dev/null @@ -1,1402 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/standardnotes-web/2.0.8/CHANGELOG.md b/incubator/standardnotes-web/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..9b08f466059 --- /dev/null +++ b/incubator/standardnotes-web/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [standardnotes-web-2.0.8](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.7...standardnotes-web-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [standardnotes-web-2.0.7](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.6...standardnotes-web-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [standardnotes-web-2.0.6](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.5...standardnotes-web-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [standardnotes-web-2.0.5](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.4...standardnotes-web-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [standardnotes-web-2.0.4](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.3...standardnotes-web-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [standardnotes-web-2.0.3](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.2...standardnotes-web-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) + + + + +## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) + + + + +## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) + + + + +## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) + + + + +## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) + + + + +## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) + + + + +## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) + + + + +## [standardnotes-web-2.0.2](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.1...standardnotes-web-2.0.2) (2022-11-30) + + + diff --git a/incubator/standardnotes-web/2.0.8/Chart.yaml b/incubator/standardnotes-web/2.0.8/Chart.yaml new file mode 100644 index 00000000000..15dd5c279e3 --- /dev/null +++ b/incubator/standardnotes-web/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity +apiVersion: v2 +appVersion: "stable" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "A safe and private place for your life's work." +home: https://truecharts.org/charts/incubator/standardnotes-web +icon: https://truecharts.org/img/hotlink-ok/chart-icons/standardnotes-web.png +keywords: + - standardnotes-web + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: standardnotes-web +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/standardnotes-web + - https://hub.docker.com/standardnotes/web + - https://standardnotes.org/ +type: application +version: 2.0.8 diff --git a/incubator/tasmoadmin/2.0.7/README.md b/incubator/standardnotes-web/2.0.8/README.md similarity index 100% rename from incubator/tasmoadmin/2.0.7/README.md rename to incubator/standardnotes-web/2.0.8/README.md diff --git a/incubator/standardnotes-web/2.0.8/app-changelog.md b/incubator/standardnotes-web/2.0.8/app-changelog.md new file mode 100644 index 00000000000..de984831764 --- /dev/null +++ b/incubator/standardnotes-web/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [standardnotes-web-2.0.8](https://github.com/truecharts/charts/compare/standardnotes-web-2.0.7...standardnotes-web-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/standardnotes-web/2.0.8/app-readme.md b/incubator/standardnotes-web/2.0.8/app-readme.md new file mode 100644 index 00000000000..e67cf88e2d0 --- /dev/null +++ b/incubator/standardnotes-web/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +A safe and private place for your life's work. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/standardnotes-web](https://truecharts.org/charts/incubator/standardnotes-web) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/tanoshi/2.0.7/charts/common-11.1.2.tgz b/incubator/standardnotes-web/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/tanoshi/2.0.7/charts/common-11.1.2.tgz rename to incubator/standardnotes-web/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/standardnotes-web/2.0.7/ix_values.yaml b/incubator/standardnotes-web/2.0.8/ix_values.yaml similarity index 100% rename from incubator/standardnotes-web/2.0.7/ix_values.yaml rename to incubator/standardnotes-web/2.0.8/ix_values.yaml diff --git a/incubator/standardnotes-web/2.0.8/questions.yaml b/incubator/standardnotes-web/2.0.8/questions.yaml new file mode 100644 index 00000000000..7a0e5c3cf49 --- /dev/null +++ b/incubator/standardnotes-web/2.0.8/questions.yaml @@ -0,0 +1,1402 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/standardnotes-web/2.0.7/templates/common.yaml b/incubator/standardnotes-web/2.0.8/templates/common.yaml similarity index 100% rename from incubator/standardnotes-web/2.0.7/templates/common.yaml rename to incubator/standardnotes-web/2.0.8/templates/common.yaml diff --git a/incubator/tanoshi/2.0.7/values.yaml b/incubator/standardnotes-web/2.0.8/values.yaml similarity index 100% rename from incubator/tanoshi/2.0.7/values.yaml rename to incubator/standardnotes-web/2.0.8/values.yaml diff --git a/incubator/tanoshi/2.0.7/CHANGELOG.md b/incubator/tanoshi/2.0.7/CHANGELOG.md deleted file mode 100644 index 097853ca56a..00000000000 --- a/incubator/tanoshi/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [tanoshi-2.0.7](https://github.com/truecharts/charts/compare/tanoshi-2.0.6...tanoshi-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [tanoshi-2.0.6](https://github.com/truecharts/charts/compare/tanoshi-2.0.5...tanoshi-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [tanoshi-2.0.5](https://github.com/truecharts/charts/compare/tanoshi-2.0.4...tanoshi-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [tanoshi-2.0.4](https://github.com/truecharts/charts/compare/tanoshi-2.0.3...tanoshi-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [tanoshi-2.0.3](https://github.com/truecharts/charts/compare/tanoshi-2.0.2...tanoshi-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - - - -## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) - - diff --git a/incubator/tanoshi/2.0.7/Chart.yaml b/incubator/tanoshi/2.0.7/Chart.yaml deleted file mode 100644 index 9806c7bf3de..00000000000 --- a/incubator/tanoshi/2.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Productivity - - MediaApp-Books - - MediaServer-Books -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Selfhosted web manga reader." -home: https://truecharts.org/charts/incubator/tanoshi -icon: https://truecharts.org/img/hotlink-ok/chart-icons/tanoshi.png -keywords: - - tanoshi - - Productivity - - MediaApp-Books - - MediaServer-Books -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: tanoshi -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/tanoshi - - https://github.com/faldez/tanoshi - - https://hub.docker.com/r/faldez/tanoshi -type: application -version: 2.0.7 diff --git a/incubator/tanoshi/2.0.7/app-changelog.md b/incubator/tanoshi/2.0.7/app-changelog.md deleted file mode 100644 index 64fd0e34c08..00000000000 --- a/incubator/tanoshi/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [tanoshi-2.0.7](https://github.com/truecharts/charts/compare/tanoshi-2.0.6...tanoshi-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/tanoshi/2.0.7/app-readme.md b/incubator/tanoshi/2.0.7/app-readme.md deleted file mode 100644 index edccf8db48d..00000000000 --- a/incubator/tanoshi/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Selfhosted web manga reader. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/tanoshi](https://truecharts.org/charts/incubator/tanoshi) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/tanoshi/2.0.7/questions.yaml b/incubator/tanoshi/2.0.7/questions.yaml deleted file mode 100644 index 764459f641f..00000000000 --- a/incubator/tanoshi/2.0.7/questions.yaml +++ /dev/null @@ -1,1828 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 80 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: directoryconfig - label: "directoryconfig Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/tanoshi/2.0.8/CHANGELOG.md b/incubator/tanoshi/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..7204bdda1b9 --- /dev/null +++ b/incubator/tanoshi/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [tanoshi-2.0.8](https://github.com/truecharts/charts/compare/tanoshi-2.0.7...tanoshi-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [tanoshi-2.0.7](https://github.com/truecharts/charts/compare/tanoshi-2.0.6...tanoshi-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [tanoshi-2.0.6](https://github.com/truecharts/charts/compare/tanoshi-2.0.5...tanoshi-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [tanoshi-2.0.5](https://github.com/truecharts/charts/compare/tanoshi-2.0.4...tanoshi-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [tanoshi-2.0.4](https://github.com/truecharts/charts/compare/tanoshi-2.0.3...tanoshi-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [tanoshi-2.0.3](https://github.com/truecharts/charts/compare/tanoshi-2.0.2...tanoshi-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) + + + + +## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) + + + + +## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) + + + + +## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) + + + + +## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) + + + + +## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) + + + + +## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) + + + + +## [tanoshi-2.0.2](https://github.com/truecharts/charts/compare/tanoshi-2.0.1...tanoshi-2.0.2) (2022-11-30) + + + diff --git a/incubator/tanoshi/2.0.8/Chart.yaml b/incubator/tanoshi/2.0.8/Chart.yaml new file mode 100644 index 00000000000..e93a119c3da --- /dev/null +++ b/incubator/tanoshi/2.0.8/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Productivity + - MediaApp-Books + - MediaServer-Books +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Selfhosted web manga reader." +home: https://truecharts.org/charts/incubator/tanoshi +icon: https://truecharts.org/img/hotlink-ok/chart-icons/tanoshi.png +keywords: + - tanoshi + - Productivity + - MediaApp-Books + - MediaServer-Books +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: tanoshi +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/tanoshi + - https://hub.docker.com/faldez/tanoshi + - https://github.com/faldez/tanoshi +type: application +version: 2.0.8 diff --git a/incubator/teedy-docs/2.0.7/README.md b/incubator/tanoshi/2.0.8/README.md similarity index 100% rename from incubator/teedy-docs/2.0.7/README.md rename to incubator/tanoshi/2.0.8/README.md diff --git a/incubator/tanoshi/2.0.8/app-changelog.md b/incubator/tanoshi/2.0.8/app-changelog.md new file mode 100644 index 00000000000..26d00985a50 --- /dev/null +++ b/incubator/tanoshi/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [tanoshi-2.0.8](https://github.com/truecharts/charts/compare/tanoshi-2.0.7...tanoshi-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/tanoshi/2.0.8/app-readme.md b/incubator/tanoshi/2.0.8/app-readme.md new file mode 100644 index 00000000000..feff3cfeb75 --- /dev/null +++ b/incubator/tanoshi/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Selfhosted web manga reader. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/tanoshi](https://truecharts.org/charts/incubator/tanoshi) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/tasmoadmin/2.0.7/charts/common-11.1.2.tgz b/incubator/tanoshi/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/tasmoadmin/2.0.7/charts/common-11.1.2.tgz rename to incubator/tanoshi/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/tanoshi/2.0.7/ix_values.yaml b/incubator/tanoshi/2.0.8/ix_values.yaml similarity index 100% rename from incubator/tanoshi/2.0.7/ix_values.yaml rename to incubator/tanoshi/2.0.8/ix_values.yaml diff --git a/incubator/tanoshi/2.0.8/questions.yaml b/incubator/tanoshi/2.0.8/questions.yaml new file mode 100644 index 00000000000..159706c6bd9 --- /dev/null +++ b/incubator/tanoshi/2.0.8/questions.yaml @@ -0,0 +1,1869 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 80 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: directoryconfig + label: "directoryconfig Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/tanoshi/2.0.7/templates/common.yaml b/incubator/tanoshi/2.0.8/templates/common.yaml similarity index 100% rename from incubator/tanoshi/2.0.7/templates/common.yaml rename to incubator/tanoshi/2.0.8/templates/common.yaml diff --git a/incubator/tasmoadmin/2.0.7/values.yaml b/incubator/tanoshi/2.0.8/values.yaml similarity index 100% rename from incubator/tasmoadmin/2.0.7/values.yaml rename to incubator/tanoshi/2.0.8/values.yaml diff --git a/incubator/tasmoadmin/2.0.7/CHANGELOG.md b/incubator/tasmoadmin/2.0.7/CHANGELOG.md deleted file mode 100644 index fb55ffd5d50..00000000000 --- a/incubator/tasmoadmin/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [tasmoadmin-2.0.7](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.6...tasmoadmin-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [tasmoadmin-2.0.6](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.5...tasmoadmin-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [tasmoadmin-2.0.5](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.4...tasmoadmin-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [tasmoadmin-2.0.4](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.3...tasmoadmin-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [tasmoadmin-2.0.3](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.2...tasmoadmin-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - - - -## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) - - diff --git a/incubator/tasmoadmin/2.0.7/Chart.yaml b/incubator/tasmoadmin/2.0.7/Chart.yaml deleted file mode 100644 index 78dee5cc468..00000000000 --- a/incubator/tasmoadmin/2.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - HomeAutomation - - Network-Management -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "TasmoAdmin is an administrative Website for Home Automation Devices flashed with Tasmota" -home: https://truecharts.org/charts/incubator/tasmoadmin -icon: https://truecharts.org/img/hotlink-ok/chart-icons/tasmoadmin.png -keywords: - - tasmoadmin - - HomeAutomation - - Network-Management -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: tasmoadmin -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/tasmoadmin - - https://hub.docker.com/r/raymondmm/tasmoadmin/ -type: application -version: 2.0.7 diff --git a/incubator/tasmoadmin/2.0.7/app-changelog.md b/incubator/tasmoadmin/2.0.7/app-changelog.md deleted file mode 100644 index 30fb65b7795..00000000000 --- a/incubator/tasmoadmin/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [tasmoadmin-2.0.7](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.6...tasmoadmin-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/tasmoadmin/2.0.7/app-readme.md b/incubator/tasmoadmin/2.0.7/app-readme.md deleted file mode 100644 index d39b7080074..00000000000 --- a/incubator/tasmoadmin/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -TasmoAdmin is an administrative Website for Home Automation Devices flashed with Tasmota - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/tasmoadmin](https://truecharts.org/charts/incubator/tasmoadmin) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/tasmoadmin/2.0.7/questions.yaml b/incubator/tasmoadmin/2.0.7/questions.yaml deleted file mode 100644 index c86c3925f1d..00000000000 --- a/incubator/tasmoadmin/2.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 9541 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/tasmoadmin/2.0.8/CHANGELOG.md b/incubator/tasmoadmin/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..92b63f86f60 --- /dev/null +++ b/incubator/tasmoadmin/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [tasmoadmin-2.0.8](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.7...tasmoadmin-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [tasmoadmin-2.0.7](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.6...tasmoadmin-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [tasmoadmin-2.0.6](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.5...tasmoadmin-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [tasmoadmin-2.0.5](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.4...tasmoadmin-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [tasmoadmin-2.0.4](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.3...tasmoadmin-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [tasmoadmin-2.0.3](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.2...tasmoadmin-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) + + + + +## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) + + + + +## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) + + + + +## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) + + + + +## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) + + + + +## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) + + + + +## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) + + + + +## [tasmoadmin-2.0.2](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.1...tasmoadmin-2.0.2) (2022-11-30) + + + diff --git a/incubator/tasmoadmin/2.0.8/Chart.yaml b/incubator/tasmoadmin/2.0.8/Chart.yaml new file mode 100644 index 00000000000..1820c9ca79c --- /dev/null +++ b/incubator/tasmoadmin/2.0.8/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - HomeAutomation + - Network-Management +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "TasmoAdmin is an administrative Website for Home Automation Devices flashed with Tasmota" +home: https://truecharts.org/charts/incubator/tasmoadmin +icon: https://truecharts.org/img/hotlink-ok/chart-icons/tasmoadmin.png +keywords: + - tasmoadmin + - HomeAutomation + - Network-Management +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: tasmoadmin +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/tasmoadmin + - https://hub.docker.com/raymondmm/tasmoadmin +type: application +version: 2.0.8 diff --git a/incubator/thumba/0.0.5/README.md b/incubator/tasmoadmin/2.0.8/README.md similarity index 100% rename from incubator/thumba/0.0.5/README.md rename to incubator/tasmoadmin/2.0.8/README.md diff --git a/incubator/tasmoadmin/2.0.8/app-changelog.md b/incubator/tasmoadmin/2.0.8/app-changelog.md new file mode 100644 index 00000000000..2196a0906f0 --- /dev/null +++ b/incubator/tasmoadmin/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [tasmoadmin-2.0.8](https://github.com/truecharts/charts/compare/tasmoadmin-2.0.7...tasmoadmin-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/tasmoadmin/2.0.8/app-readme.md b/incubator/tasmoadmin/2.0.8/app-readme.md new file mode 100644 index 00000000000..e197d951f48 --- /dev/null +++ b/incubator/tasmoadmin/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +TasmoAdmin is an administrative Website for Home Automation Devices flashed with Tasmota + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/tasmoadmin](https://truecharts.org/charts/incubator/tasmoadmin) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/teedy-docs/2.0.7/charts/common-11.1.2.tgz b/incubator/tasmoadmin/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/teedy-docs/2.0.7/charts/common-11.1.2.tgz rename to incubator/tasmoadmin/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/tasmoadmin/2.0.7/ix_values.yaml b/incubator/tasmoadmin/2.0.8/ix_values.yaml similarity index 100% rename from incubator/tasmoadmin/2.0.7/ix_values.yaml rename to incubator/tasmoadmin/2.0.8/ix_values.yaml diff --git a/incubator/tasmoadmin/2.0.8/questions.yaml b/incubator/tasmoadmin/2.0.8/questions.yaml new file mode 100644 index 00000000000..ad179ea4745 --- /dev/null +++ b/incubator/tasmoadmin/2.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9541 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/tasmoadmin/2.0.7/templates/common.yaml b/incubator/tasmoadmin/2.0.8/templates/common.yaml similarity index 100% rename from incubator/tasmoadmin/2.0.7/templates/common.yaml rename to incubator/tasmoadmin/2.0.8/templates/common.yaml diff --git a/incubator/teedy-docs/2.0.7/values.yaml b/incubator/tasmoadmin/2.0.8/values.yaml similarity index 100% rename from incubator/teedy-docs/2.0.7/values.yaml rename to incubator/tasmoadmin/2.0.8/values.yaml diff --git a/incubator/teedy-docs/2.0.7/CHANGELOG.md b/incubator/teedy-docs/2.0.7/CHANGELOG.md deleted file mode 100644 index dd5e85dc86c..00000000000 --- a/incubator/teedy-docs/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [teedy-docs-2.0.7](https://github.com/truecharts/charts/compare/teedy-docs-2.0.6...teedy-docs-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [teedy-docs-2.0.6](https://github.com/truecharts/charts/compare/teedy-docs-2.0.5...teedy-docs-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [teedy-docs-2.0.5](https://github.com/truecharts/charts/compare/teedy-docs-2.0.4...teedy-docs-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [teedy-docs-2.0.4](https://github.com/truecharts/charts/compare/teedy-docs-2.0.3...teedy-docs-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [teedy-docs-2.0.3](https://github.com/truecharts/charts/compare/teedy-docs-2.0.2...teedy-docs-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - - - -## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) - - diff --git a/incubator/teedy-docs/2.0.7/Chart.yaml b/incubator/teedy-docs/2.0.7/Chart.yaml deleted file mode 100644 index b57e118980a..00000000000 --- a/incubator/teedy-docs/2.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Teedy is an open-source, lightweight document management system (DMS) for individuals and businesses." -home: https://truecharts.org/charts/incubator/teedy-docs -icon: https://truecharts.org/img/hotlink-ok/chart-icons/teedy-docs.png -keywords: - - teedy-docs - - Cloud - - Productivity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: teedy-docs -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/teedy-docs - - https://github.com/sismics/docs - - https://hub.docker.com/r/sismics/docs/ -type: application -version: 2.0.7 diff --git a/incubator/teedy-docs/2.0.7/app-changelog.md b/incubator/teedy-docs/2.0.7/app-changelog.md deleted file mode 100644 index 9db5d6a6289..00000000000 --- a/incubator/teedy-docs/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [teedy-docs-2.0.7](https://github.com/truecharts/charts/compare/teedy-docs-2.0.6...teedy-docs-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/teedy-docs/2.0.7/app-readme.md b/incubator/teedy-docs/2.0.7/app-readme.md deleted file mode 100644 index 8c9bffe6d4f..00000000000 --- a/incubator/teedy-docs/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Teedy is an open-source, lightweight document management system (DMS) for individuals and businesses. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/teedy-docs](https://truecharts.org/charts/incubator/teedy-docs) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/teedy-docs/2.0.7/questions.yaml b/incubator/teedy-docs/2.0.7/questions.yaml deleted file mode 100644 index 3784972f554..00000000000 --- a/incubator/teedy-docs/2.0.7/questions.yaml +++ /dev/null @@ -1,1493 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: DOCS_BASE_URL - label: "DOCS_BASE_URL" - description: "For using an external URL, for example httpsteedy.mycompany.com" - schema: - type: string - default: "" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/teedy-docs/2.0.8/CHANGELOG.md b/incubator/teedy-docs/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..43c15c9f3b5 --- /dev/null +++ b/incubator/teedy-docs/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [teedy-docs-2.0.8](https://github.com/truecharts/charts/compare/teedy-docs-2.0.7...teedy-docs-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [teedy-docs-2.0.7](https://github.com/truecharts/charts/compare/teedy-docs-2.0.6...teedy-docs-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [teedy-docs-2.0.6](https://github.com/truecharts/charts/compare/teedy-docs-2.0.5...teedy-docs-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [teedy-docs-2.0.5](https://github.com/truecharts/charts/compare/teedy-docs-2.0.4...teedy-docs-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [teedy-docs-2.0.4](https://github.com/truecharts/charts/compare/teedy-docs-2.0.3...teedy-docs-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [teedy-docs-2.0.3](https://github.com/truecharts/charts/compare/teedy-docs-2.0.2...teedy-docs-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) + + + + +## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) + + + + +## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) + + + + +## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) + + + + +## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) + + + + +## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) + + + + +## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) + + + + +## [teedy-docs-2.0.2](https://github.com/truecharts/charts/compare/teedy-docs-2.0.1...teedy-docs-2.0.2) (2022-11-30) + + + diff --git a/incubator/teedy-docs/2.0.8/Chart.yaml b/incubator/teedy-docs/2.0.8/Chart.yaml new file mode 100644 index 00000000000..be1575f84ee --- /dev/null +++ b/incubator/teedy-docs/2.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Teedy is an open-source, lightweight document management system (DMS) for individuals and businesses." +home: https://truecharts.org/charts/incubator/teedy-docs +icon: https://truecharts.org/img/hotlink-ok/chart-icons/teedy-docs.png +keywords: + - teedy-docs + - Cloud + - Productivity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: teedy-docs +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/teedy-docs + - https://hub.docker.com/sismics/docs + - https://github.com/sismics/docs +type: application +version: 2.0.8 diff --git a/incubator/tonido/2.0.7/README.md b/incubator/teedy-docs/2.0.8/README.md similarity index 100% rename from incubator/tonido/2.0.7/README.md rename to incubator/teedy-docs/2.0.8/README.md diff --git a/incubator/teedy-docs/2.0.8/app-changelog.md b/incubator/teedy-docs/2.0.8/app-changelog.md new file mode 100644 index 00000000000..0ffdb499949 --- /dev/null +++ b/incubator/teedy-docs/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [teedy-docs-2.0.8](https://github.com/truecharts/charts/compare/teedy-docs-2.0.7...teedy-docs-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/teedy-docs/2.0.8/app-readme.md b/incubator/teedy-docs/2.0.8/app-readme.md new file mode 100644 index 00000000000..e2e5d8d70fa --- /dev/null +++ b/incubator/teedy-docs/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Teedy is an open-source, lightweight document management system (DMS) for individuals and businesses. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/teedy-docs](https://truecharts.org/charts/incubator/teedy-docs) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/thumba/0.0.5/charts/common-11.1.2.tgz b/incubator/teedy-docs/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/thumba/0.0.5/charts/common-11.1.2.tgz rename to incubator/teedy-docs/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/teedy-docs/2.0.7/ix_values.yaml b/incubator/teedy-docs/2.0.8/ix_values.yaml similarity index 100% rename from incubator/teedy-docs/2.0.7/ix_values.yaml rename to incubator/teedy-docs/2.0.8/ix_values.yaml diff --git a/incubator/teedy-docs/2.0.8/questions.yaml b/incubator/teedy-docs/2.0.8/questions.yaml new file mode 100644 index 00000000000..e5bad1488a3 --- /dev/null +++ b/incubator/teedy-docs/2.0.8/questions.yaml @@ -0,0 +1,1493 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DOCS_BASE_URL + label: "DOCS_BASE_URL" + description: "For using an external URL, for example httpsteedy.mycompany.com" + schema: + type: string + default: "" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/teedy-docs/2.0.7/templates/common.yaml b/incubator/teedy-docs/2.0.8/templates/common.yaml similarity index 100% rename from incubator/teedy-docs/2.0.7/templates/common.yaml rename to incubator/teedy-docs/2.0.8/templates/common.yaml diff --git a/incubator/thumba/0.0.5/values.yaml b/incubator/teedy-docs/2.0.8/values.yaml similarity index 100% rename from incubator/thumba/0.0.5/values.yaml rename to incubator/teedy-docs/2.0.8/values.yaml diff --git a/incubator/thumba/0.0.5/CHANGELOG.md b/incubator/thumba/0.0.5/CHANGELOG.md deleted file mode 100644 index 35afff5898d..00000000000 --- a/incubator/thumba/0.0.5/CHANGELOG.md +++ /dev/null @@ -1,44 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [thumba-0.0.5](https://github.com/truecharts/charts/compare/thumba-0.0.4...thumba-0.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [thumba-0.0.4](https://github.com/truecharts/charts/compare/thumba-0.0.3...thumba-0.0.4) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [thumba-0.0.3](https://github.com/truecharts/charts/compare/thumba-0.0.2...thumba-0.0.3) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [thumba-0.0.2](https://github.com/truecharts/charts/compare/thumba-0.0.1...thumba-0.0.2) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [thumba-0.0.1]thumba-0.0.1 (2022-12-18) - diff --git a/incubator/thumba/0.0.5/Chart.yaml b/incubator/thumba/0.0.5/Chart.yaml deleted file mode 100644 index 7fea3b1f6ab..00000000000 --- a/incubator/thumba/0.0.5/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "0.0.15" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A self hosted Thumbnail generator/finder which creates thumbnails based on folder names and google search results. -home: https://truecharts.org/charts/incubator/thumba -icon: https://truecharts.org/img/hotlink-ok/chart-icons/thumba.png -keywords: - - thumba - - media -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: thumba -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/thumba - - https://github.com/BoKKeR/thumba - - https://hub.docker.com/r/bokker/thumba -type: application -version: 0.0.5 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/thumba/0.0.5/app-changelog.md b/incubator/thumba/0.0.5/app-changelog.md deleted file mode 100644 index c560af8f6a1..00000000000 --- a/incubator/thumba/0.0.5/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [thumba-0.0.5](https://github.com/truecharts/charts/compare/thumba-0.0.4...thumba-0.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/thumba/0.0.5/app-readme.md b/incubator/thumba/0.0.5/app-readme.md deleted file mode 100644 index 00262dce350..00000000000 --- a/incubator/thumba/0.0.5/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A self hosted Thumbnail generator/finder which creates thumbnails based on folder names and google search results. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/thumba](https://truecharts.org/charts/incubator/thumba) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/thumba/0.0.5/questions.yaml b/incubator/thumba/0.0.5/questions.yaml deleted file mode 100644 index f47f6cd3b02..00000000000 --- a/incubator/thumba/0.0.5/questions.yaml +++ /dev/null @@ -1,1944 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: App Configuration - label: Image Secrets - schema: - additional_attrs: true - type: dict - attrs: - - variable: GOOGLE_SEARCH_KEY - label: Google Search Key - schema: - type: string - default: "" - required: true - - variable: GOOGLE_SEARCH_CX - label: Google Search CX - schema: - type: string - default: "" - required: true - private: true - - variable: THUM_KEY_ID - label: Thum Key ID - schema: - type: string - default: "" - required: true - - variable: THUM_KEY_SECRET - label: Thum Key Secret - schema: - type: string - default: "" - required: true - private: true - - variable: env - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: NEXT_PUBLIC_HOST - label: Next Public Host - schema: - type: string - default: "http://localhost" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10598 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Configuration. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: video - label: App Video Storage - description: Stores the Application Video. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/thumba/0.0.6/CHANGELOG.md b/incubator/thumba/0.0.6/CHANGELOG.md new file mode 100644 index 00000000000..d1e9e47eae3 --- /dev/null +++ b/incubator/thumba/0.0.6/CHANGELOG.md @@ -0,0 +1,53 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [thumba-0.0.6](https://github.com/truecharts/charts/compare/thumba-0.0.5...thumba-0.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [thumba-0.0.5](https://github.com/truecharts/charts/compare/thumba-0.0.4...thumba-0.0.5) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [thumba-0.0.4](https://github.com/truecharts/charts/compare/thumba-0.0.3...thumba-0.0.4) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [thumba-0.0.3](https://github.com/truecharts/charts/compare/thumba-0.0.2...thumba-0.0.3) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [thumba-0.0.2](https://github.com/truecharts/charts/compare/thumba-0.0.1...thumba-0.0.2) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [thumba-0.0.1]thumba-0.0.1 (2022-12-18) + diff --git a/incubator/thumba/0.0.6/Chart.yaml b/incubator/thumba/0.0.6/Chart.yaml new file mode 100644 index 00000000000..1e7600a9462 --- /dev/null +++ b/incubator/thumba/0.0.6/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "0.0.15" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A self hosted Thumbnail generator/finder which creates thumbnails based on folder names and google search results. +home: https://truecharts.org/charts/incubator/thumba +icon: https://truecharts.org/img/hotlink-ok/chart-icons/thumba.png +keywords: + - thumba + - media +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: thumba +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/thumba + - https://hub.docker.com/bokker/thumba + - https://github.com/BoKKeR/thumba +type: application +version: 0.0.6 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/traktarr/2.0.8/README.md b/incubator/thumba/0.0.6/README.md similarity index 100% rename from incubator/traktarr/2.0.8/README.md rename to incubator/thumba/0.0.6/README.md diff --git a/incubator/thumba/0.0.6/app-changelog.md b/incubator/thumba/0.0.6/app-changelog.md new file mode 100644 index 00000000000..19c2d5b9c38 --- /dev/null +++ b/incubator/thumba/0.0.6/app-changelog.md @@ -0,0 +1,9 @@ + + +## [thumba-0.0.6](https://github.com/truecharts/charts/compare/thumba-0.0.5...thumba-0.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/thumba/0.0.6/app-readme.md b/incubator/thumba/0.0.6/app-readme.md new file mode 100644 index 00000000000..d230ee4a684 --- /dev/null +++ b/incubator/thumba/0.0.6/app-readme.md @@ -0,0 +1,8 @@ +A self hosted Thumbnail generator/finder which creates thumbnails based on folder names and google search results. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/thumba](https://truecharts.org/charts/incubator/thumba) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/tonido/2.0.7/charts/common-11.1.2.tgz b/incubator/thumba/0.0.6/charts/common-11.1.2.tgz similarity index 100% rename from incubator/tonido/2.0.7/charts/common-11.1.2.tgz rename to incubator/thumba/0.0.6/charts/common-11.1.2.tgz diff --git a/incubator/thumba/0.0.5/ix_values.yaml b/incubator/thumba/0.0.6/ix_values.yaml similarity index 100% rename from incubator/thumba/0.0.5/ix_values.yaml rename to incubator/thumba/0.0.6/ix_values.yaml diff --git a/incubator/thumba/0.0.6/questions.yaml b/incubator/thumba/0.0.6/questions.yaml new file mode 100644 index 00000000000..0e448779f55 --- /dev/null +++ b/incubator/thumba/0.0.6/questions.yaml @@ -0,0 +1,1985 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: App Configuration + label: Image Secrets + schema: + additional_attrs: true + type: dict + attrs: + - variable: GOOGLE_SEARCH_KEY + label: Google Search Key + schema: + type: string + default: "" + required: true + - variable: GOOGLE_SEARCH_CX + label: Google Search CX + schema: + type: string + default: "" + required: true + private: true + - variable: THUM_KEY_ID + label: Thum Key ID + schema: + type: string + default: "" + required: true + - variable: THUM_KEY_SECRET + label: Thum Key Secret + schema: + type: string + default: "" + required: true + private: true + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: NEXT_PUBLIC_HOST + label: Next Public Host + schema: + type: string + default: "http://localhost" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10598 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: video + label: App Video Storage + description: Stores the Application Video. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/thumba/0.0.5/templates/common.yaml b/incubator/thumba/0.0.6/templates/common.yaml similarity index 100% rename from incubator/thumba/0.0.5/templates/common.yaml rename to incubator/thumba/0.0.6/templates/common.yaml diff --git a/incubator/tonido/2.0.7/values.yaml b/incubator/thumba/0.0.6/values.yaml similarity index 100% rename from incubator/tonido/2.0.7/values.yaml rename to incubator/thumba/0.0.6/values.yaml diff --git a/incubator/tonido/2.0.7/CHANGELOG.md b/incubator/tonido/2.0.7/CHANGELOG.md deleted file mode 100644 index 773d2eeeb0f..00000000000 --- a/incubator/tonido/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [tonido-2.0.7](https://github.com/truecharts/charts/compare/tonido-2.0.6...tonido-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [tonido-2.0.6](https://github.com/truecharts/charts/compare/tonido-2.0.5...tonido-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [tonido-2.0.5](https://github.com/truecharts/charts/compare/tonido-2.0.4...tonido-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [tonido-2.0.4](https://github.com/truecharts/charts/compare/tonido-2.0.3...tonido-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [tonido-2.0.3](https://github.com/truecharts/charts/compare/tonido-2.0.2...tonido-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - - - -## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) - - diff --git a/incubator/tonido/2.0.7/Chart.yaml b/incubator/tonido/2.0.7/Chart.yaml deleted file mode 100644 index f5f361bb8f8..00000000000 --- a/incubator/tonido/2.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Tonido Server allows you to access all your files on your computer from a web browser, smartphone, tablet or even DLNA enabled devices. No setup necessary. -home: https://truecharts.org/charts/incubator/tonido -icon: https://truecharts.org/img/hotlink-ok/chart-icons/tonido.png -keywords: - - tonido - - Cloud -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: tonido -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/tonido - - https://registry.hub.docker.com/r/captinsano/tonido/ -type: application -version: 2.0.7 diff --git a/incubator/tonido/2.0.7/app-changelog.md b/incubator/tonido/2.0.7/app-changelog.md deleted file mode 100644 index e05c1fd363f..00000000000 --- a/incubator/tonido/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [tonido-2.0.7](https://github.com/truecharts/charts/compare/tonido-2.0.6...tonido-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/tonido/2.0.7/app-readme.md b/incubator/tonido/2.0.7/app-readme.md deleted file mode 100644 index 8117104db77..00000000000 --- a/incubator/tonido/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Tonido Server allows you to access all your files on your computer from a web browser, smartphone, tablet or even DLNA enabled devices. No setup necessary. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/tonido](https://truecharts.org/charts/incubator/tonido) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/tonido/2.0.7/questions.yaml b/incubator/tonido/2.0.7/questions.yaml deleted file mode 100644 index 089147c269b..00000000000 --- a/incubator/tonido/2.0.7/questions.yaml +++ /dev/null @@ -1,1828 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10001 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: tonido - label: "tonido Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/tonido/2.0.8/CHANGELOG.md b/incubator/tonido/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..9074cd457bb --- /dev/null +++ b/incubator/tonido/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [tonido-2.0.8](https://github.com/truecharts/charts/compare/tonido-2.0.7...tonido-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [tonido-2.0.7](https://github.com/truecharts/charts/compare/tonido-2.0.6...tonido-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [tonido-2.0.6](https://github.com/truecharts/charts/compare/tonido-2.0.5...tonido-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [tonido-2.0.5](https://github.com/truecharts/charts/compare/tonido-2.0.4...tonido-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [tonido-2.0.4](https://github.com/truecharts/charts/compare/tonido-2.0.3...tonido-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [tonido-2.0.3](https://github.com/truecharts/charts/compare/tonido-2.0.2...tonido-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) + + + + +## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) + + + + +## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) + + + + +## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) + + + + +## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) + + + + +## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) + + + + +## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) + + + + +## [tonido-2.0.2](https://github.com/truecharts/charts/compare/tonido-2.0.1...tonido-2.0.2) (2022-11-30) + + + diff --git a/incubator/tonido/2.0.8/Chart.yaml b/incubator/tonido/2.0.8/Chart.yaml new file mode 100644 index 00000000000..95a2aeba19c --- /dev/null +++ b/incubator/tonido/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Tonido Server allows you to access all your files on your computer from a web browser, smartphone, tablet or even DLNA enabled devices. No setup necessary. +home: https://truecharts.org/charts/incubator/tonido +icon: https://truecharts.org/img/hotlink-ok/chart-icons/tonido.png +keywords: + - tonido + - Cloud +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: tonido +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/tonido + - https://hub.docker.com/captinsano/tonido + - https://registry.hub.docker.com/r/captinsano/tonido/ +type: application +version: 2.0.8 diff --git a/incubator/troddit/2.0.8/README.md b/incubator/tonido/2.0.8/README.md similarity index 100% rename from incubator/troddit/2.0.8/README.md rename to incubator/tonido/2.0.8/README.md diff --git a/incubator/tonido/2.0.8/app-changelog.md b/incubator/tonido/2.0.8/app-changelog.md new file mode 100644 index 00000000000..411be663170 --- /dev/null +++ b/incubator/tonido/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [tonido-2.0.8](https://github.com/truecharts/charts/compare/tonido-2.0.7...tonido-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/tonido/2.0.8/app-readme.md b/incubator/tonido/2.0.8/app-readme.md new file mode 100644 index 00000000000..bca2531416a --- /dev/null +++ b/incubator/tonido/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Tonido Server allows you to access all your files on your computer from a web browser, smartphone, tablet or even DLNA enabled devices. No setup necessary. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/tonido](https://truecharts.org/charts/incubator/tonido) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/traktarr/2.0.8/charts/common-11.1.2.tgz b/incubator/tonido/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/traktarr/2.0.8/charts/common-11.1.2.tgz rename to incubator/tonido/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/tonido/2.0.7/ix_values.yaml b/incubator/tonido/2.0.8/ix_values.yaml similarity index 100% rename from incubator/tonido/2.0.7/ix_values.yaml rename to incubator/tonido/2.0.8/ix_values.yaml diff --git a/incubator/tonido/2.0.8/questions.yaml b/incubator/tonido/2.0.8/questions.yaml new file mode 100644 index 00000000000..b7422672e5b --- /dev/null +++ b/incubator/tonido/2.0.8/questions.yaml @@ -0,0 +1,1869 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10001 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: tonido + label: "tonido Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/tonido/2.0.7/templates/common.yaml b/incubator/tonido/2.0.8/templates/common.yaml similarity index 100% rename from incubator/tonido/2.0.7/templates/common.yaml rename to incubator/tonido/2.0.8/templates/common.yaml diff --git a/incubator/traktarr/2.0.8/values.yaml b/incubator/tonido/2.0.8/values.yaml similarity index 100% rename from incubator/traktarr/2.0.8/values.yaml rename to incubator/tonido/2.0.8/values.yaml diff --git a/incubator/traktarr/2.0.8/CHANGELOG.md b/incubator/traktarr/2.0.8/CHANGELOG.md deleted file mode 100644 index 7e619413087..00000000000 --- a/incubator/traktarr/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [traktarr-2.0.8](https://github.com/truecharts/charts/compare/traktarr-2.0.7...traktarr-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [traktarr-2.0.7](https://github.com/truecharts/charts/compare/traktarr-2.0.6...traktarr-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [traktarr-2.0.6](https://github.com/truecharts/charts/compare/traktarr-2.0.5...traktarr-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [traktarr-2.0.5](https://github.com/truecharts/charts/compare/traktarr-2.0.4...traktarr-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [traktarr-2.0.4](https://github.com/truecharts/charts/compare/traktarr-2.0.3...traktarr-2.0.4) (2022-12-18) - - - - -## [traktarr-2.0.3](https://github.com/truecharts/charts/compare/traktarr-2.0.2...traktarr-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - - - -## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) - - diff --git a/incubator/traktarr/2.0.8/Chart.yaml b/incubator/traktarr/2.0.8/Chart.yaml deleted file mode 100644 index fdf57baae27..00000000000 --- a/incubator/traktarr/2.0.8/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Script to add new series and movies to Sonarr/Radarr based on Trakt lists. -home: https://truecharts.org/charts/incubator/traktarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/traktarr.png -keywords: - - traktarr - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: traktarr -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/traktarr - - https://github.com/l3uddz/traktarr - - https://hub.docker.com/r/eafxx/traktarr -type: application -version: 2.0.8 -annotations: - truecharts.org/catagories: | - - Tools-Utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/traktarr/2.0.8/app-changelog.md b/incubator/traktarr/2.0.8/app-changelog.md deleted file mode 100644 index 7b7e789412b..00000000000 --- a/incubator/traktarr/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [traktarr-2.0.8](https://github.com/truecharts/charts/compare/traktarr-2.0.7...traktarr-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/traktarr/2.0.8/app-readme.md b/incubator/traktarr/2.0.8/app-readme.md deleted file mode 100644 index 479f490a900..00000000000 --- a/incubator/traktarr/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Script to add new series and movies to Sonarr/Radarr based on Trakt lists. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/traktarr](https://truecharts.org/charts/incubator/traktarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/traktarr/2.0.8/questions.yaml b/incubator/traktarr/2.0.8/questions.yaml deleted file mode 100644 index 9b8429444b7..00000000000 --- a/incubator/traktarr/2.0.8/questions.yaml +++ /dev/null @@ -1,1548 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: trakrarr - group: App Configuration - label: Traktarr Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: delay - label: Delay - description: (FLOAT) Seconds between each add request to ARR services. - schema: - type: string - default: "2.5" - valid_charts: ^\d+\.\d+$ - - variable: sort - label: Sort - description: Votes or rating or release, sort list to process - schema: - type: string - default: "rating" - enum: - - value: "rating" - description: "Rating" - - value: "votes" - description: "Votes" - - value: "release" - description: "Release" - - variable: nosearch - label: No Search - description: Disable search when adding to ARR services. - schema: - type: boolean - default: true - - variable: notifications - label: Notifications - description: Disable notifications - schema: - type: boolean - default: true - - variable: blackist - label: Black List - description: Enables/disables the blacklist when running app. - schema: - type: boolean - default: true - - variable: runnow - label: Run Now - description: Do a first run immediately without waiting. - schema: - type: boolean - default: false - - variable: skipupdate - label: Skip Update - description: Skip auto-update - schema: - type: boolean - default: true - - variable: app_branch - label: App Branch - description: GitHub branch. - schema: - type: string - default: 'master' - enum: - - value: "master" - description: "Master" - - value: "develop" - description: "Develop" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Config. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/traktarr/2.0.9/CHANGELOG.md b/incubator/traktarr/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..484a09a52fd --- /dev/null +++ b/incubator/traktarr/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [traktarr-2.0.9](https://github.com/truecharts/charts/compare/traktarr-2.0.8...traktarr-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [traktarr-2.0.8](https://github.com/truecharts/charts/compare/traktarr-2.0.7...traktarr-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [traktarr-2.0.7](https://github.com/truecharts/charts/compare/traktarr-2.0.6...traktarr-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [traktarr-2.0.6](https://github.com/truecharts/charts/compare/traktarr-2.0.5...traktarr-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [traktarr-2.0.5](https://github.com/truecharts/charts/compare/traktarr-2.0.4...traktarr-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [traktarr-2.0.4](https://github.com/truecharts/charts/compare/traktarr-2.0.3...traktarr-2.0.4) (2022-12-18) + + + + +## [traktarr-2.0.3](https://github.com/truecharts/charts/compare/traktarr-2.0.2...traktarr-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) + + + + +## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) + + + + +## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) + + + + +## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) + + + + +## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) + + + + +## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) + + + + +## [traktarr-2.0.2](https://github.com/truecharts/charts/compare/traktarr-2.0.1...traktarr-2.0.2) (2022-11-30) + + + diff --git a/incubator/traktarr/2.0.9/Chart.yaml b/incubator/traktarr/2.0.9/Chart.yaml new file mode 100644 index 00000000000..b63b719aff7 --- /dev/null +++ b/incubator/traktarr/2.0.9/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Script to add new series and movies to Sonarr/Radarr based on Trakt lists. +home: https://truecharts.org/charts/incubator/traktarr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/traktarr.png +keywords: + - traktarr + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: traktarr +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/traktarr + - https://hub.docker.com/eafxx/traktarr + - https://github.com/l3uddz/traktarr +type: application +version: 2.0.9 +annotations: + truecharts.org/catagories: | + - Tools-Utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/tubearchivist-redisjson/2.0.10/README.md b/incubator/traktarr/2.0.9/README.md similarity index 100% rename from incubator/tubearchivist-redisjson/2.0.10/README.md rename to incubator/traktarr/2.0.9/README.md diff --git a/incubator/traktarr/2.0.9/app-changelog.md b/incubator/traktarr/2.0.9/app-changelog.md new file mode 100644 index 00000000000..a0af94bceac --- /dev/null +++ b/incubator/traktarr/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [traktarr-2.0.9](https://github.com/truecharts/charts/compare/traktarr-2.0.8...traktarr-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/traktarr/2.0.9/app-readme.md b/incubator/traktarr/2.0.9/app-readme.md new file mode 100644 index 00000000000..9ad71f1cdf0 --- /dev/null +++ b/incubator/traktarr/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +Script to add new series and movies to Sonarr/Radarr based on Trakt lists. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/traktarr](https://truecharts.org/charts/incubator/traktarr) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/troddit/2.0.8/charts/common-11.1.2.tgz b/incubator/traktarr/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/troddit/2.0.8/charts/common-11.1.2.tgz rename to incubator/traktarr/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/traktarr/2.0.8/ix_values.yaml b/incubator/traktarr/2.0.9/ix_values.yaml similarity index 100% rename from incubator/traktarr/2.0.8/ix_values.yaml rename to incubator/traktarr/2.0.9/ix_values.yaml diff --git a/incubator/traktarr/2.0.9/questions.yaml b/incubator/traktarr/2.0.9/questions.yaml new file mode 100644 index 00000000000..9384a0094cb --- /dev/null +++ b/incubator/traktarr/2.0.9/questions.yaml @@ -0,0 +1,1548 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: trakrarr + group: App Configuration + label: Traktarr Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: delay + label: Delay + description: (FLOAT) Seconds between each add request to ARR services. + schema: + type: string + default: "2.5" + valid_charts: ^\d+\.\d+$ + - variable: sort + label: Sort + description: Votes or rating or release, sort list to process + schema: + type: string + default: "rating" + enum: + - value: "rating" + description: "Rating" + - value: "votes" + description: "Votes" + - value: "release" + description: "Release" + - variable: nosearch + label: No Search + description: Disable search when adding to ARR services. + schema: + type: boolean + default: true + - variable: notifications + label: Notifications + description: Disable notifications + schema: + type: boolean + default: true + - variable: blackist + label: Black List + description: Enables/disables the blacklist when running app. + schema: + type: boolean + default: true + - variable: runnow + label: Run Now + description: Do a first run immediately without waiting. + schema: + type: boolean + default: false + - variable: skipupdate + label: Skip Update + description: Skip auto-update + schema: + type: boolean + default: true + - variable: app_branch + label: App Branch + description: GitHub branch. + schema: + type: string + default: 'master' + enum: + - value: "master" + description: "Master" + - value: "develop" + description: "Develop" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Config. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/traktarr/2.0.8/templates/common.yaml b/incubator/traktarr/2.0.9/templates/common.yaml similarity index 100% rename from incubator/traktarr/2.0.8/templates/common.yaml rename to incubator/traktarr/2.0.9/templates/common.yaml diff --git a/incubator/troddit/2.0.8/values.yaml b/incubator/traktarr/2.0.9/values.yaml similarity index 100% rename from incubator/troddit/2.0.8/values.yaml rename to incubator/traktarr/2.0.9/values.yaml diff --git a/incubator/troddit/2.0.8/CHANGELOG.md b/incubator/troddit/2.0.8/CHANGELOG.md deleted file mode 100644 index 2441abb981d..00000000000 --- a/incubator/troddit/2.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [troddit-2.0.8](https://github.com/truecharts/charts/compare/troddit-2.0.7...troddit-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [troddit-2.0.7](https://github.com/truecharts/charts/compare/troddit-2.0.6...troddit-2.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [troddit-2.0.6](https://github.com/truecharts/charts/compare/troddit-2.0.5...troddit-2.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [troddit-2.0.5](https://github.com/truecharts/charts/compare/troddit-2.0.4...troddit-2.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [troddit-2.0.4](https://github.com/truecharts/charts/compare/troddit-2.0.3...troddit-2.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - - - -## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) - - diff --git a/incubator/troddit/2.0.8/Chart.yaml b/incubator/troddit/2.0.8/Chart.yaml deleted file mode 100644 index 5eaf8f12054..00000000000 --- a/incubator/troddit/2.0.8/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Network-Web -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A web client for Reddit -home: https://truecharts.org/charts/incubator/troddit -icon: https://truecharts.org/img/hotlink-ok/chart-icons/troddit.png -keywords: - - troddit - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: troddit -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/troddit - - https://github.com/burhan-syed/troddit - - https://hub.docker.com/r/bsyed/troddit -type: application -version: 2.0.8 diff --git a/incubator/troddit/2.0.8/app-changelog.md b/incubator/troddit/2.0.8/app-changelog.md deleted file mode 100644 index 3fe4ffafbcc..00000000000 --- a/incubator/troddit/2.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [troddit-2.0.8](https://github.com/truecharts/charts/compare/troddit-2.0.7...troddit-2.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/troddit/2.0.8/app-readme.md b/incubator/troddit/2.0.8/app-readme.md deleted file mode 100644 index 8293b33ee76..00000000000 --- a/incubator/troddit/2.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A web client for Reddit - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/troddit](https://truecharts.org/charts/incubator/troddit) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/troddit/2.0.8/questions.yaml b/incubator/troddit/2.0.8/questions.yaml deleted file mode 100644 index b2d4896b874..00000000000 --- a/incubator/troddit/2.0.8/questions.yaml +++ /dev/null @@ -1,1788 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: CLIENT_ID - label: "CLIENT_ID" - description: "Client ID generated on Reddit" - schema: - type: string - default: "" - - variable: CLIENT_SECRET - label: "CLIENT_SECRET" - description: "Client Secret generated on Reddit" - schema: - type: string - default: "" - - variable: REDDIT_REDIRECT - label: "REDDIT_REDIRECT" - description: "Reddit Redirection" - schema: - type: string - default: "" - - variable: NEXTAUTH_SECRET - label: "NEXTAUTH_SECRET" - description: "Nextauth Secret - Generated by running " - schema: - type: string - default: "" - - variable: NEXTAUTH_URL - label: "NEXTAUTH_URL" - description: "Container Variable NEXTAUTHURL" - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/troddit/2.0.9/CHANGELOG.md b/incubator/troddit/2.0.9/CHANGELOG.md new file mode 100644 index 00000000000..c6c5c59b473 --- /dev/null +++ b/incubator/troddit/2.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [troddit-2.0.9](https://github.com/truecharts/charts/compare/troddit-2.0.8...troddit-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [troddit-2.0.8](https://github.com/truecharts/charts/compare/troddit-2.0.7...troddit-2.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [troddit-2.0.7](https://github.com/truecharts/charts/compare/troddit-2.0.6...troddit-2.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [troddit-2.0.6](https://github.com/truecharts/charts/compare/troddit-2.0.5...troddit-2.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [troddit-2.0.5](https://github.com/truecharts/charts/compare/troddit-2.0.4...troddit-2.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [troddit-2.0.4](https://github.com/truecharts/charts/compare/troddit-2.0.3...troddit-2.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) + + + + +## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) + + + + +## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) + + + + +## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) + + + + +## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) + + + + +## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) + + + + +## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) + + + + +## [troddit-2.0.3](https://github.com/truecharts/charts/compare/troddit-2.0.2...troddit-2.0.3) (2022-11-30) + + + diff --git a/incubator/troddit/2.0.9/Chart.yaml b/incubator/troddit/2.0.9/Chart.yaml new file mode 100644 index 00000000000..d2483a61a25 --- /dev/null +++ b/incubator/troddit/2.0.9/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Network-Web +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A web client for Reddit +home: https://truecharts.org/charts/incubator/troddit +icon: https://truecharts.org/img/hotlink-ok/chart-icons/troddit.png +keywords: + - troddit + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: troddit +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/troddit + - https://hub.docker.com/bsyed/troddit + - https://github.com/burhan-syed/troddit +type: application +version: 2.0.9 diff --git a/incubator/universal-media-server/2.0.12/README.md b/incubator/troddit/2.0.9/README.md similarity index 100% rename from incubator/universal-media-server/2.0.12/README.md rename to incubator/troddit/2.0.9/README.md diff --git a/incubator/troddit/2.0.9/app-changelog.md b/incubator/troddit/2.0.9/app-changelog.md new file mode 100644 index 00000000000..6fa62be9b2e --- /dev/null +++ b/incubator/troddit/2.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [troddit-2.0.9](https://github.com/truecharts/charts/compare/troddit-2.0.8...troddit-2.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/troddit/2.0.9/app-readme.md b/incubator/troddit/2.0.9/app-readme.md new file mode 100644 index 00000000000..60f15deb732 --- /dev/null +++ b/incubator/troddit/2.0.9/app-readme.md @@ -0,0 +1,8 @@ +A web client for Reddit + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/troddit](https://truecharts.org/charts/incubator/troddit) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/tubearchivist-redisjson/2.0.10/charts/common-11.1.2.tgz b/incubator/troddit/2.0.9/charts/common-11.1.2.tgz similarity index 100% rename from incubator/tubearchivist-redisjson/2.0.10/charts/common-11.1.2.tgz rename to incubator/troddit/2.0.9/charts/common-11.1.2.tgz diff --git a/incubator/troddit/2.0.8/ix_values.yaml b/incubator/troddit/2.0.9/ix_values.yaml similarity index 100% rename from incubator/troddit/2.0.8/ix_values.yaml rename to incubator/troddit/2.0.9/ix_values.yaml diff --git a/incubator/troddit/2.0.9/questions.yaml b/incubator/troddit/2.0.9/questions.yaml new file mode 100644 index 00000000000..59b0c7d0722 --- /dev/null +++ b/incubator/troddit/2.0.9/questions.yaml @@ -0,0 +1,1829 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: CLIENT_ID + label: "CLIENT_ID" + description: "Client ID generated on Reddit" + schema: + type: string + default: "" + - variable: CLIENT_SECRET + label: "CLIENT_SECRET" + description: "Client Secret generated on Reddit" + schema: + type: string + default: "" + - variable: REDDIT_REDIRECT + label: "REDDIT_REDIRECT" + description: "Reddit Redirection" + schema: + type: string + default: "" + - variable: NEXTAUTH_SECRET + label: "NEXTAUTH_SECRET" + description: "Nextauth Secret - Generated by running " + schema: + type: string + default: "" + - variable: NEXTAUTH_URL + label: "NEXTAUTH_URL" + description: "Container Variable NEXTAUTHURL" + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/troddit/2.0.8/templates/common.yaml b/incubator/troddit/2.0.9/templates/common.yaml similarity index 100% rename from incubator/troddit/2.0.8/templates/common.yaml rename to incubator/troddit/2.0.9/templates/common.yaml diff --git a/incubator/tubearchivist-redisjson/2.0.10/values.yaml b/incubator/troddit/2.0.9/values.yaml similarity index 100% rename from incubator/tubearchivist-redisjson/2.0.10/values.yaml rename to incubator/troddit/2.0.9/values.yaml diff --git a/incubator/tubearchivist-redisjson/2.0.10/CHANGELOG.md b/incubator/tubearchivist-redisjson/2.0.10/CHANGELOG.md deleted file mode 100644 index 6237f8a3ce0..00000000000 --- a/incubator/tubearchivist-redisjson/2.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [tubearchivist-redisjson-2.0.10](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.9...tubearchivist-redisjson-2.0.10) (2022-12-28) - -### Chore - -- update container image tccr.io/truecharts/tubearchivist-redisjson to latest - - - - -## [tubearchivist-redisjson-2.0.9](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.8...tubearchivist-redisjson-2.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [tubearchivist-redisjson-2.0.8](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.7...tubearchivist-redisjson-2.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [tubearchivist-redisjson-2.0.7](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.6...tubearchivist-redisjson-2.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [tubearchivist-redisjson-2.0.6](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.5...tubearchivist-redisjson-2.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [tubearchivist-redisjson-2.0.5](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.4...tubearchivist-redisjson-2.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) - - - - -## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) - - - - -## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) - - - - -## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) - - - - -## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) - - - - -## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) - - - - -## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) - - - - -## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) - - - diff --git a/incubator/tubearchivist-redisjson/2.0.10/Chart.yaml b/incubator/tubearchivist-redisjson/2.0.10/Chart.yaml deleted file mode 100644 index aa125fd8ad2..00000000000 --- a/incubator/tubearchivist-redisjson/2.0.10/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaServer-Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: 'This is a dependancy Chart for the application "TubeArchivist"' -home: https://truecharts.org/charts/incubator/tubearchivist-redisjson -icon: https://truecharts.org/img/hotlink-ok/chart-icons/tubearchivist-redisjson.png -keywords: - - tubearchivist-redisjson - - MediaServer-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: tubearchivist-redisjson -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/tubearchivist-redisjson - - https://github.com/RedisJSON/RedisJSON - - https://hub.docker.com/r/redislabs/rejson/ -type: application -version: 2.0.10 diff --git a/incubator/tubearchivist-redisjson/2.0.10/app-changelog.md b/incubator/tubearchivist-redisjson/2.0.10/app-changelog.md deleted file mode 100644 index 703ab620477..00000000000 --- a/incubator/tubearchivist-redisjson/2.0.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [tubearchivist-redisjson-2.0.10](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.9...tubearchivist-redisjson-2.0.10) (2022-12-28) - -### Chore - -- update container image tccr.io/truecharts/tubearchivist-redisjson to latest - - \ No newline at end of file diff --git a/incubator/tubearchivist-redisjson/2.0.10/app-readme.md b/incubator/tubearchivist-redisjson/2.0.10/app-readme.md deleted file mode 100644 index 4b073414b71..00000000000 --- a/incubator/tubearchivist-redisjson/2.0.10/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is a dependancy Chart for the application "TubeArchivist" - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/tubearchivist-redisjson](https://truecharts.org/charts/incubator/tubearchivist-redisjson) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/tubearchivist-redisjson/2.0.10/questions.yaml b/incubator/tubearchivist-redisjson/2.0.10/questions.yaml deleted file mode 100644 index 65d28cd6c03..00000000000 --- a/incubator/tubearchivist-redisjson/2.0.10/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 6379 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Container Path data" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/tubearchivist-redisjson/2.0.11/CHANGELOG.md b/incubator/tubearchivist-redisjson/2.0.11/CHANGELOG.md new file mode 100644 index 00000000000..56d93be9789 --- /dev/null +++ b/incubator/tubearchivist-redisjson/2.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [tubearchivist-redisjson-2.0.11](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.10...tubearchivist-redisjson-2.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [tubearchivist-redisjson-2.0.10](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.9...tubearchivist-redisjson-2.0.10) (2022-12-28) + +### Chore + +- update container image tccr.io/truecharts/tubearchivist-redisjson to latest + + + + +## [tubearchivist-redisjson-2.0.9](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.8...tubearchivist-redisjson-2.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [tubearchivist-redisjson-2.0.8](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.7...tubearchivist-redisjson-2.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [tubearchivist-redisjson-2.0.7](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.6...tubearchivist-redisjson-2.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [tubearchivist-redisjson-2.0.6](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.5...tubearchivist-redisjson-2.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [tubearchivist-redisjson-2.0.5](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.4...tubearchivist-redisjson-2.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) + + + + +## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) + + + + +## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) + + + + +## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) + + + + +## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) + + + + +## [tubearchivist-redisjson-2.0.4](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.3...tubearchivist-redisjson-2.0.4) (2022-11-30) + + + + diff --git a/incubator/tubearchivist-redisjson/2.0.11/Chart.yaml b/incubator/tubearchivist-redisjson/2.0.11/Chart.yaml new file mode 100644 index 00000000000..7adb591a6bb --- /dev/null +++ b/incubator/tubearchivist-redisjson/2.0.11/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaServer-Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: 'This is a dependancy Chart for the application "TubeArchivist"' +home: https://truecharts.org/charts/incubator/tubearchivist-redisjson +icon: https://truecharts.org/img/hotlink-ok/chart-icons/tubearchivist-redisjson.png +keywords: + - tubearchivist-redisjson + - MediaServer-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: tubearchivist-redisjson +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/tubearchivist-redisjson + - https://hub.docker.com/redislabs/rejson + - https://github.com/RedisJSON/RedisJSON +type: application +version: 2.0.11 diff --git a/incubator/vaulthunters/2.0.7/README.md b/incubator/tubearchivist-redisjson/2.0.11/README.md similarity index 100% rename from incubator/vaulthunters/2.0.7/README.md rename to incubator/tubearchivist-redisjson/2.0.11/README.md diff --git a/incubator/tubearchivist-redisjson/2.0.11/app-changelog.md b/incubator/tubearchivist-redisjson/2.0.11/app-changelog.md new file mode 100644 index 00000000000..8ccc3145b2a --- /dev/null +++ b/incubator/tubearchivist-redisjson/2.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [tubearchivist-redisjson-2.0.11](https://github.com/truecharts/charts/compare/tubearchivist-redisjson-2.0.10...tubearchivist-redisjson-2.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/tubearchivist-redisjson/2.0.11/app-readme.md b/incubator/tubearchivist-redisjson/2.0.11/app-readme.md new file mode 100644 index 00000000000..ceb1a18c11c --- /dev/null +++ b/incubator/tubearchivist-redisjson/2.0.11/app-readme.md @@ -0,0 +1,8 @@ +This is a dependancy Chart for the application "TubeArchivist" + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/tubearchivist-redisjson](https://truecharts.org/charts/incubator/tubearchivist-redisjson) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/universal-media-server/2.0.12/charts/common-11.1.2.tgz b/incubator/tubearchivist-redisjson/2.0.11/charts/common-11.1.2.tgz similarity index 100% rename from incubator/universal-media-server/2.0.12/charts/common-11.1.2.tgz rename to incubator/tubearchivist-redisjson/2.0.11/charts/common-11.1.2.tgz diff --git a/incubator/tubearchivist-redisjson/2.0.10/ix_values.yaml b/incubator/tubearchivist-redisjson/2.0.11/ix_values.yaml similarity index 100% rename from incubator/tubearchivist-redisjson/2.0.10/ix_values.yaml rename to incubator/tubearchivist-redisjson/2.0.11/ix_values.yaml diff --git a/incubator/tubearchivist-redisjson/2.0.11/questions.yaml b/incubator/tubearchivist-redisjson/2.0.11/questions.yaml new file mode 100644 index 00000000000..9cca6c7412d --- /dev/null +++ b/incubator/tubearchivist-redisjson/2.0.11/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6379 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Container Path data" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/tubearchivist-redisjson/2.0.10/templates/common.yaml b/incubator/tubearchivist-redisjson/2.0.11/templates/common.yaml similarity index 100% rename from incubator/tubearchivist-redisjson/2.0.10/templates/common.yaml rename to incubator/tubearchivist-redisjson/2.0.11/templates/common.yaml diff --git a/incubator/universal-media-server/2.0.12/values.yaml b/incubator/tubearchivist-redisjson/2.0.11/values.yaml similarity index 100% rename from incubator/universal-media-server/2.0.12/values.yaml rename to incubator/tubearchivist-redisjson/2.0.11/values.yaml diff --git a/incubator/universal-media-server/2.0.12/CHANGELOG.md b/incubator/universal-media-server/2.0.12/CHANGELOG.md deleted file mode 100644 index 04b8701fb23..00000000000 --- a/incubator/universal-media-server/2.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [universal-media-server-2.0.12](https://github.com/truecharts/charts/compare/universal-media-server-2.0.11...universal-media-server-2.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/universal-media-server to latest - - - - -## [universal-media-server-2.0.11](https://github.com/truecharts/charts/compare/universal-media-server-2.0.10...universal-media-server-2.0.11) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/universal-media-server to latest - - - - -## [universal-media-server-2.0.10](https://github.com/truecharts/charts/compare/universal-media-server-2.0.9...universal-media-server-2.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [universal-media-server-2.0.9](https://github.com/truecharts/charts/compare/universal-media-server-2.0.8...universal-media-server-2.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - update container image tccr.io/truecharts/universal-media-server to latest ([#5804](https://github.com/truecharts/charts/issues/5804)) - - - - -## [universal-media-server-2.0.8](https://github.com/truecharts/charts/compare/universal-media-server-2.0.7...universal-media-server-2.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [universal-media-server-2.0.7](https://github.com/truecharts/charts/compare/universal-media-server-2.0.6...universal-media-server-2.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [universal-media-server-2.0.6](https://github.com/truecharts/charts/compare/universal-media-server-2.0.5...universal-media-server-2.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [universal-media-server-2.0.5](https://github.com/truecharts/charts/compare/universal-media-server-2.0.3...universal-media-server-2.0.5) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/universal-media-server to latest - - - - -## [universal-media-server-2.0.5](https://github.com/truecharts/charts/compare/universal-media-server-2.0.3...universal-media-server-2.0.5) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/universal-media-server to latest - - - - -## [universal-media-server-2.0.5](https://github.com/truecharts/charts/compare/universal-media-server-2.0.3...universal-media-server-2.0.5) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/universal-media-server to latest - - - - -## [universal-media-server-2.0.5](https://github.com/truecharts/charts/compare/universal-media-server-2.0.3...universal-media-server-2.0.5) (2022-11-30) - diff --git a/incubator/universal-media-server/2.0.12/Chart.yaml b/incubator/universal-media-server/2.0.12/Chart.yaml deleted file mode 100644 index 591ecc70c00..00000000000 --- a/incubator/universal-media-server/2.0.12/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: universal-media-server -version: 2.0.12 -appVersion: "latest" -description: "Universal Media Server is a DLNA-compliant UPnP Media Server. It is capable of sharing video, audio and images between most modern devices. It was originally based on PS3 Media Server by shagrath, in order to ensure greater stability and file-compatibility." -type: application -deprecated: false -home: https://truecharts.org/charts/incubator/universal-media-server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/universal-media-server.png -keywords: - - universal-media-server - - MediaServer-Video - - MediaServer-Music - - MediaServer-Photos -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/universal-media-server - - https://www.universalmediaserver.com/ - - https://hub.docker.com/r/universalmediaserver/ums -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - # condition: -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - MediaServer-Video - - MediaServer-Music - - MediaServer-Photos - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/universal-media-server/2.0.12/app-changelog.md b/incubator/universal-media-server/2.0.12/app-changelog.md deleted file mode 100644 index 6e635da5db4..00000000000 --- a/incubator/universal-media-server/2.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [universal-media-server-2.0.12](https://github.com/truecharts/charts/compare/universal-media-server-2.0.11...universal-media-server-2.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/universal-media-server to latest - - \ No newline at end of file diff --git a/incubator/universal-media-server/2.0.13/CHANGELOG.md b/incubator/universal-media-server/2.0.13/CHANGELOG.md new file mode 100644 index 00000000000..d0f031655dd --- /dev/null +++ b/incubator/universal-media-server/2.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [universal-media-server-2.0.13](https://github.com/truecharts/charts/compare/universal-media-server-2.0.12...universal-media-server-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [universal-media-server-2.0.12](https://github.com/truecharts/charts/compare/universal-media-server-2.0.11...universal-media-server-2.0.12) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/universal-media-server to latest + + + + +## [universal-media-server-2.0.11](https://github.com/truecharts/charts/compare/universal-media-server-2.0.10...universal-media-server-2.0.11) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/universal-media-server to latest + + + + +## [universal-media-server-2.0.10](https://github.com/truecharts/charts/compare/universal-media-server-2.0.9...universal-media-server-2.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [universal-media-server-2.0.9](https://github.com/truecharts/charts/compare/universal-media-server-2.0.8...universal-media-server-2.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + - update container image tccr.io/truecharts/universal-media-server to latest ([#5804](https://github.com/truecharts/charts/issues/5804)) + + + + +## [universal-media-server-2.0.8](https://github.com/truecharts/charts/compare/universal-media-server-2.0.7...universal-media-server-2.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [universal-media-server-2.0.7](https://github.com/truecharts/charts/compare/universal-media-server-2.0.6...universal-media-server-2.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [universal-media-server-2.0.6](https://github.com/truecharts/charts/compare/universal-media-server-2.0.5...universal-media-server-2.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [universal-media-server-2.0.5](https://github.com/truecharts/charts/compare/universal-media-server-2.0.3...universal-media-server-2.0.5) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/universal-media-server to latest + + + + +## [universal-media-server-2.0.5](https://github.com/truecharts/charts/compare/universal-media-server-2.0.3...universal-media-server-2.0.5) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/universal-media-server to latest + + + + +## [universal-media-server-2.0.5](https://github.com/truecharts/charts/compare/universal-media-server-2.0.3...universal-media-server-2.0.5) (2022-11-30) + diff --git a/incubator/universal-media-server/2.0.13/Chart.yaml b/incubator/universal-media-server/2.0.13/Chart.yaml new file mode 100644 index 00000000000..e801684c94d --- /dev/null +++ b/incubator/universal-media-server/2.0.13/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: universal-media-server +version: 2.0.13 +appVersion: "latest" +description: "Universal Media Server is a DLNA-compliant UPnP Media Server. It is capable of sharing video, audio and images between most modern devices. It was originally based on PS3 Media Server by shagrath, in order to ensure greater stability and file-compatibility." +type: application +deprecated: false +home: https://truecharts.org/charts/incubator/universal-media-server +icon: https://truecharts.org/img/hotlink-ok/chart-icons/universal-media-server.png +keywords: + - universal-media-server + - MediaServer-Video + - MediaServer-Music + - MediaServer-Photos +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/universal-media-server + - https://hub.docker.com/universalmediaserver/ums + - https://www.universalmediaserver.com/ +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - MediaServer-Video + - MediaServer-Music + - MediaServer-Photos + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/vertex/2.0.16/README.md b/incubator/universal-media-server/2.0.13/README.md similarity index 100% rename from incubator/vertex/2.0.16/README.md rename to incubator/universal-media-server/2.0.13/README.md diff --git a/incubator/universal-media-server/2.0.13/app-changelog.md b/incubator/universal-media-server/2.0.13/app-changelog.md new file mode 100644 index 00000000000..6002def3638 --- /dev/null +++ b/incubator/universal-media-server/2.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [universal-media-server-2.0.13](https://github.com/truecharts/charts/compare/universal-media-server-2.0.12...universal-media-server-2.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/universal-media-server/2.0.12/app-readme.md b/incubator/universal-media-server/2.0.13/app-readme.md similarity index 100% rename from incubator/universal-media-server/2.0.12/app-readme.md rename to incubator/universal-media-server/2.0.13/app-readme.md diff --git a/incubator/vaulthunters/2.0.7/charts/common-11.1.2.tgz b/incubator/universal-media-server/2.0.13/charts/common-11.1.2.tgz similarity index 100% rename from incubator/vaulthunters/2.0.7/charts/common-11.1.2.tgz rename to incubator/universal-media-server/2.0.13/charts/common-11.1.2.tgz diff --git a/incubator/universal-media-server/2.0.12/ix_values.yaml b/incubator/universal-media-server/2.0.13/ix_values.yaml similarity index 100% rename from incubator/universal-media-server/2.0.12/ix_values.yaml rename to incubator/universal-media-server/2.0.13/ix_values.yaml diff --git a/incubator/universal-media-server/2.0.12/questions.yaml b/incubator/universal-media-server/2.0.13/questions.yaml similarity index 100% rename from incubator/universal-media-server/2.0.12/questions.yaml rename to incubator/universal-media-server/2.0.13/questions.yaml diff --git a/incubator/universal-media-server/2.0.12/templates/common.yaml b/incubator/universal-media-server/2.0.13/templates/common.yaml similarity index 100% rename from incubator/universal-media-server/2.0.12/templates/common.yaml rename to incubator/universal-media-server/2.0.13/templates/common.yaml diff --git a/incubator/vaulthunters/2.0.7/values.yaml b/incubator/universal-media-server/2.0.13/values.yaml similarity index 100% rename from incubator/vaulthunters/2.0.7/values.yaml rename to incubator/universal-media-server/2.0.13/values.yaml diff --git a/incubator/vaulthunters/2.0.7/CHANGELOG.md b/incubator/vaulthunters/2.0.7/CHANGELOG.md deleted file mode 100644 index bee429d0be9..00000000000 --- a/incubator/vaulthunters/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [vaulthunters-2.0.7](https://github.com/truecharts/charts/compare/vaulthunters-2.0.6...vaulthunters-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [vaulthunters-2.0.6](https://github.com/truecharts/charts/compare/vaulthunters-2.0.5...vaulthunters-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [vaulthunters-2.0.5](https://github.com/truecharts/charts/compare/vaulthunters-2.0.4...vaulthunters-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [vaulthunters-2.0.4](https://github.com/truecharts/charts/compare/vaulthunters-2.0.3...vaulthunters-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [vaulthunters-2.0.3](https://github.com/truecharts/charts/compare/vaulthunters-2.0.2...vaulthunters-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - - - -## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) - - diff --git a/incubator/vaulthunters/2.0.7/Chart.yaml b/incubator/vaulthunters/2.0.7/Chart.yaml deleted file mode 100644 index 7a579c4a358..00000000000 --- a/incubator/vaulthunters/2.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - GameServers -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Vault Hunters - 1.13.4 Modded Minecraft Server[br][br][b]Vault Hunters - 1.13.4[/b][br]Level up, loot the vaults and defeat the bosses to collect 16 artifacts![br][br]Setup:[br][li]You must accept the EULA by setting the [b]EULA[/b] variable to [span style='color: #00E800;']true[/span] or the install will fail.[br]Optional:[br][li]You can setup a comma separated list of players who will have admin privileges in game by setting [b]OPS[/b]" -home: https://truecharts.org/charts/incubator/vaulthunters -icon: https://truecharts.org/img/hotlink-ok/chart-icons/vaulthunters.png -keywords: - - vaulthunters - - GameServers -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: vaulthunters -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/vaulthunters - - https://vaulthunters.gg - - https://hub.docker.com/repository/docker/goobaroo/vaulthunters -type: application -version: 2.0.7 diff --git a/incubator/vaulthunters/2.0.7/app-changelog.md b/incubator/vaulthunters/2.0.7/app-changelog.md deleted file mode 100644 index 8e68dbaaaa6..00000000000 --- a/incubator/vaulthunters/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [vaulthunters-2.0.7](https://github.com/truecharts/charts/compare/vaulthunters-2.0.6...vaulthunters-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/vaulthunters/2.0.7/app-readme.md b/incubator/vaulthunters/2.0.7/app-readme.md deleted file mode 100644 index 9f9482ad66c..00000000000 --- a/incubator/vaulthunters/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Vault Hunters - 1.13.4 Modded Minecraft Server[br][br][b]Vault Hunters - 1.13.4[/b][br]Level up, loot the vaults and defeat the bosses to collect 16 artifacts![br][br]Setup:[br][li]You must accept the EULA by setting the [b]EULA[/b] variable to [span style='color: #00E800;']true[/span] or the install will fail.[br]Optional:[br][li]You can setup a comma separated list of players who will have admin privileges in game by setting [b]OPS[/b] - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/vaulthunters](https://truecharts.org/charts/incubator/vaulthunters) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/vaulthunters/2.0.7/questions.yaml b/incubator/vaulthunters/2.0.7/questions.yaml deleted file mode 100644 index dd93f814efa..00000000000 --- a/incubator/vaulthunters/2.0.7/questions.yaml +++ /dev/null @@ -1,1854 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: EULA - label: "EULA" - description: "By typing TRUE you are indicating your agreement to the EULA of Mojang. Read it at httpsaccount.mojang.comdocumentsminecrafteula before accepting it." - schema: - type: string - default: "false" - - variable: OPS - label: "OPS" - description: "Comma separated list of players to have op capability" - schema: - type: string - default: "" - - variable: JVM_OPTS - label: "JVM_OPTS" - description: "JAVA Options" - schema: - type: string - default: "-Xms6144m -Xmx8192m" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 25565 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "data Storage" - description: "Path to store the installed server files." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/vaulthunters/2.0.8/CHANGELOG.md b/incubator/vaulthunters/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..07f6ec1a652 --- /dev/null +++ b/incubator/vaulthunters/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [vaulthunters-2.0.8](https://github.com/truecharts/charts/compare/vaulthunters-2.0.7...vaulthunters-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [vaulthunters-2.0.7](https://github.com/truecharts/charts/compare/vaulthunters-2.0.6...vaulthunters-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [vaulthunters-2.0.6](https://github.com/truecharts/charts/compare/vaulthunters-2.0.5...vaulthunters-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [vaulthunters-2.0.5](https://github.com/truecharts/charts/compare/vaulthunters-2.0.4...vaulthunters-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [vaulthunters-2.0.4](https://github.com/truecharts/charts/compare/vaulthunters-2.0.3...vaulthunters-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [vaulthunters-2.0.3](https://github.com/truecharts/charts/compare/vaulthunters-2.0.2...vaulthunters-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) + + + + +## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) + + + + +## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) + + + + +## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) + + + + +## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) + + + + +## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) + + + + +## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) + + + + +## [vaulthunters-2.0.2](https://github.com/truecharts/charts/compare/vaulthunters-2.0.1...vaulthunters-2.0.2) (2022-11-30) + + + diff --git a/incubator/vaulthunters/2.0.8/Chart.yaml b/incubator/vaulthunters/2.0.8/Chart.yaml new file mode 100644 index 00000000000..a98f2b2ba5a --- /dev/null +++ b/incubator/vaulthunters/2.0.8/Chart.yaml @@ -0,0 +1,29 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - GameServers +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Vault Hunters - 1.13.4 Modded Minecraft Server[br][br][b]Vault Hunters - 1.13.4[/b][br]Level up, loot the vaults and defeat the bosses to collect 16 artifacts![br][br]Setup:[br][li]You must accept the EULA by setting the [b]EULA[/b] variable to [span style='color: #00E800;']true[/span] or the install will fail.[br]Optional:[br][li]You can setup a comma separated list of players who will have admin privileges in game by setting [b]OPS[/b]" +home: https://truecharts.org/charts/incubator/vaulthunters +icon: https://truecharts.org/img/hotlink-ok/chart-icons/vaulthunters.png +keywords: + - vaulthunters + - GameServers +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: vaulthunters +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/vaulthunters + - https://hub.docker.com/goobaroo/vaulthunters + - https://vaulthunters.gg +type: application +version: 2.0.8 diff --git a/incubator/vlmcsd-kms-server/2.0.7/README.md b/incubator/vaulthunters/2.0.8/README.md similarity index 100% rename from incubator/vlmcsd-kms-server/2.0.7/README.md rename to incubator/vaulthunters/2.0.8/README.md diff --git a/incubator/vaulthunters/2.0.8/app-changelog.md b/incubator/vaulthunters/2.0.8/app-changelog.md new file mode 100644 index 00000000000..b5040b54ee2 --- /dev/null +++ b/incubator/vaulthunters/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [vaulthunters-2.0.8](https://github.com/truecharts/charts/compare/vaulthunters-2.0.7...vaulthunters-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/vaulthunters/2.0.8/app-readme.md b/incubator/vaulthunters/2.0.8/app-readme.md new file mode 100644 index 00000000000..cd09c6281fc --- /dev/null +++ b/incubator/vaulthunters/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Vault Hunters - 1.13.4 Modded Minecraft Server[br][br][b]Vault Hunters - 1.13.4[/b][br]Level up, loot the vaults and defeat the bosses to collect 16 artifacts![br][br]Setup:[br][li]You must accept the EULA by setting the [b]EULA[/b] variable to [span style='color: #00E800;']true[/span] or the install will fail.[br]Optional:[br][li]You can setup a comma separated list of players who will have admin privileges in game by setting [b]OPS[/b] + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/vaulthunters](https://truecharts.org/charts/incubator/vaulthunters) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/vertex/2.0.16/charts/common-11.1.2.tgz b/incubator/vaulthunters/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/vertex/2.0.16/charts/common-11.1.2.tgz rename to incubator/vaulthunters/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/vaulthunters/2.0.7/ix_values.yaml b/incubator/vaulthunters/2.0.8/ix_values.yaml similarity index 100% rename from incubator/vaulthunters/2.0.7/ix_values.yaml rename to incubator/vaulthunters/2.0.8/ix_values.yaml diff --git a/incubator/vaulthunters/2.0.8/questions.yaml b/incubator/vaulthunters/2.0.8/questions.yaml new file mode 100644 index 00000000000..a6e48e0f382 --- /dev/null +++ b/incubator/vaulthunters/2.0.8/questions.yaml @@ -0,0 +1,1895 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: EULA + label: "EULA" + description: "By typing TRUE you are indicating your agreement to the EULA of Mojang. Read it at httpsaccount.mojang.comdocumentsminecrafteula before accepting it." + schema: + type: string + default: "false" + - variable: OPS + label: "OPS" + description: "Comma separated list of players to have op capability" + schema: + type: string + default: "" + - variable: JVM_OPTS + label: "JVM_OPTS" + description: "JAVA Options" + schema: + type: string + default: "-Xms6144m -Xmx8192m" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25565 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "data Storage" + description: "Path to store the installed server files." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/vaulthunters/2.0.7/templates/common.yaml b/incubator/vaulthunters/2.0.8/templates/common.yaml similarity index 100% rename from incubator/vaulthunters/2.0.7/templates/common.yaml rename to incubator/vaulthunters/2.0.8/templates/common.yaml diff --git a/incubator/vertex/2.0.16/values.yaml b/incubator/vaulthunters/2.0.8/values.yaml similarity index 100% rename from incubator/vertex/2.0.16/values.yaml rename to incubator/vaulthunters/2.0.8/values.yaml diff --git a/incubator/vertex/2.0.16/CHANGELOG.md b/incubator/vertex/2.0.16/CHANGELOG.md deleted file mode 100644 index 81e1ea36444..00000000000 --- a/incubator/vertex/2.0.16/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [vertex-2.0.16](https://github.com/truecharts/charts/compare/vertex-2.0.15...vertex-2.0.16) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/vertex to vstable - - - - -## [vertex-2.0.15](https://github.com/truecharts/charts/compare/vertex-2.0.14...vertex-2.0.15) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/vertex to vstable - - - - -## [vertex-2.0.14](https://github.com/truecharts/charts/compare/vertex-2.0.13...vertex-2.0.14) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [vertex-2.0.13](https://github.com/truecharts/charts/compare/vertex-2.0.12...vertex-2.0.13) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [vertex-2.0.12](https://github.com/truecharts/charts/compare/vertex-2.0.11...vertex-2.0.12) (2022-12-26) - -### Chore - -- update container image tccr.io/truecharts/vertex to vstable ([#5805](https://github.com/truecharts/charts/issues/5805)) - - - - -## [vertex-2.0.11](https://github.com/truecharts/charts/compare/vertex-2.0.10...vertex-2.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [vertex-2.0.10](https://github.com/truecharts/charts/compare/vertex-2.0.9...vertex-2.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [vertex-2.0.9](https://github.com/truecharts/charts/compare/vertex-2.0.8...vertex-2.0.9) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [vertex-2.0.8](https://github.com/truecharts/charts/compare/vertex-2.0.7...vertex-2.0.8) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/vertex to vstable - - - - -## [vertex-2.0.7](https://github.com/truecharts/charts/compare/vertex-2.0.5...vertex-2.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/vertex to vstable - - - - -## [vertex-2.0.7](https://github.com/truecharts/charts/compare/vertex-2.0.5...vertex-2.0.7) (2022-11-30) - -### Chore diff --git a/incubator/vertex/2.0.16/Chart.yaml b/incubator/vertex/2.0.16/Chart.yaml deleted file mode 100644 index 336034429e2..00000000000 --- a/incubator/vertex/2.0.16/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities - - HomeAutomation -apiVersion: v2 -appVersion: "stable" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Vertex" -home: https://truecharts.org/charts/incubator/vertex -icon: https://truecharts.org/img/hotlink-ok/chart-icons/vertex.png -keywords: - - vertex - - Tools-Utilities - - HomeAutomation -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: vertex -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/vertex - - https://gitlab.lswl.in/lswl/vertex - - https://hub.docker.com/r/lswl/vertex -type: application -version: 2.0.16 diff --git a/incubator/vertex/2.0.16/app-changelog.md b/incubator/vertex/2.0.16/app-changelog.md deleted file mode 100644 index 68a71e2e3f2..00000000000 --- a/incubator/vertex/2.0.16/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [vertex-2.0.16](https://github.com/truecharts/charts/compare/vertex-2.0.15...vertex-2.0.16) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/vertex to vstable - - \ No newline at end of file diff --git a/incubator/vertex/2.0.16/questions.yaml b/incubator/vertex/2.0.16/questions.yaml deleted file mode 100644 index d5a3b272ed9..00000000000 --- a/incubator/vertex/2.0.16/questions.yaml +++ /dev/null @@ -1,1842 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PORT - label: "PORT" - description: "Vertex " - schema: - type: string - default: "3000" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/vertex/2.0.17/CHANGELOG.md b/incubator/vertex/2.0.17/CHANGELOG.md new file mode 100644 index 00000000000..98e430bf0d3 --- /dev/null +++ b/incubator/vertex/2.0.17/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [vertex-2.0.17](https://github.com/truecharts/charts/compare/vertex-2.0.16...vertex-2.0.17) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [vertex-2.0.16](https://github.com/truecharts/charts/compare/vertex-2.0.15...vertex-2.0.16) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/vertex to vstable + + + + +## [vertex-2.0.15](https://github.com/truecharts/charts/compare/vertex-2.0.14...vertex-2.0.15) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/vertex to vstable + + + + +## [vertex-2.0.14](https://github.com/truecharts/charts/compare/vertex-2.0.13...vertex-2.0.14) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [vertex-2.0.13](https://github.com/truecharts/charts/compare/vertex-2.0.12...vertex-2.0.13) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [vertex-2.0.12](https://github.com/truecharts/charts/compare/vertex-2.0.11...vertex-2.0.12) (2022-12-26) + +### Chore + +- update container image tccr.io/truecharts/vertex to vstable ([#5805](https://github.com/truecharts/charts/issues/5805)) + + + + +## [vertex-2.0.11](https://github.com/truecharts/charts/compare/vertex-2.0.10...vertex-2.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [vertex-2.0.10](https://github.com/truecharts/charts/compare/vertex-2.0.9...vertex-2.0.10) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [vertex-2.0.9](https://github.com/truecharts/charts/compare/vertex-2.0.8...vertex-2.0.9) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [vertex-2.0.8](https://github.com/truecharts/charts/compare/vertex-2.0.7...vertex-2.0.8) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/vertex to vstable + + + + +## [vertex-2.0.7](https://github.com/truecharts/charts/compare/vertex-2.0.5...vertex-2.0.7) (2022-11-30) + +### Chore diff --git a/incubator/vertex/2.0.17/Chart.yaml b/incubator/vertex/2.0.17/Chart.yaml new file mode 100644 index 00000000000..13f2d16a49f --- /dev/null +++ b/incubator/vertex/2.0.17/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities + - HomeAutomation +apiVersion: v2 +appVersion: "stable" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Vertex" +home: https://truecharts.org/charts/incubator/vertex +icon: https://truecharts.org/img/hotlink-ok/chart-icons/vertex.png +keywords: + - vertex + - Tools-Utilities + - HomeAutomation +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: vertex +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/vertex + - https://hub.docker.com/lswl/vertex + - https://gitlab.lswl.in/lswl/vertex +type: application +version: 2.0.17 diff --git a/incubator/webp-server/2.0.11/README.md b/incubator/vertex/2.0.17/README.md similarity index 100% rename from incubator/webp-server/2.0.11/README.md rename to incubator/vertex/2.0.17/README.md diff --git a/incubator/vertex/2.0.17/app-changelog.md b/incubator/vertex/2.0.17/app-changelog.md new file mode 100644 index 00000000000..344a53835e7 --- /dev/null +++ b/incubator/vertex/2.0.17/app-changelog.md @@ -0,0 +1,9 @@ + + +## [vertex-2.0.17](https://github.com/truecharts/charts/compare/vertex-2.0.16...vertex-2.0.17) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/vertex/2.0.16/app-readme.md b/incubator/vertex/2.0.17/app-readme.md similarity index 100% rename from incubator/vertex/2.0.16/app-readme.md rename to incubator/vertex/2.0.17/app-readme.md diff --git a/incubator/vlmcsd-kms-server/2.0.7/charts/common-11.1.2.tgz b/incubator/vertex/2.0.17/charts/common-11.1.2.tgz similarity index 100% rename from incubator/vlmcsd-kms-server/2.0.7/charts/common-11.1.2.tgz rename to incubator/vertex/2.0.17/charts/common-11.1.2.tgz diff --git a/incubator/vertex/2.0.16/ix_values.yaml b/incubator/vertex/2.0.17/ix_values.yaml similarity index 100% rename from incubator/vertex/2.0.16/ix_values.yaml rename to incubator/vertex/2.0.17/ix_values.yaml diff --git a/incubator/vertex/2.0.17/questions.yaml b/incubator/vertex/2.0.17/questions.yaml new file mode 100644 index 00000000000..49aead21168 --- /dev/null +++ b/incubator/vertex/2.0.17/questions.yaml @@ -0,0 +1,1883 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PORT + label: "PORT" + description: "Vertex " + schema: + type: string + default: "3000" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "config Storage" + description: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/vertex/2.0.16/templates/common.yaml b/incubator/vertex/2.0.17/templates/common.yaml similarity index 100% rename from incubator/vertex/2.0.16/templates/common.yaml rename to incubator/vertex/2.0.17/templates/common.yaml diff --git a/incubator/vlmcsd-kms-server/2.0.7/values.yaml b/incubator/vertex/2.0.17/values.yaml similarity index 100% rename from incubator/vlmcsd-kms-server/2.0.7/values.yaml rename to incubator/vertex/2.0.17/values.yaml diff --git a/incubator/vlmcsd-kms-server/2.0.7/CHANGELOG.md b/incubator/vlmcsd-kms-server/2.0.7/CHANGELOG.md deleted file mode 100644 index 511f1c7638e..00000000000 --- a/incubator/vlmcsd-kms-server/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [vlmcsd-kms-server-2.0.7](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.6...vlmcsd-kms-server-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [vlmcsd-kms-server-2.0.6](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.5...vlmcsd-kms-server-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [vlmcsd-kms-server-2.0.5](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.4...vlmcsd-kms-server-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [vlmcsd-kms-server-2.0.4](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.3...vlmcsd-kms-server-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [vlmcsd-kms-server-2.0.3](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.2...vlmcsd-kms-server-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - - - -## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) - - diff --git a/incubator/vlmcsd-kms-server/2.0.7/Chart.yaml b/incubator/vlmcsd-kms-server/2.0.7/Chart.yaml deleted file mode 100644 index 440a76ac4c0..00000000000 --- a/incubator/vlmcsd-kms-server/2.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Tools-Utilities - - Network-Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "vlmcsd is a replacement for Microsoft's KMS server." -home: https://truecharts.org/charts/incubator/vlmcsd-kms-server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/vlmcsd-kms-server.png -keywords: - - vlmcsd-kms-server - - Cloud - - Tools-Utilities - - Network-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: vlmcsd-kms-server -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/vlmcsd-kms-server - - https://github.com/mikolatero/docker-vlmcsd - - https://hub.docker.com/r/mikolatero/vlmcsd/ -type: application -version: 2.0.7 diff --git a/incubator/vlmcsd-kms-server/2.0.7/app-changelog.md b/incubator/vlmcsd-kms-server/2.0.7/app-changelog.md deleted file mode 100644 index f78cd3652a5..00000000000 --- a/incubator/vlmcsd-kms-server/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [vlmcsd-kms-server-2.0.7](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.6...vlmcsd-kms-server-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/vlmcsd-kms-server/2.0.7/app-readme.md b/incubator/vlmcsd-kms-server/2.0.7/app-readme.md deleted file mode 100644 index 4836d9839e3..00000000000 --- a/incubator/vlmcsd-kms-server/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -vlmcsd is a replacement for Microsoft's KMS server. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/vlmcsd-kms-server](https://truecharts.org/charts/incubator/vlmcsd-kms-server) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/vlmcsd-kms-server/2.0.7/questions.yaml b/incubator/vlmcsd-kms-server/2.0.7/questions.yaml deleted file mode 100644 index c688869148e..00000000000 --- a/incubator/vlmcsd-kms-server/2.0.7/questions.yaml +++ /dev/null @@ -1,1402 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/vlmcsd-kms-server/2.0.8/CHANGELOG.md b/incubator/vlmcsd-kms-server/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..d3f4b95db10 --- /dev/null +++ b/incubator/vlmcsd-kms-server/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [vlmcsd-kms-server-2.0.8](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.7...vlmcsd-kms-server-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [vlmcsd-kms-server-2.0.7](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.6...vlmcsd-kms-server-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [vlmcsd-kms-server-2.0.6](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.5...vlmcsd-kms-server-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [vlmcsd-kms-server-2.0.5](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.4...vlmcsd-kms-server-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [vlmcsd-kms-server-2.0.4](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.3...vlmcsd-kms-server-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [vlmcsd-kms-server-2.0.3](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.2...vlmcsd-kms-server-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) + + + + +## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) + + + + +## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) + + + + +## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) + + + + +## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) + + + + +## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) + + + + +## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) + + + + +## [vlmcsd-kms-server-2.0.2](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.1...vlmcsd-kms-server-2.0.2) (2022-11-30) + + + diff --git a/incubator/vlmcsd-kms-server/2.0.8/Chart.yaml b/incubator/vlmcsd-kms-server/2.0.8/Chart.yaml new file mode 100644 index 00000000000..01e1a213855 --- /dev/null +++ b/incubator/vlmcsd-kms-server/2.0.8/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Tools-Utilities + - Network-Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "vlmcsd is a replacement for Microsoft's KMS server." +home: https://truecharts.org/charts/incubator/vlmcsd-kms-server +icon: https://truecharts.org/img/hotlink-ok/chart-icons/vlmcsd-kms-server.png +keywords: + - vlmcsd-kms-server + - Cloud + - Tools-Utilities + - Network-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: vlmcsd-kms-server +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/vlmcsd-kms-server + - https://hub.docker.com/mikolatero/vlmcsd + - https://github.com/mikolatero/docker-vlmcsd +type: application +version: 2.0.8 diff --git a/incubator/wizarr/0.0.5/README.md b/incubator/vlmcsd-kms-server/2.0.8/README.md similarity index 100% rename from incubator/wizarr/0.0.5/README.md rename to incubator/vlmcsd-kms-server/2.0.8/README.md diff --git a/incubator/vlmcsd-kms-server/2.0.8/app-changelog.md b/incubator/vlmcsd-kms-server/2.0.8/app-changelog.md new file mode 100644 index 00000000000..ab8ae839d41 --- /dev/null +++ b/incubator/vlmcsd-kms-server/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [vlmcsd-kms-server-2.0.8](https://github.com/truecharts/charts/compare/vlmcsd-kms-server-2.0.7...vlmcsd-kms-server-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/vlmcsd-kms-server/2.0.8/app-readme.md b/incubator/vlmcsd-kms-server/2.0.8/app-readme.md new file mode 100644 index 00000000000..bb54741053e --- /dev/null +++ b/incubator/vlmcsd-kms-server/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +vlmcsd is a replacement for Microsoft's KMS server. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/vlmcsd-kms-server](https://truecharts.org/charts/incubator/vlmcsd-kms-server) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/webp-server/2.0.11/charts/common-11.1.2.tgz b/incubator/vlmcsd-kms-server/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from incubator/webp-server/2.0.11/charts/common-11.1.2.tgz rename to incubator/vlmcsd-kms-server/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/vlmcsd-kms-server/2.0.7/ix_values.yaml b/incubator/vlmcsd-kms-server/2.0.8/ix_values.yaml similarity index 100% rename from incubator/vlmcsd-kms-server/2.0.7/ix_values.yaml rename to incubator/vlmcsd-kms-server/2.0.8/ix_values.yaml diff --git a/incubator/vlmcsd-kms-server/2.0.8/questions.yaml b/incubator/vlmcsd-kms-server/2.0.8/questions.yaml new file mode 100644 index 00000000000..7a0e5c3cf49 --- /dev/null +++ b/incubator/vlmcsd-kms-server/2.0.8/questions.yaml @@ -0,0 +1,1402 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/vlmcsd-kms-server/2.0.7/templates/common.yaml b/incubator/vlmcsd-kms-server/2.0.8/templates/common.yaml similarity index 100% rename from incubator/vlmcsd-kms-server/2.0.7/templates/common.yaml rename to incubator/vlmcsd-kms-server/2.0.8/templates/common.yaml diff --git a/incubator/webp-server/2.0.11/values.yaml b/incubator/vlmcsd-kms-server/2.0.8/values.yaml similarity index 100% rename from incubator/webp-server/2.0.11/values.yaml rename to incubator/vlmcsd-kms-server/2.0.8/values.yaml diff --git a/incubator/webp-server/2.0.11/CHANGELOG.md b/incubator/webp-server/2.0.11/CHANGELOG.md deleted file mode 100644 index 5d51a8887c1..00000000000 --- a/incubator/webp-server/2.0.11/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [webp-server-2.0.11](https://github.com/truecharts/charts/compare/webp-server-2.0.10...webp-server-2.0.11) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/webp-server to latest - - - - -## [webp-server-2.0.10](https://github.com/truecharts/charts/compare/webp-server-2.0.9...webp-server-2.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [webp-server-2.0.9](https://github.com/truecharts/charts/compare/webp-server-2.0.8...webp-server-2.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [webp-server-2.0.8](https://github.com/truecharts/charts/compare/webp-server-2.0.7...webp-server-2.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [webp-server-2.0.7](https://github.com/truecharts/charts/compare/webp-server-2.0.6...webp-server-2.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [webp-server-2.0.6](https://github.com/truecharts/charts/compare/webp-server-2.0.5...webp-server-2.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [webp-server-2.0.5](https://github.com/truecharts/charts/compare/webp-server-2.0.4...webp-server-2.0.5) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/webp-server to latest - - - - -## [webp-server-2.0.4](https://github.com/truecharts/charts/compare/webp-server-2.0.1...webp-server-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/webp-server to latest - - - - -## [webp-server-2.0.4](https://github.com/truecharts/charts/compare/webp-server-2.0.1...webp-server-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/webp-server to latest - - - - -## [webp-server-2.0.4](https://github.com/truecharts/charts/compare/webp-server-2.0.1...webp-server-2.0.4) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/webp-server to latest - - - - -## [webp-server-2.0.4](https://github.com/truecharts/charts/compare/webp-server-2.0.1...webp-server-2.0.4) (2022-11-30) - -### Chore diff --git a/incubator/webp-server/2.0.11/Chart.yaml b/incubator/webp-server/2.0.11/Chart.yaml deleted file mode 100644 index 00a7cbf7893..00000000000 --- a/incubator/webp-server/2.0.11/Chart.yaml +++ /dev/null @@ -1,39 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity - - Tools-Utilities - - MediaServer-Photos - - Network-Web - - Network-FTP -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "This is a Server based on Golang, which allows you to serve WebP images on the fly. It will convert jpg,jpeg,png files by default, this can be customized by editing the config.json." -home: https://truecharts.org/charts/incubator/webp-server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/webp-server.png -keywords: - - webp-server - - Cloud - - Productivity - - Tools-Utilities - - MediaServer-Photos - - Network-Web - - Network-FTP -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: webp-server -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/webp-server - - https://github.com/webp-sh/webp_server_go - - https://hub.docker.com/r/webpsh/webps -type: application -version: 2.0.11 diff --git a/incubator/webp-server/2.0.11/app-changelog.md b/incubator/webp-server/2.0.11/app-changelog.md deleted file mode 100644 index 3784cde0bc5..00000000000 --- a/incubator/webp-server/2.0.11/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [webp-server-2.0.11](https://github.com/truecharts/charts/compare/webp-server-2.0.10...webp-server-2.0.11) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/webp-server to latest - - \ No newline at end of file diff --git a/incubator/webp-server/2.0.11/app-readme.md b/incubator/webp-server/2.0.11/app-readme.md deleted file mode 100644 index 04fd16f276b..00000000000 --- a/incubator/webp-server/2.0.11/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is a Server based on Golang, which allows you to serve WebP images on the fly. It will convert jpg,jpeg,png files by default, this can be customized by editing the config.json. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/webp-server](https://truecharts.org/charts/incubator/webp-server) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/webp-server/2.0.11/questions.yaml b/incubator/webp-server/2.0.11/questions.yaml deleted file mode 100644 index 3c3906d3134..00000000000 --- a/incubator/webp-server/2.0.11/questions.yaml +++ /dev/null @@ -1,1921 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ALLOWED_TYPES - label: "ALLOWED_TYPES" - schema: - type: string - default: "jpg,png,jpeg,bmp,gif" - - variable: QUALITY - label: "QUALITY" - schema: - type: string - default: "80" - - variable: ENABLE_AVIF - label: "ENABLE_AVIF" - schema: - type: string - default: "false" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3333 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: storagepics - label: "storagepics Storage" - description: "This is the location for your pics." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storagecache - label: "storagecache Storage" - description: "Location for generated WEBP images to serve them later faster." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/webp-server/2.0.12/CHANGELOG.md b/incubator/webp-server/2.0.12/CHANGELOG.md new file mode 100644 index 00000000000..6daedb091a2 --- /dev/null +++ b/incubator/webp-server/2.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [webp-server-2.0.12](https://github.com/truecharts/charts/compare/webp-server-2.0.11...webp-server-2.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [webp-server-2.0.11](https://github.com/truecharts/charts/compare/webp-server-2.0.10...webp-server-2.0.11) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/webp-server to latest + + + + +## [webp-server-2.0.10](https://github.com/truecharts/charts/compare/webp-server-2.0.9...webp-server-2.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [webp-server-2.0.9](https://github.com/truecharts/charts/compare/webp-server-2.0.8...webp-server-2.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [webp-server-2.0.8](https://github.com/truecharts/charts/compare/webp-server-2.0.7...webp-server-2.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [webp-server-2.0.7](https://github.com/truecharts/charts/compare/webp-server-2.0.6...webp-server-2.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [webp-server-2.0.6](https://github.com/truecharts/charts/compare/webp-server-2.0.5...webp-server-2.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [webp-server-2.0.5](https://github.com/truecharts/charts/compare/webp-server-2.0.4...webp-server-2.0.5) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/webp-server to latest + + + + +## [webp-server-2.0.4](https://github.com/truecharts/charts/compare/webp-server-2.0.1...webp-server-2.0.4) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/webp-server to latest + + + + +## [webp-server-2.0.4](https://github.com/truecharts/charts/compare/webp-server-2.0.1...webp-server-2.0.4) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/webp-server to latest + + + + +## [webp-server-2.0.4](https://github.com/truecharts/charts/compare/webp-server-2.0.1...webp-server-2.0.4) (2022-11-30) + +### Chore diff --git a/incubator/webp-server/2.0.12/Chart.yaml b/incubator/webp-server/2.0.12/Chart.yaml new file mode 100644 index 00000000000..fa9a2cd923b --- /dev/null +++ b/incubator/webp-server/2.0.12/Chart.yaml @@ -0,0 +1,39 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity + - Tools-Utilities + - MediaServer-Photos + - Network-Web + - Network-FTP +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "This is a Server based on Golang, which allows you to serve WebP images on the fly. It will convert jpg,jpeg,png files by default, this can be customized by editing the config.json." +home: https://truecharts.org/charts/incubator/webp-server +icon: https://truecharts.org/img/hotlink-ok/chart-icons/webp-server.png +keywords: + - webp-server + - Cloud + - Productivity + - Tools-Utilities + - MediaServer-Photos + - Network-Web + - Network-FTP +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: webp-server +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/webp-server + - https://hub.docker.com/webpsh/webps + - https://github.com/webp-sh/webp_server_go +type: application +version: 2.0.12 diff --git a/incubator/xmrig/2.0.7/README.md b/incubator/webp-server/2.0.12/README.md similarity index 100% rename from incubator/xmrig/2.0.7/README.md rename to incubator/webp-server/2.0.12/README.md diff --git a/incubator/webp-server/2.0.12/app-changelog.md b/incubator/webp-server/2.0.12/app-changelog.md new file mode 100644 index 00000000000..29cfaa7b446 --- /dev/null +++ b/incubator/webp-server/2.0.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [webp-server-2.0.12](https://github.com/truecharts/charts/compare/webp-server-2.0.11...webp-server-2.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/webp-server/2.0.12/app-readme.md b/incubator/webp-server/2.0.12/app-readme.md new file mode 100644 index 00000000000..7b1c09c677d --- /dev/null +++ b/incubator/webp-server/2.0.12/app-readme.md @@ -0,0 +1,8 @@ +This is a Server based on Golang, which allows you to serve WebP images on the fly. It will convert jpg,jpeg,png files by default, this can be customized by editing the config.json. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/webp-server](https://truecharts.org/charts/incubator/webp-server) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/wizarr/0.0.5/charts/common-11.1.2.tgz b/incubator/webp-server/2.0.12/charts/common-11.1.2.tgz similarity index 100% rename from incubator/wizarr/0.0.5/charts/common-11.1.2.tgz rename to incubator/webp-server/2.0.12/charts/common-11.1.2.tgz diff --git a/incubator/webp-server/2.0.11/ix_values.yaml b/incubator/webp-server/2.0.12/ix_values.yaml similarity index 100% rename from incubator/webp-server/2.0.11/ix_values.yaml rename to incubator/webp-server/2.0.12/ix_values.yaml diff --git a/incubator/webp-server/2.0.12/questions.yaml b/incubator/webp-server/2.0.12/questions.yaml new file mode 100644 index 00000000000..4324be97da3 --- /dev/null +++ b/incubator/webp-server/2.0.12/questions.yaml @@ -0,0 +1,1962 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ALLOWED_TYPES + label: "ALLOWED_TYPES" + schema: + type: string + default: "jpg,png,jpeg,bmp,gif" + - variable: QUALITY + label: "QUALITY" + schema: + type: string + default: "80" + - variable: ENABLE_AVIF + label: "ENABLE_AVIF" + schema: + type: string + default: "false" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3333 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: storagepics + label: "storagepics Storage" + description: "This is the location for your pics." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storagecache + label: "storagecache Storage" + description: "Location for generated WEBP images to serve them later faster." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/webp-server/2.0.11/templates/common.yaml b/incubator/webp-server/2.0.12/templates/common.yaml similarity index 100% rename from incubator/webp-server/2.0.11/templates/common.yaml rename to incubator/webp-server/2.0.12/templates/common.yaml diff --git a/incubator/wizarr/0.0.5/values.yaml b/incubator/webp-server/2.0.12/values.yaml similarity index 100% rename from incubator/wizarr/0.0.5/values.yaml rename to incubator/webp-server/2.0.12/values.yaml diff --git a/incubator/wizarr/0.0.5/CHANGELOG.md b/incubator/wizarr/0.0.5/CHANGELOG.md deleted file mode 100644 index 99659cd026c..00000000000 --- a/incubator/wizarr/0.0.5/CHANGELOG.md +++ /dev/null @@ -1,44 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [wizarr-0.0.5](https://github.com/truecharts/charts/compare/wizarr-0.0.4...wizarr-0.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [wizarr-0.0.4](https://github.com/truecharts/charts/compare/wizarr-0.0.3...wizarr-0.0.4) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [wizarr-0.0.3](https://github.com/truecharts/charts/compare/wizarr-0.0.2...wizarr-0.0.3) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [wizarr-0.0.2](https://github.com/truecharts/charts/compare/wizarr-0.0.1...wizarr-0.0.2) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [wizarr-0.0.1]wizarr-0.0.1 (2022-12-16) - diff --git a/incubator/wizarr/0.0.5/Chart.yaml b/incubator/wizarr/0.0.5/Chart.yaml deleted file mode 100644 index 1fe8e63f461..00000000000 --- a/incubator/wizarr/0.0.5/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A automatic user invitation system for Plex. -home: https://truecharts.org/charts/incubator/wizarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/wizarr.png -keywords: - - wizarr - - HomeAutomation - - Tools-Utilities - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: wizarr -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/wizarr - - https://github.com/Wizarrrr/wizarr - - https://hub.docker.com/r/wizarr/wizarr -type: application -version: 0.0.5 -annotations: - truecharts.org/catagories: | - - HomeAutomation - - Tools-Utilities - - Other - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/incubator/wizarr/0.0.5/app-changelog.md b/incubator/wizarr/0.0.5/app-changelog.md deleted file mode 100644 index c814bfa312f..00000000000 --- a/incubator/wizarr/0.0.5/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [wizarr-0.0.5](https://github.com/truecharts/charts/compare/wizarr-0.0.4...wizarr-0.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/wizarr/0.0.5/app-readme.md b/incubator/wizarr/0.0.5/app-readme.md deleted file mode 100644 index 466a3ca40d6..00000000000 --- a/incubator/wizarr/0.0.5/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A automatic user invitation system for Plex. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/wizarr](https://truecharts.org/charts/incubator/wizarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/wizarr/0.0.5/questions.yaml b/incubator/wizarr/0.0.5/questions.yaml deleted file mode 100644 index 1fdb51c9911..00000000000 --- a/incubator/wizarr/0.0.5/questions.yaml +++ /dev/null @@ -1,1854 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: env - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: APP_URL - label: App URL - description: set this url as either http://ip:port or https://app.domain.tld if using ingress/reverse proxy. - schema: - type: string - default: "" - - variable: DISABLE_BUILTIN_AUTH - label: Disable Builtin Auth - description: Check this if using an external auth provider, otherwise leave it false. - schema: - type: boolean - default: false - - variable: ALLOW_BUG_REPORTING - label: Allow Bug Reporting - description: Helps upstream developers fix bugs proactively, recommended leave it enabled, but can be optionally disabled. - schema: - type: boolean - default: true - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10596 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: database - label: App Database Storage - description: Stores the Application Database. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/wizarr/0.0.6/CHANGELOG.md b/incubator/wizarr/0.0.6/CHANGELOG.md new file mode 100644 index 00000000000..6a167792a58 --- /dev/null +++ b/incubator/wizarr/0.0.6/CHANGELOG.md @@ -0,0 +1,53 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [wizarr-0.0.6](https://github.com/truecharts/charts/compare/wizarr-0.0.5...wizarr-0.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [wizarr-0.0.5](https://github.com/truecharts/charts/compare/wizarr-0.0.4...wizarr-0.0.5) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [wizarr-0.0.4](https://github.com/truecharts/charts/compare/wizarr-0.0.3...wizarr-0.0.4) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [wizarr-0.0.3](https://github.com/truecharts/charts/compare/wizarr-0.0.2...wizarr-0.0.3) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [wizarr-0.0.2](https://github.com/truecharts/charts/compare/wizarr-0.0.1...wizarr-0.0.2) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [wizarr-0.0.1]wizarr-0.0.1 (2022-12-16) + diff --git a/incubator/wizarr/0.0.6/Chart.yaml b/incubator/wizarr/0.0.6/Chart.yaml new file mode 100644 index 00000000000..8c07e72dda4 --- /dev/null +++ b/incubator/wizarr/0.0.6/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A automatic user invitation system for Plex. +home: https://truecharts.org/charts/incubator/wizarr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/wizarr.png +keywords: + - wizarr + - HomeAutomation + - Tools-Utilities + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: wizarr +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/wizarr + - https://hub.docker.com/wizarr/wizarr + - https://github.com/Wizarrrr/wizarr +type: application +version: 0.0.6 +annotations: + truecharts.org/catagories: | + - HomeAutomation + - Tools-Utilities + - Other + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wbo/3.0.0/README.md b/incubator/wizarr/0.0.6/README.md similarity index 100% rename from stable/wbo/3.0.0/README.md rename to incubator/wizarr/0.0.6/README.md diff --git a/incubator/wizarr/0.0.6/app-changelog.md b/incubator/wizarr/0.0.6/app-changelog.md new file mode 100644 index 00000000000..f53637478fd --- /dev/null +++ b/incubator/wizarr/0.0.6/app-changelog.md @@ -0,0 +1,9 @@ + + +## [wizarr-0.0.6](https://github.com/truecharts/charts/compare/wizarr-0.0.5...wizarr-0.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/wizarr/0.0.6/app-readme.md b/incubator/wizarr/0.0.6/app-readme.md new file mode 100644 index 00000000000..efe84a1a669 --- /dev/null +++ b/incubator/wizarr/0.0.6/app-readme.md @@ -0,0 +1,8 @@ +A automatic user invitation system for Plex. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/wizarr](https://truecharts.org/charts/incubator/wizarr) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/incubator/xmrig/2.0.7/charts/common-11.1.2.tgz b/incubator/wizarr/0.0.6/charts/common-11.1.2.tgz similarity index 100% rename from incubator/xmrig/2.0.7/charts/common-11.1.2.tgz rename to incubator/wizarr/0.0.6/charts/common-11.1.2.tgz diff --git a/incubator/wizarr/0.0.5/ix_values.yaml b/incubator/wizarr/0.0.6/ix_values.yaml similarity index 100% rename from incubator/wizarr/0.0.5/ix_values.yaml rename to incubator/wizarr/0.0.6/ix_values.yaml diff --git a/incubator/wizarr/0.0.6/questions.yaml b/incubator/wizarr/0.0.6/questions.yaml new file mode 100644 index 00000000000..4a8d27a6fe3 --- /dev/null +++ b/incubator/wizarr/0.0.6/questions.yaml @@ -0,0 +1,1895 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: APP_URL + label: App URL + description: set this url as either http://ip:port or https://app.domain.tld if using ingress/reverse proxy. + schema: + type: string + default: "" + - variable: DISABLE_BUILTIN_AUTH + label: Disable Builtin Auth + description: Check this if using an external auth provider, otherwise leave it false. + schema: + type: boolean + default: false + - variable: ALLOW_BUG_REPORTING + label: Allow Bug Reporting + description: Helps upstream developers fix bugs proactively, recommended leave it enabled, but can be optionally disabled. + schema: + type: boolean + default: true + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10596 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: database + label: App Database Storage + description: Stores the Application Database. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/wizarr/0.0.5/templates/common.yaml b/incubator/wizarr/0.0.6/templates/common.yaml similarity index 100% rename from incubator/wizarr/0.0.5/templates/common.yaml rename to incubator/wizarr/0.0.6/templates/common.yaml diff --git a/incubator/xmrig/2.0.7/values.yaml b/incubator/wizarr/0.0.6/values.yaml similarity index 100% rename from incubator/xmrig/2.0.7/values.yaml rename to incubator/wizarr/0.0.6/values.yaml diff --git a/incubator/xmrig/2.0.7/CHANGELOG.md b/incubator/xmrig/2.0.7/CHANGELOG.md deleted file mode 100644 index 639f0629c69..00000000000 --- a/incubator/xmrig/2.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [xmrig-2.0.7](https://github.com/truecharts/charts/compare/xmrig-2.0.6...xmrig-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [xmrig-2.0.6](https://github.com/truecharts/charts/compare/xmrig-2.0.5...xmrig-2.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [xmrig-2.0.5](https://github.com/truecharts/charts/compare/xmrig-2.0.4...xmrig-2.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [xmrig-2.0.4](https://github.com/truecharts/charts/compare/xmrig-2.0.3...xmrig-2.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [xmrig-2.0.3](https://github.com/truecharts/charts/compare/xmrig-2.0.2...xmrig-2.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - - - -## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) - - diff --git a/incubator/xmrig/2.0.7/Chart.yaml b/incubator/xmrig/2.0.7/Chart.yaml deleted file mode 100644 index 545095e7216..00000000000 --- a/incubator/xmrig/2.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Crypto -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Chartised version of XMRig for CPU Mining. Helps turn your TrueNAS server into a Monero / cryptocurrency mining rig. Now optionally works with GPU algorithms as well. -home: https://truecharts.org/charts/incubator/xmrig -icon: https://truecharts.org/img/hotlink-ok/chart-icons/xmrig.png -keywords: - - xmrig - - Crypto -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: xmrig -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/xmrig - - https://hub.docker.com/r/lnxd/xmrig -type: application -version: 2.0.7 diff --git a/incubator/xmrig/2.0.7/app-changelog.md b/incubator/xmrig/2.0.7/app-changelog.md deleted file mode 100644 index d672f4ae11d..00000000000 --- a/incubator/xmrig/2.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [xmrig-2.0.7](https://github.com/truecharts/charts/compare/xmrig-2.0.6...xmrig-2.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/incubator/xmrig/2.0.7/app-readme.md b/incubator/xmrig/2.0.7/app-readme.md deleted file mode 100644 index 02a52b0724d..00000000000 --- a/incubator/xmrig/2.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Chartised version of XMRig for CPU Mining. Helps turn your TrueNAS server into a Monero / cryptocurrency mining rig. Now optionally works with GPU algorithms as well. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/xmrig](https://truecharts.org/charts/incubator/xmrig) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/xmrig/2.0.7/questions.yaml b/incubator/xmrig/2.0.7/questions.yaml deleted file mode 100644 index 3f6334cccd8..00000000000 --- a/incubator/xmrig/2.0.7/questions.yaml +++ /dev/null @@ -1,1469 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: POOL - label: "POOL" - description: "Address for your mining pool. Eg. xmr-au1.nanopool.org14444" - schema: - type: string - default: "xmr-au1.nanopool.org:14444" - - variable: WALLET - label: "WALLET" - description: "Wallet address for receiving mined coin. If you are privacy conscious, you can redact this in logs posted to the support thread by replacing it with WALLET. If you use Monero, sharing this address will only allow people to send you Monero and possibly identify you if you send someone else Monero, but being a privacy oriented coin its entirely up to you." - schema: - type: string - default: "84e8UJvXHDGVfE5HZDQfhn3Kh3RGJKebz31G7D4H24TLPMe9x7bQLBw8iyBhNx9USXB8MhvhBe3DyVW1LcuVAf4jBiADNLw" - - variable: WORKER - label: "WORKER" - description: "Enter a name for your worker. Some pools use a hidden option with this (Nanopool included) that allows you to change your payment threshold on their website. If you want to use this option, you can change this to workernameemail, eg. TrueNAStest@example.com, where test@example.com is your own email address. This option is basically a password. Please take note that if you post your logs in the support thread you would be best to redact the email address, eg. change out the instances of your email with @. to prevent your email address being posted in a public forum." - schema: - type: string - default: "TrueNAS" - - variable: ADDITIONAL - label: "ADDITIONAL" - description: "Please leave --no-colour, as TrueNASs webUI log viewer does not respond well to this option being disabled. If you plan on using an AMD card for GPU mining, please add --opencl; the field would then read --no-colour --opencl, please dont miss the variables below. If you plan on using an Nvidia card for GPU mining, please add --cuda; the field would then read --no-colour --cuda " - schema: - type: string - default: "--no-color " - - variable: DONATE - label: "DONATE" - description: "% that you would like to donate. Enter a whole number between 0-100, no symbols." - schema: - type: string - default: "1" - - variable: FEE - label: "FEE" - description: "Select where you would like to donate the developer fee. Options are dev-fee, lnxd-fee and no-fee." - schema: - type: string - default: "lnxd-fee" - - variable: COIN - label: "COIN" - description: "Select a coin to mine. Options are monero, arqma and dero. You can optionally disable this to use the --algo flag in Additional XMRig Arguments by setting this to x." - schema: - type: string - default: "monero" - - variable: DRIVERV - label: "DRIVERV" - description: "Please note while you can mine Monero with a GPU, it is designed to be mined with a CPU. If you have a GPU, please confirm it is not more profitable to mine a currency that does not intentionally bottleneck GPU mining. Set 20.20 for AMD, other options are for testing purposes only (18.20, 20.45, 20.50). If you have an Nvidia card, enter CUDA Please note that this container will not work with both AMD Drivers and Cuda installed at the same time. if you want to do this, please set this container up for one and create a second, separate container for the other. Please also note that if you use the CUDA value, the container will end up around 3gb in size and take a very long time to start after updates." - schema: - type: string - default: "" - - variable: NVIDIA_VISIBLE_DEVICES - label: "NVIDIA_VISIBLE_DEVICES" - description: "Nvidia Only Enter your GPU UUID here (only required if you plan to mine with an Nvidia GPU otherwise leave this empty. Dont forget to add --runtime=nvidia to your Extra Parameters in the Advanced View)." - schema: - type: string - default: "" - - variable: NVIDIA_DRIVER_CAPABILITIES - label: "NVIDIA_DRIVER_CAPABILITIES" - description: "Please leave this set to the default option of all if you arent sure what to put here. This value can be left in the template even if you dont want to mine with an Nvidia GPU." - schema: - type: string - default: "all" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/incubator/xmrig/2.0.8/CHANGELOG.md b/incubator/xmrig/2.0.8/CHANGELOG.md new file mode 100644 index 00000000000..72f6c17874a --- /dev/null +++ b/incubator/xmrig/2.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [xmrig-2.0.8](https://github.com/truecharts/charts/compare/xmrig-2.0.7...xmrig-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [xmrig-2.0.7](https://github.com/truecharts/charts/compare/xmrig-2.0.6...xmrig-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [xmrig-2.0.6](https://github.com/truecharts/charts/compare/xmrig-2.0.5...xmrig-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [xmrig-2.0.5](https://github.com/truecharts/charts/compare/xmrig-2.0.4...xmrig-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [xmrig-2.0.4](https://github.com/truecharts/charts/compare/xmrig-2.0.3...xmrig-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [xmrig-2.0.3](https://github.com/truecharts/charts/compare/xmrig-2.0.2...xmrig-2.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) + + + + +## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) + + + + +## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) + + + + +## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) + + + + +## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) + + + + +## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) + + + + +## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) + + + + +## [xmrig-2.0.2](https://github.com/truecharts/charts/compare/xmrig-2.0.1...xmrig-2.0.2) (2022-11-30) + + + diff --git a/incubator/xmrig/2.0.8/Chart.yaml b/incubator/xmrig/2.0.8/Chart.yaml new file mode 100644 index 00000000000..2f4d6167911 --- /dev/null +++ b/incubator/xmrig/2.0.8/Chart.yaml @@ -0,0 +1,28 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Crypto +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Chartised version of XMRig for CPU Mining. Helps turn your TrueNAS server into a Monero / cryptocurrency mining rig. Now optionally works with GPU algorithms as well. +home: https://truecharts.org/charts/incubator/xmrig +icon: https://truecharts.org/img/hotlink-ok/chart-icons/xmrig.png +keywords: + - xmrig + - Crypto +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: xmrig +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/xmrig + - https://hub.docker.com/lnxd/xmrig +type: application +version: 2.0.8 diff --git a/incubator/xmrig/2.0.8/README.md b/incubator/xmrig/2.0.8/README.md new file mode 100644 index 00000000000..63d5d2c8fdc --- /dev/null +++ b/incubator/xmrig/2.0.8/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/incubator/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/incubator/xmrig/2.0.8/app-changelog.md b/incubator/xmrig/2.0.8/app-changelog.md new file mode 100644 index 00000000000..0f4be479e69 --- /dev/null +++ b/incubator/xmrig/2.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [xmrig-2.0.8](https://github.com/truecharts/charts/compare/xmrig-2.0.7...xmrig-2.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/incubator/xmrig/2.0.8/app-readme.md b/incubator/xmrig/2.0.8/app-readme.md new file mode 100644 index 00000000000..88c15bcf8c9 --- /dev/null +++ b/incubator/xmrig/2.0.8/app-readme.md @@ -0,0 +1,8 @@ +Chartised version of XMRig for CPU Mining. Helps turn your TrueNAS server into a Monero / cryptocurrency mining rig. Now optionally works with GPU algorithms as well. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/xmrig](https://truecharts.org/charts/incubator/xmrig) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/adguard-home/4.0.11/charts/common-11.1.2.tgz b/incubator/xmrig/2.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/adguard-home/4.0.11/charts/common-11.1.2.tgz rename to incubator/xmrig/2.0.8/charts/common-11.1.2.tgz diff --git a/incubator/xmrig/2.0.7/ix_values.yaml b/incubator/xmrig/2.0.8/ix_values.yaml similarity index 100% rename from incubator/xmrig/2.0.7/ix_values.yaml rename to incubator/xmrig/2.0.8/ix_values.yaml diff --git a/incubator/xmrig/2.0.8/questions.yaml b/incubator/xmrig/2.0.8/questions.yaml new file mode 100644 index 00000000000..f1372db601c --- /dev/null +++ b/incubator/xmrig/2.0.8/questions.yaml @@ -0,0 +1,1469 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: POOL + label: "POOL" + description: "Address for your mining pool. Eg. xmr-au1.nanopool.org14444" + schema: + type: string + default: "xmr-au1.nanopool.org:14444" + - variable: WALLET + label: "WALLET" + description: "Wallet address for receiving mined coin. If you are privacy conscious, you can redact this in logs posted to the support thread by replacing it with WALLET. If you use Monero, sharing this address will only allow people to send you Monero and possibly identify you if you send someone else Monero, but being a privacy oriented coin its entirely up to you." + schema: + type: string + default: "84e8UJvXHDGVfE5HZDQfhn3Kh3RGJKebz31G7D4H24TLPMe9x7bQLBw8iyBhNx9USXB8MhvhBe3DyVW1LcuVAf4jBiADNLw" + - variable: WORKER + label: "WORKER" + description: "Enter a name for your worker. Some pools use a hidden option with this (Nanopool included) that allows you to change your payment threshold on their website. If you want to use this option, you can change this to workernameemail, eg. TrueNAStest@example.com, where test@example.com is your own email address. This option is basically a password. Please take note that if you post your logs in the support thread you would be best to redact the email address, eg. change out the instances of your email with @. to prevent your email address being posted in a public forum." + schema: + type: string + default: "TrueNAS" + - variable: ADDITIONAL + label: "ADDITIONAL" + description: "Please leave --no-colour, as TrueNASs webUI log viewer does not respond well to this option being disabled. If you plan on using an AMD card for GPU mining, please add --opencl; the field would then read --no-colour --opencl, please dont miss the variables below. If you plan on using an Nvidia card for GPU mining, please add --cuda; the field would then read --no-colour --cuda " + schema: + type: string + default: "--no-color " + - variable: DONATE + label: "DONATE" + description: "% that you would like to donate. Enter a whole number between 0-100, no symbols." + schema: + type: string + default: "1" + - variable: FEE + label: "FEE" + description: "Select where you would like to donate the developer fee. Options are dev-fee, lnxd-fee and no-fee." + schema: + type: string + default: "lnxd-fee" + - variable: COIN + label: "COIN" + description: "Select a coin to mine. Options are monero, arqma and dero. You can optionally disable this to use the --algo flag in Additional XMRig Arguments by setting this to x." + schema: + type: string + default: "monero" + - variable: DRIVERV + label: "DRIVERV" + description: "Please note while you can mine Monero with a GPU, it is designed to be mined with a CPU. If you have a GPU, please confirm it is not more profitable to mine a currency that does not intentionally bottleneck GPU mining. Set 20.20 for AMD, other options are for testing purposes only (18.20, 20.45, 20.50). If you have an Nvidia card, enter CUDA Please note that this container will not work with both AMD Drivers and Cuda installed at the same time. if you want to do this, please set this container up for one and create a second, separate container for the other. Please also note that if you use the CUDA value, the container will end up around 3gb in size and take a very long time to start after updates." + schema: + type: string + default: "" + - variable: NVIDIA_VISIBLE_DEVICES + label: "NVIDIA_VISIBLE_DEVICES" + description: "Nvidia Only Enter your GPU UUID here (only required if you plan to mine with an Nvidia GPU otherwise leave this empty. Dont forget to add --runtime=nvidia to your Extra Parameters in the Advanced View)." + schema: + type: string + default: "" + - variable: NVIDIA_DRIVER_CAPABILITIES + label: "NVIDIA_DRIVER_CAPABILITIES" + description: "Please leave this set to the default option of all if you arent sure what to put here. This value can be left in the template even if you dont want to mine with an Nvidia GPU." + schema: + type: string + default: "all" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/xmrig/2.0.7/templates/common.yaml b/incubator/xmrig/2.0.8/templates/common.yaml similarity index 100% rename from incubator/xmrig/2.0.7/templates/common.yaml rename to incubator/xmrig/2.0.8/templates/common.yaml diff --git a/stable/adguard-home/4.0.11/values.yaml b/incubator/xmrig/2.0.8/values.yaml similarity index 100% rename from stable/adguard-home/4.0.11/values.yaml rename to incubator/xmrig/2.0.8/values.yaml diff --git a/stable/adguard-home/4.0.11/CHANGELOG.md b/stable/adguard-home/4.0.11/CHANGELOG.md deleted file mode 100644 index 5173446d93b..00000000000 --- a/stable/adguard-home/4.0.11/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [adguard-home-4.0.11](https://github.com/truecharts/charts/compare/adguard-home-4.0.10...adguard-home-4.0.11) (2023-01-20) - -### Chore - -- update container image tccr.io/truecharts/adguard-home to v0.107.22 - - - - -## [adguard-home-4.0.10](https://github.com/truecharts/charts/compare/adguard-home-4.0.9...adguard-home-4.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [adguard-home-4.0.9](https://github.com/truecharts/charts/compare/adguard-home-4.0.8...adguard-home-4.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [adguard-home-4.0.8](https://github.com/truecharts/charts/compare/adguard-home-4.0.7...adguard-home-4.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [adguard-home-4.0.7](https://github.com/truecharts/charts/compare/adguard-home-4.0.6...adguard-home-4.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [adguard-home-4.0.6](https://github.com/truecharts/charts/compare/adguard-home-4.0.5...adguard-home-4.0.6) (2022-12-17) - -### Chore - -- update container image tccr.io/truecharts/adguard-home to v0.107.21 - - - - -## [adguard-home-4.0.5](https://github.com/truecharts/charts/compare/adguard-home-4.0.4...adguard-home-4.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [adguard-home-4.0.4](https://github.com/truecharts/charts/compare/adguard-home-4.0.3...adguard-home-4.0.4) (2022-12-07) - -### Chore - -- update container image tccr.io/truecharts/adguard-home to v0.107.20 - - - - -## [adguard-home-4.0.3](https://github.com/truecharts/charts/compare/adguard-home-4.0.2...adguard-home-4.0.3) (2022-11-30) - - - - -## [adguard-home-4.0.3](https://github.com/truecharts/charts/compare/adguard-home-4.0.2...adguard-home-4.0.3) (2022-11-30) - - - - -## [adguard-home-4.0.3](https://github.com/truecharts/charts/compare/adguard-home-4.0.2...adguard-home-4.0.3) (2022-11-30) - - - - -## [adguard-home-4.0.3](https://github.com/truecharts/charts/compare/adguard-home-4.0.2...adguard-home-4.0.3) (2022-11-30) - - - - -## [adguard-home-4.0.3](https://github.com/truecharts/charts/compare/adguard-home-4.0.2...adguard-home-4.0.3) (2022-11-30) diff --git a/stable/adguard-home/4.0.11/Chart.yaml b/stable/adguard-home/4.0.11/Chart.yaml deleted file mode 100644 index 75610b30fda..00000000000 --- a/stable/adguard-home/4.0.11/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "0.107.22" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Free and open source, powerful network-wide ads & trackers blocking DNS server. -home: https://truecharts.org/charts/stable/adguard-home -icon: https://truecharts.org/img/hotlink-ok/chart-icons/adguard-home.png -keywords: - - adblock - - adguard -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: adguard-home -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/adguard-home - - https://hub.docker.com/r/adguard/adguardhome -version: 4.0.11 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/adguard-home/4.0.11/app-changelog.md b/stable/adguard-home/4.0.11/app-changelog.md deleted file mode 100644 index fc16e2e4f7a..00000000000 --- a/stable/adguard-home/4.0.11/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [adguard-home-4.0.11](https://github.com/truecharts/charts/compare/adguard-home-4.0.10...adguard-home-4.0.11) (2023-01-20) - -### Chore - -- update container image tccr.io/truecharts/adguard-home to v0.107.22 - - \ No newline at end of file diff --git a/stable/adguard-home/4.0.11/questions.yaml b/stable/adguard-home/4.0.11/questions.yaml deleted file mode 100644 index 55a4620ffdd..00000000000 --- a/stable/adguard-home/4.0.11/questions.yaml +++ /dev/null @@ -1,2289 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10232 - required: true - - variable: dns-tcp - label: dns-tcp Service - description: dns-tcp service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: dns-tcp - label: dns-tcp Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 53 - required: true - - variable: dns-udp - label: dns-udp Service - description: dns-udp service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: dns-udp - label: dns-udp Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 53 - required: true - - variable: dns-https - label: dns-https Service - description: The dns-https service. - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: dns-https - label: dns-https Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10234 - required: true - - variable: dns-https-udp - label: dns-https-udp Service - description: The dns-https-udp service. - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: dns-https-udp - label: dns-https-udp Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10234 - required: true - - variable: dns-crypt - label: dns-crypt Service - description: The dns-crypt service. - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: dns-crypt - label: dns-crypt Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 5443 - required: true - - variable: dns-crypt-udp - label: dns-crypt-udp Service - description: The dns-crypt-udp service. - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: dns-crypt-udp - label: dns-crypt-udp Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 5443 - required: true - - variable: dns-quic-udp-1 - label: dns-quic-udp-1 Service - description: The dns-quic-udp-1 service. - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: dns-quic-udp-1 - label: dns-quic-udp-1 Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 784 - required: true - - variable: dns-quic-udp-2 - label: dns-quic-udp-2 Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 853 - required: true - - variable: dns-quic-udp-3 - label: dns-quic-udp-3 Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8853 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Configuration. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: data - label: App Data Storage - description: Stores the Application Data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/adguard-home/4.0.12/CHANGELOG.md b/stable/adguard-home/4.0.12/CHANGELOG.md new file mode 100644 index 00000000000..4b3f19d750a --- /dev/null +++ b/stable/adguard-home/4.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [adguard-home-4.0.12](https://github.com/truecharts/charts/compare/adguard-home-4.0.11...adguard-home-4.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [adguard-home-4.0.11](https://github.com/truecharts/charts/compare/adguard-home-4.0.10...adguard-home-4.0.11) (2023-01-20) + +### Chore + +- update container image tccr.io/truecharts/adguard-home to v0.107.22 + + + + +## [adguard-home-4.0.10](https://github.com/truecharts/charts/compare/adguard-home-4.0.9...adguard-home-4.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [adguard-home-4.0.9](https://github.com/truecharts/charts/compare/adguard-home-4.0.8...adguard-home-4.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [adguard-home-4.0.8](https://github.com/truecharts/charts/compare/adguard-home-4.0.7...adguard-home-4.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [adguard-home-4.0.7](https://github.com/truecharts/charts/compare/adguard-home-4.0.6...adguard-home-4.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [adguard-home-4.0.6](https://github.com/truecharts/charts/compare/adguard-home-4.0.5...adguard-home-4.0.6) (2022-12-17) + +### Chore + +- update container image tccr.io/truecharts/adguard-home to v0.107.21 + + + + +## [adguard-home-4.0.5](https://github.com/truecharts/charts/compare/adguard-home-4.0.4...adguard-home-4.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [adguard-home-4.0.4](https://github.com/truecharts/charts/compare/adguard-home-4.0.3...adguard-home-4.0.4) (2022-12-07) + +### Chore + +- update container image tccr.io/truecharts/adguard-home to v0.107.20 + + + + +## [adguard-home-4.0.3](https://github.com/truecharts/charts/compare/adguard-home-4.0.2...adguard-home-4.0.3) (2022-11-30) + + + + +## [adguard-home-4.0.3](https://github.com/truecharts/charts/compare/adguard-home-4.0.2...adguard-home-4.0.3) (2022-11-30) + + + + +## [adguard-home-4.0.3](https://github.com/truecharts/charts/compare/adguard-home-4.0.2...adguard-home-4.0.3) (2022-11-30) + diff --git a/stable/adguard-home/4.0.12/Chart.yaml b/stable/adguard-home/4.0.12/Chart.yaml new file mode 100644 index 00000000000..65a679d9a9a --- /dev/null +++ b/stable/adguard-home/4.0.12/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "0.107.22" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Free and open source, powerful network-wide ads & trackers blocking DNS server. +home: https://truecharts.org/charts/stable/adguard-home +icon: https://truecharts.org/img/hotlink-ok/chart-icons/adguard-home.png +keywords: + - adblock + - adguard +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: adguard-home +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/adguard-home + - https://hub.docker.com/adguard/adguardhome +version: 4.0.12 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/adguard-home/4.0.11/README.md b/stable/adguard-home/4.0.12/README.md similarity index 100% rename from stable/adguard-home/4.0.11/README.md rename to stable/adguard-home/4.0.12/README.md diff --git a/stable/adguard-home/4.0.12/app-changelog.md b/stable/adguard-home/4.0.12/app-changelog.md new file mode 100644 index 00000000000..e9ab72fd7d5 --- /dev/null +++ b/stable/adguard-home/4.0.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [adguard-home-4.0.12](https://github.com/truecharts/charts/compare/adguard-home-4.0.11...adguard-home-4.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/adguard-home/4.0.11/app-readme.md b/stable/adguard-home/4.0.12/app-readme.md similarity index 100% rename from stable/adguard-home/4.0.11/app-readme.md rename to stable/adguard-home/4.0.12/app-readme.md diff --git a/stable/amule/2.1.6/charts/common-11.1.2.tgz b/stable/adguard-home/4.0.12/charts/common-11.1.2.tgz similarity index 100% rename from stable/amule/2.1.6/charts/common-11.1.2.tgz rename to stable/adguard-home/4.0.12/charts/common-11.1.2.tgz diff --git a/stable/adguard-home/4.0.11/ix_values.yaml b/stable/adguard-home/4.0.12/ix_values.yaml similarity index 100% rename from stable/adguard-home/4.0.11/ix_values.yaml rename to stable/adguard-home/4.0.12/ix_values.yaml diff --git a/stable/adguard-home/4.0.12/questions.yaml b/stable/adguard-home/4.0.12/questions.yaml new file mode 100644 index 00000000000..65533a0f8c1 --- /dev/null +++ b/stable/adguard-home/4.0.12/questions.yaml @@ -0,0 +1,2330 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10232 + required: true + - variable: dns-tcp + label: dns-tcp Service + description: dns-tcp service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns-tcp + label: dns-tcp Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 53 + required: true + - variable: dns-udp + label: dns-udp Service + description: dns-udp service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns-udp + label: dns-udp Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 53 + required: true + - variable: dns-https + label: dns-https Service + description: The dns-https service. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns-https + label: dns-https Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10234 + required: true + - variable: dns-https-udp + label: dns-https-udp Service + description: The dns-https-udp service. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns-https-udp + label: dns-https-udp Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10234 + required: true + - variable: dns-crypt + label: dns-crypt Service + description: The dns-crypt service. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns-crypt + label: dns-crypt Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 5443 + required: true + - variable: dns-crypt-udp + label: dns-crypt-udp Service + description: The dns-crypt-udp service. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns-crypt-udp + label: dns-crypt-udp Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 5443 + required: true + - variable: dns-quic-udp-1 + label: dns-quic-udp-1 Service + description: The dns-quic-udp-1 service. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns-quic-udp-1 + label: dns-quic-udp-1 Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 784 + required: true + - variable: dns-quic-udp-2 + label: dns-quic-udp-2 Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 853 + required: true + - variable: dns-quic-udp-3 + label: dns-quic-udp-3 Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8853 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: App Data Storage + description: Stores the Application Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/adguard-home/4.0.11/templates/common.yaml b/stable/adguard-home/4.0.12/templates/common.yaml similarity index 100% rename from stable/adguard-home/4.0.11/templates/common.yaml rename to stable/adguard-home/4.0.12/templates/common.yaml diff --git a/stable/amule/2.1.6/values.yaml b/stable/adguard-home/4.0.12/values.yaml similarity index 100% rename from stable/amule/2.1.6/values.yaml rename to stable/adguard-home/4.0.12/values.yaml diff --git a/stable/amule/2.1.6/CHANGELOG.md b/stable/amule/2.1.6/CHANGELOG.md deleted file mode 100644 index 0d890990645..00000000000 --- a/stable/amule/2.1.6/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [amule-2.1.6](https://github.com/truecharts/charts/compare/amule-2.1.5...amule-2.1.6) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [amule-2.1.5](https://github.com/truecharts/charts/compare/amule-2.1.4...amule-2.1.5) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [amule-2.1.4](https://github.com/truecharts/charts/compare/amule-2.1.3...amule-2.1.4) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [amule-2.1.3](https://github.com/truecharts/charts/compare/amule-2.1.2...amule-2.1.3) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [amule-2.1.2](https://github.com/truecharts/charts/compare/amule-2.1.1...amule-2.1.2) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - - - -## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) - - diff --git a/stable/amule/2.1.6/Chart.yaml b/stable/amule/2.1.6/Chart.yaml deleted file mode 100644 index d74034fe043..00000000000 --- a/stable/amule/2.1.6/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Downloaders - - Productivity - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: aMule is an eMule-like client for the eDonkey and Kademlia networks. -home: https://truecharts.org/charts/stable/amule -icon: https://truecharts.org/img/hotlink-ok/chart-icons/amule.png -keywords: - - amule - - Downloaders - - Productivity - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: amule -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/amule - - https://github.com/t-chab/dockerfiles - - https://hub.docker.com/r/tchabaud/amule -type: application -version: 2.1.6 diff --git a/stable/amule/2.1.6/app-changelog.md b/stable/amule/2.1.6/app-changelog.md deleted file mode 100644 index 04570620dc8..00000000000 --- a/stable/amule/2.1.6/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [amule-2.1.6](https://github.com/truecharts/charts/compare/amule-2.1.5...amule-2.1.6) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/amule/2.1.6/app-readme.md b/stable/amule/2.1.6/app-readme.md deleted file mode 100644 index 3a1517aaf88..00000000000 --- a/stable/amule/2.1.6/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -aMule is an eMule-like client for the eDonkey and Kademlia networks. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/amule](https://truecharts.org/charts/stable/amule) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/amule/2.1.6/questions.yaml b/stable/amule/2.1.6/questions.yaml deleted file mode 100644 index f72523bfbb9..00000000000 --- a/stable/amule/2.1.6/questions.yaml +++ /dev/null @@ -1,2092 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: WEBUI_PWD - label: WEBUI_PWD - description: Password for WebUI. - schema: - type: string - default: "" - - variable: WEBUI_TEMPLATE - label: WEBUI_TEMPLATE - description: Alternative material WebUI design. - schema: - type: string - default: default - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 4711 - required: true - - variable: porttcp - label: TCP service port - description: Client to client transfers - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: porttcp - label: TCP Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 4662 - required: true - - variable: portudp - label: UDP service port - description: Extended aMule protocol, Queue Rating, File Reask Ping - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: portudp - label: UDP Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 4672 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: complete - label: Completed Storage Location - description: This is the location for complete downloads. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: incomplete - label: Incomplete Storage Location - description: This is the location for incomplete downloads. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: config - label: Config Storage - description: This is the location for the internal data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/amule/2.1.7/CHANGELOG.md b/stable/amule/2.1.7/CHANGELOG.md new file mode 100644 index 00000000000..e279a6644a2 --- /dev/null +++ b/stable/amule/2.1.7/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [amule-2.1.7](https://github.com/truecharts/charts/compare/amule-2.1.6...amule-2.1.7) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [amule-2.1.6](https://github.com/truecharts/charts/compare/amule-2.1.5...amule-2.1.6) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [amule-2.1.5](https://github.com/truecharts/charts/compare/amule-2.1.4...amule-2.1.5) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [amule-2.1.4](https://github.com/truecharts/charts/compare/amule-2.1.3...amule-2.1.4) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [amule-2.1.3](https://github.com/truecharts/charts/compare/amule-2.1.2...amule-2.1.3) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [amule-2.1.2](https://github.com/truecharts/charts/compare/amule-2.1.1...amule-2.1.2) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) + + + + +## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) + + + + +## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) + + + + +## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) + + + + +## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) + + + + +## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) + + + + +## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) + + + + +## [amule-2.1.1](https://github.com/truecharts/charts/compare/amule-2.1.0...amule-2.1.1) (2022-11-30) + + + diff --git a/stable/amule/2.1.7/Chart.yaml b/stable/amule/2.1.7/Chart.yaml new file mode 100644 index 00000000000..69784d7bf1a --- /dev/null +++ b/stable/amule/2.1.7/Chart.yaml @@ -0,0 +1,33 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Downloaders + - Productivity + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: aMule is an eMule-like client for the eDonkey and Kademlia networks. +home: https://truecharts.org/charts/stable/amule +icon: https://truecharts.org/img/hotlink-ok/chart-icons/amule.png +keywords: + - amule + - Downloaders + - Productivity + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: amule +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/amule + - https://hub.docker.com/tchabaud/amule + - https://github.com/t-chab/dockerfiles +type: application +version: 2.1.7 diff --git a/stable/amule/2.1.6/README.md b/stable/amule/2.1.7/README.md similarity index 100% rename from stable/amule/2.1.6/README.md rename to stable/amule/2.1.7/README.md diff --git a/stable/amule/2.1.7/app-changelog.md b/stable/amule/2.1.7/app-changelog.md new file mode 100644 index 00000000000..e076886dc9d --- /dev/null +++ b/stable/amule/2.1.7/app-changelog.md @@ -0,0 +1,9 @@ + + +## [amule-2.1.7](https://github.com/truecharts/charts/compare/amule-2.1.6...amule-2.1.7) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/amule/2.1.7/app-readme.md b/stable/amule/2.1.7/app-readme.md new file mode 100644 index 00000000000..47fc7b8e719 --- /dev/null +++ b/stable/amule/2.1.7/app-readme.md @@ -0,0 +1,8 @@ +aMule is an eMule-like client for the eDonkey and Kademlia networks. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/amule](https://truecharts.org/charts/stable/amule) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/aria2/7.0.7/charts/common-11.1.2.tgz b/stable/amule/2.1.7/charts/common-11.1.2.tgz similarity index 100% rename from stable/aria2/7.0.7/charts/common-11.1.2.tgz rename to stable/amule/2.1.7/charts/common-11.1.2.tgz diff --git a/stable/amule/2.1.6/ix_values.yaml b/stable/amule/2.1.7/ix_values.yaml similarity index 100% rename from stable/amule/2.1.6/ix_values.yaml rename to stable/amule/2.1.7/ix_values.yaml diff --git a/stable/amule/2.1.7/questions.yaml b/stable/amule/2.1.7/questions.yaml new file mode 100644 index 00000000000..b9f62a27ad1 --- /dev/null +++ b/stable/amule/2.1.7/questions.yaml @@ -0,0 +1,2133 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: WEBUI_PWD + label: WEBUI_PWD + description: Password for WebUI. + schema: + type: string + default: "" + - variable: WEBUI_TEMPLATE + label: WEBUI_TEMPLATE + description: Alternative material WebUI design. + schema: + type: string + default: default + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 4711 + required: true + - variable: porttcp + label: TCP service port + description: Client to client transfers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: porttcp + label: TCP Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 4662 + required: true + - variable: portudp + label: UDP service port + description: Extended aMule protocol, Queue Rating, File Reask Ping + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: portudp + label: UDP Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 4672 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: complete + label: Completed Storage Location + description: This is the location for complete downloads. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: incomplete + label: Incomplete Storage Location + description: This is the location for incomplete downloads. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: config + label: Config Storage + description: This is the location for the internal data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/amule/2.1.6/templates/common.yaml b/stable/amule/2.1.7/templates/common.yaml similarity index 100% rename from stable/amule/2.1.6/templates/common.yaml rename to stable/amule/2.1.7/templates/common.yaml diff --git a/stable/aria2/7.0.7/values.yaml b/stable/amule/2.1.7/values.yaml similarity index 100% rename from stable/aria2/7.0.7/values.yaml rename to stable/amule/2.1.7/values.yaml diff --git a/stable/anonaddy/12.0.21/CHANGELOG.md b/stable/anonaddy/12.0.21/CHANGELOG.md new file mode 100644 index 00000000000..d2925e093d2 --- /dev/null +++ b/stable/anonaddy/12.0.21/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [anonaddy-12.0.21](https://github.com/truecharts/charts/compare/anonaddy-12.0.20...anonaddy-12.0.21) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [anonaddy-12.0.20](https://github.com/truecharts/charts/compare/anonaddy-12.0.19...anonaddy-12.0.20) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [anonaddy-12.0.19](https://github.com/truecharts/charts/compare/anonaddy-12.0.18...anonaddy-12.0.19) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [anonaddy-12.0.18](https://github.com/truecharts/charts/compare/anonaddy-12.0.17...anonaddy-12.0.18) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [anonaddy-12.0.17](https://github.com/truecharts/charts/compare/anonaddy-12.0.16...anonaddy-12.0.17) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [anonaddy-12.0.16](https://github.com/truecharts/charts/compare/anonaddy-12.0.15...anonaddy-12.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [anonaddy-12.0.15](https://github.com/truecharts/charts/compare/anonaddy-12.0.14...anonaddy-12.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [anonaddy-12.0.14](https://github.com/truecharts/charts/compare/anonaddy-12.0.13...anonaddy-12.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [anonaddy-12.0.13](https://github.com/truecharts/charts/compare/anonaddy-12.0.12...anonaddy-12.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [anonaddy-12.0.12](https://github.com/truecharts/charts/compare/anonaddy-12.0.11...anonaddy-12.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [anonaddy-12.0.11](https://github.com/truecharts/charts/compare/anonaddy-12.0.10...anonaddy-12.0.11) (2022-12-19) + +### Chore diff --git a/stable/anonaddy/12.0.21/Chart.yaml b/stable/anonaddy/12.0.21/Chart.yaml new file mode 100644 index 00000000000..b9ff7cb0f83 --- /dev/null +++ b/stable/anonaddy/12.0.21/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +appVersion: "0.13.13" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: "Protect your email from spam using disposable addresses." +home: https://truecharts.org/charts/stable/anonaddy +icon: https://truecharts.org/img/hotlink-ok/chart-icons/anonaddy.png +keywords: + - anonaddy +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: anonaddy +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/anonaddy + - https://hub.docker.com/anonaddy/anonaddy + - https://github.com/anonaddy/docker +version: 12.0.21 +annotations: + truecharts.org/catagories: | + - email + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/aria2/7.0.7/README.md b/stable/anonaddy/12.0.21/README.md similarity index 100% rename from stable/aria2/7.0.7/README.md rename to stable/anonaddy/12.0.21/README.md diff --git a/stable/anonaddy/12.0.21/app-changelog.md b/stable/anonaddy/12.0.21/app-changelog.md new file mode 100644 index 00000000000..e4a1236fb17 --- /dev/null +++ b/stable/anonaddy/12.0.21/app-changelog.md @@ -0,0 +1,9 @@ + + +## [anonaddy-12.0.21](https://github.com/truecharts/charts/compare/anonaddy-12.0.20...anonaddy-12.0.21) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/anonaddy/12.0.21/app-readme.md b/stable/anonaddy/12.0.21/app-readme.md new file mode 100644 index 00000000000..cd09b84c606 --- /dev/null +++ b/stable/anonaddy/12.0.21/app-readme.md @@ -0,0 +1,8 @@ +Protect your email from spam using disposable addresses. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/anonaddy](https://truecharts.org/charts/stable/anonaddy) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/ariang/3.0.8/charts/common-11.1.2.tgz b/stable/anonaddy/12.0.21/charts/common-11.1.2.tgz similarity index 100% rename from stable/ariang/3.0.8/charts/common-11.1.2.tgz rename to stable/anonaddy/12.0.21/charts/common-11.1.2.tgz diff --git a/stable/filerun/6.0.17/charts/mariadb-5.0.25.tgz b/stable/anonaddy/12.0.21/charts/mariadb-5.0.25.tgz similarity index 100% rename from stable/filerun/6.0.17/charts/mariadb-5.0.25.tgz rename to stable/anonaddy/12.0.21/charts/mariadb-5.0.25.tgz diff --git a/stable/baserow/6.0.24/charts/redis-5.0.29.tgz b/stable/anonaddy/12.0.21/charts/redis-5.0.29.tgz similarity index 100% rename from stable/baserow/6.0.24/charts/redis-5.0.29.tgz rename to stable/anonaddy/12.0.21/charts/redis-5.0.29.tgz diff --git a/stable/anonaddy/12.0.21/ix_values.yaml b/stable/anonaddy/12.0.21/ix_values.yaml new file mode 100644 index 00000000000..00adc242ee5 --- /dev/null +++ b/stable/anonaddy/12.0.21/ix_values.yaml @@ -0,0 +1,78 @@ +image: + repository: tccr.io/truecharts/anonaddy + tag: 0.13.13@sha256:495809d341b08ea6d02c7b0b318d48b00b7243392affd0d278ec1aa188a76ccd + pullPolicy: IfNotPresent + +strategy: + type: Recreate + +securityContext: + runAsNonRoot: false + readOnlyRootFilesystem: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +env: + ANONADDY_DOMAIN: "chart-example.local" + DB_DATABASE: anonaddy + DB_USERNAME: anonaddy + DB_HOST: + secretKeyRef: + name: mariadbcreds + key: plainhost + DB_PASSWORD: + secretKeyRef: + name: mariadbcreds + key: mariadb-password + REDIS_HOST: + secretKeyRef: + name: rediscreds + key: plainhost + REDIS_PASSWORD: + secretKeyRef: + name: rediscreds + key: redis-password + APP_KEY: + secretKeyRef: + name: appkey + key: appkey + ANONADDY_SECRET: + secretKeyRef: + name: appkey + key: secret + +service: + main: + ports: + main: + port: 10110 + targetPort: 8000 + smtp: + enabled: true + ports: + smtp: + enabled: true + port: 25 + targetPort: 25 + +persistence: + varrun: + enabled: true + config: + enabled: true + mountPath: "/config" + +redis: + enabled: true + existingSecret: "rediscreds" + +mariadb: + enabled: true + mariadbUsername: anonaddy + mariadbDatabase: anonaddy + existingSecret: "mariadbcreds" + +portal: + enabled: true diff --git a/stable/anonaddy/12.0.21/questions.yaml b/stable/anonaddy/12.0.21/questions.yaml new file mode 100644 index 00000000000..18fd70a3229 --- /dev/null +++ b/stable/anonaddy/12.0.21/questions.yaml @@ -0,0 +1,1935 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ANONADDY_DOMAIN + label: "ANONADDY_DOMAIN" + schema: + type: string + default: "" + required: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10110 + required: true + - variable: smtp + label: "smtp Service" + description: "The smtp service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: smtp + label: "smtp Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/anonaddy/12.0.21/templates/_appkey.tpl b/stable/anonaddy/12.0.21/templates/_appkey.tpl new file mode 100644 index 00000000000..daf70c0c464 --- /dev/null +++ b/stable/anonaddy/12.0.21/templates/_appkey.tpl @@ -0,0 +1,28 @@ +{{/* +This template generates a random password and ensures it persists across updates/edits to the chart +*/}} +{{- define "anonaddy.appkey" -}} +--- +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + labels: + {{- include "tc.common.labels" . | nindent 4 }} + name: appkey +{{- $keyprevious := lookup "v1" "Secret" .Release.Namespace "appkey" }} +{{- $appkey := "" }} +{{- $secret := "" }} +data: +{{- if $keyprevious }} + {{- $appkey = ( index $keyprevious.data "appkey" ) }} + {{- $secret = ( index $keyprevious.data "secret" ) }} + appkey: {{ ( index $keyprevious.data "appkey" ) }} + secret: {{ ( index $keyprevious.data "secret" ) }} +{{- else }} + {{- $appkey = randAlphaNum 32 }} + {{- $secret = randAlphaNum 32 }} + appkey: {{ $appkey | b64enc }} + secret: {{ $secret | b64enc }} +{{- end }} +{{- end -}} diff --git a/stable/anonaddy/12.0.21/templates/common.yaml b/stable/anonaddy/12.0.21/templates/common.yaml new file mode 100644 index 00000000000..65b6d2f295f --- /dev/null +++ b/stable/anonaddy/12.0.21/templates/common.yaml @@ -0,0 +1,9 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{/* Render appkey for anonaddy */}} +{{- include "anonaddy.appkey" . }} + + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/stable/ariang/3.0.8/values.yaml b/stable/anonaddy/12.0.21/values.yaml similarity index 100% rename from stable/ariang/3.0.8/values.yaml rename to stable/anonaddy/12.0.21/values.yaml diff --git a/stable/aria2/7.0.7/CHANGELOG.md b/stable/aria2/7.0.7/CHANGELOG.md deleted file mode 100644 index 4384e3d157d..00000000000 --- a/stable/aria2/7.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [aria2-7.0.7](https://github.com/truecharts/charts/compare/aria2-7.0.6...aria2-7.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [aria2-7.0.6](https://github.com/truecharts/charts/compare/aria2-7.0.5...aria2-7.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [aria2-7.0.5](https://github.com/truecharts/charts/compare/aria2-7.0.4...aria2-7.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [aria2-7.0.4](https://github.com/truecharts/charts/compare/aria2-7.0.3...aria2-7.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [aria2-7.0.3](https://github.com/truecharts/charts/compare/aria2-7.0.2...aria2-7.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - - - -## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) - - diff --git a/stable/aria2/7.0.7/Chart.yaml b/stable/aria2/7.0.7/Chart.yaml deleted file mode 100644 index ad169c0e53a..00000000000 --- a/stable/aria2/7.0.7/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: aria server for downloading web content -home: https://truecharts.org/charts/stable/aria2 -icon: https://truecharts.org/img/hotlink-ok/chart-icons/aria2.png -keywords: - - aria2 -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: aria2 -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/aria2 - - https://github.com/P3TERX/Aria2-Pro-Docker -version: 7.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/aria2/7.0.7/app-changelog.md b/stable/aria2/7.0.7/app-changelog.md deleted file mode 100644 index 1272f051bd7..00000000000 --- a/stable/aria2/7.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [aria2-7.0.7](https://github.com/truecharts/charts/compare/aria2-7.0.6...aria2-7.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/aria2/7.0.7/app-readme.md b/stable/aria2/7.0.7/app-readme.md deleted file mode 100644 index 66e3a226a63..00000000000 --- a/stable/aria2/7.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -aria server for downloading web content - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/aria2](https://truecharts.org/charts/stable/aria2) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/aria2/7.0.7/questions.yaml b/stable/aria2/7.0.7/questions.yaml deleted file mode 100644 index fba038a483d..00000000000 --- a/stable/aria2/7.0.7/questions.yaml +++ /dev/null @@ -1,1895 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: RPC_SECRET - label: "RPC_SECRET" - description: "Sets the RPC_SECRET env var" - schema: - type: string - private: true - default: "REPLACETHIS" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 6800 - required: true - - variable: listen - label: "Listen Service" - description: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: listen - label: "Listen Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 6888 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/aria2/7.0.8/CHANGELOG.md b/stable/aria2/7.0.8/CHANGELOG.md new file mode 100644 index 00000000000..253b481982d --- /dev/null +++ b/stable/aria2/7.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [aria2-7.0.8](https://github.com/truecharts/charts/compare/aria2-7.0.7...aria2-7.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [aria2-7.0.7](https://github.com/truecharts/charts/compare/aria2-7.0.6...aria2-7.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [aria2-7.0.6](https://github.com/truecharts/charts/compare/aria2-7.0.5...aria2-7.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [aria2-7.0.5](https://github.com/truecharts/charts/compare/aria2-7.0.4...aria2-7.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [aria2-7.0.4](https://github.com/truecharts/charts/compare/aria2-7.0.3...aria2-7.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [aria2-7.0.3](https://github.com/truecharts/charts/compare/aria2-7.0.2...aria2-7.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) + + + + +## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) + + + + +## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) + + + + +## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) + + + + +## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) + + + + +## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) + + + + +## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) + + + + +## [aria2-7.0.2](https://github.com/truecharts/charts/compare/aria2-7.0.1...aria2-7.0.2) (2022-11-30) + + + diff --git a/stable/aria2/7.0.8/Chart.yaml b/stable/aria2/7.0.8/Chart.yaml new file mode 100644 index 00000000000..9bbfe04cb74 --- /dev/null +++ b/stable/aria2/7.0.8/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: aria server for downloading web content +home: https://truecharts.org/charts/stable/aria2 +icon: https://truecharts.org/img/hotlink-ok/chart-icons/aria2.png +keywords: + - aria2 +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: aria2 +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/aria2 + - https://github.com/P3TERX/Aria2-Pro-Docker +version: 7.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/ariang/3.0.8/README.md b/stable/aria2/7.0.8/README.md similarity index 100% rename from stable/ariang/3.0.8/README.md rename to stable/aria2/7.0.8/README.md diff --git a/stable/aria2/7.0.8/app-changelog.md b/stable/aria2/7.0.8/app-changelog.md new file mode 100644 index 00000000000..bf0e13b0207 --- /dev/null +++ b/stable/aria2/7.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [aria2-7.0.8](https://github.com/truecharts/charts/compare/aria2-7.0.7...aria2-7.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/aria2/7.0.8/app-readme.md b/stable/aria2/7.0.8/app-readme.md new file mode 100644 index 00000000000..f0f7da9b3d6 --- /dev/null +++ b/stable/aria2/7.0.8/app-readme.md @@ -0,0 +1,8 @@ +aria server for downloading web content + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/aria2](https://truecharts.org/charts/stable/aria2) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/audiobookshelf/4.0.15/charts/common-11.1.2.tgz b/stable/aria2/7.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/audiobookshelf/4.0.15/charts/common-11.1.2.tgz rename to stable/aria2/7.0.8/charts/common-11.1.2.tgz diff --git a/stable/aria2/7.0.7/ix_values.yaml b/stable/aria2/7.0.8/ix_values.yaml similarity index 100% rename from stable/aria2/7.0.7/ix_values.yaml rename to stable/aria2/7.0.8/ix_values.yaml diff --git a/stable/aria2/7.0.8/questions.yaml b/stable/aria2/7.0.8/questions.yaml new file mode 100644 index 00000000000..5923fb6b76f --- /dev/null +++ b/stable/aria2/7.0.8/questions.yaml @@ -0,0 +1,1936 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: RPC_SECRET + label: "RPC_SECRET" + description: "Sets the RPC_SECRET env var" + schema: + type: string + private: true + default: "REPLACETHIS" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6800 + required: true + - variable: listen + label: "Listen Service" + description: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: listen + label: "Listen Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 6888 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/aria2/7.0.7/templates/common.yaml b/stable/aria2/7.0.8/templates/common.yaml similarity index 100% rename from stable/aria2/7.0.7/templates/common.yaml rename to stable/aria2/7.0.8/templates/common.yaml diff --git a/stable/audiobookshelf/4.0.15/values.yaml b/stable/aria2/7.0.8/values.yaml similarity index 100% rename from stable/audiobookshelf/4.0.15/values.yaml rename to stable/aria2/7.0.8/values.yaml diff --git a/stable/ariang/3.0.8/CHANGELOG.md b/stable/ariang/3.0.8/CHANGELOG.md deleted file mode 100644 index 5e36ae7eaed..00000000000 --- a/stable/ariang/3.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ariang-3.0.8](https://github.com/truecharts/charts/compare/ariang-3.0.7...ariang-3.0.8) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/ariang to v1.3.2 ([#6221](https://github.com/truecharts/charts/issues/6221)) - - - - -## [ariang-3.0.7](https://github.com/truecharts/charts/compare/ariang-3.0.6...ariang-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [ariang-3.0.6](https://github.com/truecharts/charts/compare/ariang-3.0.5...ariang-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [ariang-3.0.5](https://github.com/truecharts/charts/compare/ariang-3.0.4...ariang-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [ariang-3.0.4](https://github.com/truecharts/charts/compare/ariang-3.0.3...ariang-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [ariang-3.0.3](https://github.com/truecharts/charts/compare/ariang-3.0.2...ariang-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) - - - - -## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) - - - - -## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) - - - - -## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) - - - - -## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) - - - - -## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) - - - - -## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) - - - - -## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) - - - diff --git a/stable/ariang/3.0.8/Chart.yaml b/stable/ariang/3.0.8/Chart.yaml deleted file mode 100644 index 519cf9343d2..00000000000 --- a/stable/ariang/3.0.8/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.3.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: A modern web frontend making aria2 easier to use | Aria2 WebUI. -home: https://truecharts.org/charts/stable/ariang -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ariang.png -keywords: - - ariang -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ariang -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/ariang - - https://hub.docker.com/r/leonismoe/ariang - - https://github.com/leonismoe/docker-images -version: 3.0.8 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/ariang/3.0.8/app-changelog.md b/stable/ariang/3.0.8/app-changelog.md deleted file mode 100644 index 59db530776e..00000000000 --- a/stable/ariang/3.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ariang-3.0.8](https://github.com/truecharts/charts/compare/ariang-3.0.7...ariang-3.0.8) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/ariang to v1.3.2 ([#6221](https://github.com/truecharts/charts/issues/6221)) - - \ No newline at end of file diff --git a/stable/ariang/3.0.8/app-readme.md b/stable/ariang/3.0.8/app-readme.md deleted file mode 100644 index 2edea46ff8e..00000000000 --- a/stable/ariang/3.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A modern web frontend making aria2 easier to use | Aria2 WebUI. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/ariang](https://truecharts.org/charts/stable/ariang) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/ariang/3.0.8/questions.yaml b/stable/ariang/3.0.8/questions.yaml deleted file mode 100644 index 18197656ef9..00000000000 --- a/stable/ariang/3.0.8/questions.yaml +++ /dev/null @@ -1,1751 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10276 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/ariang/3.0.9/CHANGELOG.md b/stable/ariang/3.0.9/CHANGELOG.md new file mode 100644 index 00000000000..95b084b551d --- /dev/null +++ b/stable/ariang/3.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ariang-3.0.9](https://github.com/truecharts/charts/compare/ariang-3.0.8...ariang-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ariang-3.0.8](https://github.com/truecharts/charts/compare/ariang-3.0.7...ariang-3.0.8) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/ariang to v1.3.2 ([#6221](https://github.com/truecharts/charts/issues/6221)) + + + + +## [ariang-3.0.7](https://github.com/truecharts/charts/compare/ariang-3.0.6...ariang-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [ariang-3.0.6](https://github.com/truecharts/charts/compare/ariang-3.0.5...ariang-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [ariang-3.0.5](https://github.com/truecharts/charts/compare/ariang-3.0.4...ariang-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [ariang-3.0.4](https://github.com/truecharts/charts/compare/ariang-3.0.3...ariang-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [ariang-3.0.3](https://github.com/truecharts/charts/compare/ariang-3.0.2...ariang-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) + + + + +## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) + + + + +## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) + + + + +## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) + + + + +## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) + + + + +## [ariang-3.0.2](https://github.com/truecharts/charts/compare/ariang-3.0.1...ariang-3.0.2) (2022-11-30) + + + + diff --git a/stable/ariang/3.0.9/Chart.yaml b/stable/ariang/3.0.9/Chart.yaml new file mode 100644 index 00000000000..7d7a6159723 --- /dev/null +++ b/stable/ariang/3.0.9/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.3.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: A modern web frontend making aria2 easier to use | Aria2 WebUI. +home: https://truecharts.org/charts/stable/ariang +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ariang.png +keywords: + - ariang +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ariang +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/ariang + - https://hub.docker.com/leonismoe/ariang + - https://github.com/leonismoe/docker-images +version: 3.0.9 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/audiobookshelf/4.0.15/README.md b/stable/ariang/3.0.9/README.md similarity index 100% rename from stable/audiobookshelf/4.0.15/README.md rename to stable/ariang/3.0.9/README.md diff --git a/stable/ariang/3.0.9/app-changelog.md b/stable/ariang/3.0.9/app-changelog.md new file mode 100644 index 00000000000..d79fa6300ca --- /dev/null +++ b/stable/ariang/3.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ariang-3.0.9](https://github.com/truecharts/charts/compare/ariang-3.0.8...ariang-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/ariang/3.0.9/app-readme.md b/stable/ariang/3.0.9/app-readme.md new file mode 100644 index 00000000000..8b9ef352106 --- /dev/null +++ b/stable/ariang/3.0.9/app-readme.md @@ -0,0 +1,8 @@ +A modern web frontend making aria2 easier to use | Aria2 WebUI. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/ariang](https://truecharts.org/charts/stable/ariang) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/automatic-music-downloader/4.0.7/charts/common-11.1.2.tgz b/stable/ariang/3.0.9/charts/common-11.1.2.tgz similarity index 100% rename from stable/automatic-music-downloader/4.0.7/charts/common-11.1.2.tgz rename to stable/ariang/3.0.9/charts/common-11.1.2.tgz diff --git a/stable/ariang/3.0.8/ix_values.yaml b/stable/ariang/3.0.9/ix_values.yaml similarity index 100% rename from stable/ariang/3.0.8/ix_values.yaml rename to stable/ariang/3.0.9/ix_values.yaml diff --git a/stable/ariang/3.0.9/questions.yaml b/stable/ariang/3.0.9/questions.yaml new file mode 100644 index 00000000000..255a93ae0c3 --- /dev/null +++ b/stable/ariang/3.0.9/questions.yaml @@ -0,0 +1,1792 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10276 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/ariang/3.0.8/templates/common.yaml b/stable/ariang/3.0.9/templates/common.yaml similarity index 100% rename from stable/ariang/3.0.8/templates/common.yaml rename to stable/ariang/3.0.9/templates/common.yaml diff --git a/stable/automatic-music-downloader/4.0.7/values.yaml b/stable/ariang/3.0.9/values.yaml similarity index 100% rename from stable/automatic-music-downloader/4.0.7/values.yaml rename to stable/ariang/3.0.9/values.yaml diff --git a/stable/audiobookshelf/4.0.15/CHANGELOG.md b/stable/audiobookshelf/4.0.15/CHANGELOG.md deleted file mode 100644 index 635cb3f1e73..00000000000 --- a/stable/audiobookshelf/4.0.15/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [audiobookshelf-4.0.15](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.14...audiobookshelf-4.0.15) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/audiobookshelf to v2.2.12 - - - - -## [audiobookshelf-4.0.14](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.13...audiobookshelf-4.0.14) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [audiobookshelf-4.0.13](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.12...audiobookshelf-4.0.13) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [audiobookshelf-4.0.12](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.11...audiobookshelf-4.0.12) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [audiobookshelf-4.0.11](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.10...audiobookshelf-4.0.11) (2022-12-20) - -### Chore - -- update container image tccr.io/truecharts/audiobookshelf to v2.2.11 - - - - -## [audiobookshelf-4.0.10](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.9...audiobookshelf-4.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [audiobookshelf-4.0.9](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.8...audiobookshelf-4.0.9) (2022-12-19) - -### Chore - -- update container image tccr.io/truecharts/audiobookshelf to v2.2.10 - - - - -## [audiobookshelf-4.0.8](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.7...audiobookshelf-4.0.8) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [audiobookshelf-4.0.7](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.6...audiobookshelf-4.0.7) (2022-12-02) - -### Chore - -- update container image tccr.io/truecharts/audiobookshelf to v2.2.8 - - - - -## [audiobookshelf-4.0.6](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.5...audiobookshelf-4.0.6) (2022-12-01) - -### Chore - -- update container image tccr.io/truecharts/audiobookshelf to v2.2.7 - - - - -## [audiobookshelf-4.0.5](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.3...audiobookshelf-4.0.5) (2022-11-30) - -### Chore diff --git a/stable/audiobookshelf/4.0.15/Chart.yaml b/stable/audiobookshelf/4.0.15/Chart.yaml deleted file mode 100644 index 871f01f6267..00000000000 --- a/stable/audiobookshelf/4.0.15/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "2.2.12" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Audiobookshelf is a self-hosted audiobook server for managing and playing your audiobooks. -home: https://truecharts.org/charts/stable/audiobookshelf -icon: https://truecharts.org/img/hotlink-ok/chart-icons/audiobookshelf.png -keywords: - - audiobookshelf -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: audiobookshelf -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/audiobookshelf - - https://hub.docker.com/r/advplyr/audiobookshelf - - https://github.com/advplyr/audiobookshelf -version: 4.0.15 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/audiobookshelf/4.0.15/app-changelog.md b/stable/audiobookshelf/4.0.15/app-changelog.md deleted file mode 100644 index 1a19b5afedd..00000000000 --- a/stable/audiobookshelf/4.0.15/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [audiobookshelf-4.0.15](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.14...audiobookshelf-4.0.15) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/audiobookshelf to v2.2.12 - - \ No newline at end of file diff --git a/stable/audiobookshelf/4.0.15/app-readme.md b/stable/audiobookshelf/4.0.15/app-readme.md deleted file mode 100644 index f434beaa12b..00000000000 --- a/stable/audiobookshelf/4.0.15/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Audiobookshelf is a self-hosted audiobook server for managing and playing your audiobooks. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/audiobookshelf](https://truecharts.org/charts/stable/audiobookshelf) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/audiobookshelf/4.0.15/questions.yaml b/stable/audiobookshelf/4.0.15/questions.yaml deleted file mode 100644 index f826c4f9c13..00000000000 --- a/stable/audiobookshelf/4.0.15/questions.yaml +++ /dev/null @@ -1,1969 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10223 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Configuration. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: audiobooks - label: App Audiobooks Storage - description: Stores the Application Audiobooks. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: metadata - label: App Metadata Storage - description: Stores the Application Metadata. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/audiobookshelf/4.0.16/CHANGELOG.md b/stable/audiobookshelf/4.0.16/CHANGELOG.md new file mode 100644 index 00000000000..fdfd0678f6a --- /dev/null +++ b/stable/audiobookshelf/4.0.16/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [audiobookshelf-4.0.16](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.15...audiobookshelf-4.0.16) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [audiobookshelf-4.0.15](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.14...audiobookshelf-4.0.15) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/audiobookshelf to v2.2.12 + + + + +## [audiobookshelf-4.0.14](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.13...audiobookshelf-4.0.14) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [audiobookshelf-4.0.13](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.12...audiobookshelf-4.0.13) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [audiobookshelf-4.0.12](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.11...audiobookshelf-4.0.12) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [audiobookshelf-4.0.11](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.10...audiobookshelf-4.0.11) (2022-12-20) + +### Chore + +- update container image tccr.io/truecharts/audiobookshelf to v2.2.11 + + + + +## [audiobookshelf-4.0.10](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.9...audiobookshelf-4.0.10) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [audiobookshelf-4.0.9](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.8...audiobookshelf-4.0.9) (2022-12-19) + +### Chore + +- update container image tccr.io/truecharts/audiobookshelf to v2.2.10 + + + + +## [audiobookshelf-4.0.8](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.7...audiobookshelf-4.0.8) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [audiobookshelf-4.0.7](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.6...audiobookshelf-4.0.7) (2022-12-02) + +### Chore + +- update container image tccr.io/truecharts/audiobookshelf to v2.2.8 + + + + +## [audiobookshelf-4.0.6](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.5...audiobookshelf-4.0.6) (2022-12-01) + +### Chore diff --git a/stable/audiobookshelf/4.0.16/Chart.yaml b/stable/audiobookshelf/4.0.16/Chart.yaml new file mode 100644 index 00000000000..4d83f95e4b0 --- /dev/null +++ b/stable/audiobookshelf/4.0.16/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "2.2.12" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Audiobookshelf is a self-hosted audiobook server for managing and playing your audiobooks. +home: https://truecharts.org/charts/stable/audiobookshelf +icon: https://truecharts.org/img/hotlink-ok/chart-icons/audiobookshelf.png +keywords: + - audiobookshelf +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: audiobookshelf +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/audiobookshelf + - https://hub.docker.com/advplyr/audiobookshelf + - https://github.com/advplyr/audiobookshelf +version: 4.0.16 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/automatic-music-downloader/4.0.7/README.md b/stable/audiobookshelf/4.0.16/README.md similarity index 100% rename from stable/automatic-music-downloader/4.0.7/README.md rename to stable/audiobookshelf/4.0.16/README.md diff --git a/stable/audiobookshelf/4.0.16/app-changelog.md b/stable/audiobookshelf/4.0.16/app-changelog.md new file mode 100644 index 00000000000..c11acb69966 --- /dev/null +++ b/stable/audiobookshelf/4.0.16/app-changelog.md @@ -0,0 +1,9 @@ + + +## [audiobookshelf-4.0.16](https://github.com/truecharts/charts/compare/audiobookshelf-4.0.15...audiobookshelf-4.0.16) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/audiobookshelf/4.0.16/app-readme.md b/stable/audiobookshelf/4.0.16/app-readme.md new file mode 100644 index 00000000000..d1bd962cf0b --- /dev/null +++ b/stable/audiobookshelf/4.0.16/app-readme.md @@ -0,0 +1,8 @@ +Audiobookshelf is a self-hosted audiobook server for managing and playing your audiobooks. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/audiobookshelf](https://truecharts.org/charts/stable/audiobookshelf) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/avidemux/3.0.7/charts/common-11.1.2.tgz b/stable/audiobookshelf/4.0.16/charts/common-11.1.2.tgz similarity index 100% rename from stable/avidemux/3.0.7/charts/common-11.1.2.tgz rename to stable/audiobookshelf/4.0.16/charts/common-11.1.2.tgz diff --git a/stable/audiobookshelf/4.0.15/ix_values.yaml b/stable/audiobookshelf/4.0.16/ix_values.yaml similarity index 100% rename from stable/audiobookshelf/4.0.15/ix_values.yaml rename to stable/audiobookshelf/4.0.16/ix_values.yaml diff --git a/stable/audiobookshelf/4.0.16/questions.yaml b/stable/audiobookshelf/4.0.16/questions.yaml new file mode 100644 index 00000000000..2a7a913fd6f --- /dev/null +++ b/stable/audiobookshelf/4.0.16/questions.yaml @@ -0,0 +1,2010 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10223 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: audiobooks + label: App Audiobooks Storage + description: Stores the Application Audiobooks. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: metadata + label: App Metadata Storage + description: Stores the Application Metadata. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/audiobookshelf/4.0.15/templates/_secrets.tpl b/stable/audiobookshelf/4.0.16/templates/_secrets.tpl similarity index 100% rename from stable/audiobookshelf/4.0.15/templates/_secrets.tpl rename to stable/audiobookshelf/4.0.16/templates/_secrets.tpl diff --git a/stable/audiobookshelf/4.0.15/templates/common.yaml b/stable/audiobookshelf/4.0.16/templates/common.yaml similarity index 100% rename from stable/audiobookshelf/4.0.15/templates/common.yaml rename to stable/audiobookshelf/4.0.16/templates/common.yaml diff --git a/stable/avidemux/3.0.7/values.yaml b/stable/audiobookshelf/4.0.16/values.yaml similarity index 100% rename from stable/avidemux/3.0.7/values.yaml rename to stable/audiobookshelf/4.0.16/values.yaml diff --git a/stable/automatic-music-downloader/4.0.7/CHANGELOG.md b/stable/automatic-music-downloader/4.0.7/CHANGELOG.md deleted file mode 100644 index 83cdf915829..00000000000 --- a/stable/automatic-music-downloader/4.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [automatic-music-downloader-4.0.7](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.6...automatic-music-downloader-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [automatic-music-downloader-4.0.6](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.5...automatic-music-downloader-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [automatic-music-downloader-4.0.5](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.4...automatic-music-downloader-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [automatic-music-downloader-4.0.4](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.3...automatic-music-downloader-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [automatic-music-downloader-4.0.3](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.2...automatic-music-downloader-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - - - -## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) - - diff --git a/stable/automatic-music-downloader/4.0.7/Chart.yaml b/stable/automatic-music-downloader/4.0.7/Chart.yaml deleted file mode 100644 index 4415d09f787..00000000000 --- a/stable/automatic-music-downloader/4.0.7/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A Lidarr companion script to automatically download music for Lidarr. -home: https://truecharts.org/charts/stable/automatic-music-downloader -icon: https://truecharts.org/img/hotlink-ok/chart-icons/automatic-music-downloader.png -keywords: - - automatic - - music - - downloader - - deemix -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: automatic-music-downloader -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/automatic-music-downloader - - https://github.com/RandomNinjaAtk/docker-amd - - https://hub.docker.com/r/randomninjaatk/amd -type: application -version: 4.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/automatic-music-downloader/4.0.7/app-changelog.md b/stable/automatic-music-downloader/4.0.7/app-changelog.md deleted file mode 100644 index 35b389da77e..00000000000 --- a/stable/automatic-music-downloader/4.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [automatic-music-downloader-4.0.7](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.6...automatic-music-downloader-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/automatic-music-downloader/4.0.7/app-readme.md b/stable/automatic-music-downloader/4.0.7/app-readme.md deleted file mode 100644 index 08617e807d8..00000000000 --- a/stable/automatic-music-downloader/4.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A Lidarr companion script to automatically download music for Lidarr. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/automatic-music-downloader](https://truecharts.org/charts/stable/automatic-music-downloader) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/automatic-music-downloader/4.0.7/questions.yaml b/stable/automatic-music-downloader/4.0.7/questions.yaml deleted file mode 100644 index 138f9180375..00000000000 --- a/stable/automatic-music-downloader/4.0.7/questions.yaml +++ /dev/null @@ -1,1801 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: AUTOSTART - label: "Auto Start" - description: "true = Enabled :: Runs script automatically on startup" - schema: - type: boolean - default: true - - variable: SCRIPTINTERVAL - label: "Script Interval" - description: "#s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when AUTOSTART is enabled" - schema: - type: string - default: "1h" - - variable: DOWNLOADMODE - label: "Download Mode" - description: > - "`wanted` or `artist` :: wanted mode only download missing/cutoff :: - artist mode downloads all albums by an artist (requires lidarr volume mapping root media folders for import)" - schema: - type: string - default: "wanted" - enum: - - value: "wanted" - description: "Only missing/cutoff" - - value: "artist" - description: "All albums" - - variable: FALLBACKSEARCH - label: "Fallback Search" - description: "True or False :: True = enabled :: Allows DL client to search for missing songs when they are not available" - schema: - type: boolean - default: true - - variable: LIST - label: "LIST" - description: "Both or missing or cutoff :: both = missing + cutoff :: missng = lidarr missing list :: cutoff = lidarr cutoff list" - schema: - type: string - default: "both" - enum: - - value: "both" - description: "missing + cutoff" - - value: "missing" - description: "lidarr missing list" - - value: "cutoff" - description: "lidarr cutoff list" - - variable: SearchType - label: "Search Type" - description: | - both or artist or fuzzy - both = artist + fuzzy searching - artist = only artist searching - fuzzy = only fuzzy searching (Various Artist is always fuzzy searched, regardless of setting) - schema: - type: string - default: "both" - enum: - - value: "both" - description: "Artist + fuzzy searching." - - value: "artist" - description: "Only artist searching." - - value: "fuzzy" - description: "Only fuzzy searching." - - variable: Concurrency - label: "Concurrency" - description: "Number of concurrent downloads" - schema: - type: int - default: 1 - - variable: EMBEDDED_COVER_QUALITY - label: "Embedded Cover Quality" - description: "Controls the quality of the cover image compression in percentage, 100 = no compression" - schema: - type: int - default: 80 - - variable: FORMAT - label: "Format" - description: | - FLAC or MP3 or OPUS or AAC or ALAC. - FLAC is an audio coding format for lossless compression of digital audio. - MP3 (or mp3) as a file format commonly designates files containing an elementary stream of MPEG-1 Audio or MPEG-2 Audio encoded data. - Opus is a lossy audio coding format developed by the Xiph.Org Foundation and standardized by the Internet Engineering Task Force. - Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio compression. - schema: - type: string - default: "FLAC" - enum: - - value: "FLAC" - description: "FLAC" - - value: "MP3" - description: "MP3" - - value: "OPUS" - description: "OPUS" - - value: "AAC" - description: "AAC" - - value: "ALAC" - description: "ALAC" - - variable: BITRATE - label: "Bit Rate" - description: "FLAC -> OPUS/AAC/MP3 will be converted using this bitrate (MP3 320/128 is native, not converted)" - schema: - type: int - default: 320 - - variable: ENABLEPOSTPROCESSING - label: "Enable Postprocessing" - description: "true = enabled :: enables or disables post processing processes as much as possible" - schema: - type: boolean - default: true - - variable: FORCECONVERT - label: "Force Convert" - description: "true = enabled :: This will convert lossy MP3 to desired target format (exluding FLAC/ALAC, ALAC will convert to AAC)" - schema: - type: boolean - default: true - - variable: requirequality - label: "Require Quality" - description: "true = enabled :: Requires all downloaded files match target file extension (mp3 or flac) when enabled" - schema: - type: boolean - default: true - - variable: MatchDistance - label: "Match Distance" - description: > - "Set as an integer, the higher the number, the more lenient it is. - Example: A match score of 0 is a perfect match :: For more information, - this score is produced using this function: Algorithm Implementation/Strings/Levenshtein distance" - schema: - type: int - default: 10 - - variable: replaygain - label: "Replay Gain" - description: "true = enabled :: Scans and analyzes files to add replaygain tags to song metadata" - schema: - type: boolean - default: true - - variable: FolderPermissions - label: "Folder Permissions" - description: "Based on chmod linux permissions" - schema: - type: int - default: 766 - - variable: FilePermissions - label: "File Permissions" - description: "Based on chmod linux permissions" - schema: - type: int - default: 666 - - variable: MBRAINZMIRROR - label: "Mbrainz Mirror" - description: "OPTIONAL :: Only change if using a different mirror" - schema: - type: string - default: "https://musicbrainz.org" - - variable: MBRATELIMIT - label: "Mb Rate Limit" - description: "OPTIONAL: musicbrainz rate limit, musicbrainz allows only 1 connection per second, max setting is 10 :: Set to 101 to disable limit" - schema: - type: int - default: 1 - - variable: LidarrUrl - label: "Lidarr Url" - description: "Set domain or IP to your Lidarr instance including port. If using reverse proxy, do not use a trailing slash. Ensure you specify http/s." - schema: - type: string - default: "http://x.x.x.x:8686" - - variable: LidarrAPIkey - label: "Lidarr Api Key" - description: "Lidarr API key." - schema: - type: string - default: "LIDARRAPI" - - variable: ARL_TOKEN - label: "ARL Token" - description: "Deezer ARL Cookie" - schema: - type: string - default: "ARLTOKEN" - - variable: NOTIFYPLEX - label: "Notify PLEX" - description: "true = enabled :: ONLY APPLIES ARTIST MODE :: Plex must have a music library added and be configured to use the exact same mount point as Lidarr's root folder" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PLEXLIBRARYNAME - label: "PLEX Library Name" - description: "This must exactly match the name of the Plex Library that contains the Lidarr Media Folder data" - schema: - type: string - default: "Music" - - variable: PLEXURL - label: "PLEX URL" - description: "Path to PLEX." - schema: - type: string - default: "http://x.x.x.x:32400" - - variable: PLEXTOKEN - label: "PLEX Token" - description: "PLEX API token." - schema: - type: string - default: "plextoken" - - variable: ALBUM_TYPE_FILTER - label: "Album Type Filter" - description: 'Filter Types: COMPILE, SINGLE, ALBUM, EP (this is a ", " separated list of Album Types to skip) (Applicable to artist mode only)' - schema: - type: string - default: "COMPILE" - - variable: POSTPROCESSTHREADS - label: "Post Process Threads" - description: "Controls number of threads used for Format conversion and replay gain tagging" - schema: - type: int - default: 1 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/automatic-music-downloader/4.0.8/CHANGELOG.md b/stable/automatic-music-downloader/4.0.8/CHANGELOG.md new file mode 100644 index 00000000000..dc43d7d93c7 --- /dev/null +++ b/stable/automatic-music-downloader/4.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [automatic-music-downloader-4.0.8](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.7...automatic-music-downloader-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [automatic-music-downloader-4.0.7](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.6...automatic-music-downloader-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [automatic-music-downloader-4.0.6](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.5...automatic-music-downloader-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [automatic-music-downloader-4.0.5](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.4...automatic-music-downloader-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [automatic-music-downloader-4.0.4](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.3...automatic-music-downloader-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [automatic-music-downloader-4.0.3](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.2...automatic-music-downloader-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) + + + + +## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) + + + + +## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) + + + + +## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) + + + + +## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) + + + + +## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) + + + + +## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) + + + + +## [automatic-music-downloader-4.0.2](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.1...automatic-music-downloader-4.0.2) (2022-11-30) + + + diff --git a/stable/automatic-music-downloader/4.0.8/Chart.yaml b/stable/automatic-music-downloader/4.0.8/Chart.yaml new file mode 100644 index 00000000000..0574a2bd766 --- /dev/null +++ b/stable/automatic-music-downloader/4.0.8/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A Lidarr companion script to automatically download music for Lidarr. +home: https://truecharts.org/charts/stable/automatic-music-downloader +icon: https://truecharts.org/img/hotlink-ok/chart-icons/automatic-music-downloader.png +keywords: + - automatic + - music + - downloader + - deemix +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: automatic-music-downloader +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/automatic-music-downloader + - https://hub.docker.com/randomninjaatk/amd + - https://github.com/RandomNinjaAtk/docker-amd +type: application +version: 4.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/avidemux/3.0.7/README.md b/stable/automatic-music-downloader/4.0.8/README.md similarity index 100% rename from stable/avidemux/3.0.7/README.md rename to stable/automatic-music-downloader/4.0.8/README.md diff --git a/stable/automatic-music-downloader/4.0.8/app-changelog.md b/stable/automatic-music-downloader/4.0.8/app-changelog.md new file mode 100644 index 00000000000..2bd28718e4e --- /dev/null +++ b/stable/automatic-music-downloader/4.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [automatic-music-downloader-4.0.8](https://github.com/truecharts/charts/compare/automatic-music-downloader-4.0.7...automatic-music-downloader-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/automatic-music-downloader/4.0.8/app-readme.md b/stable/automatic-music-downloader/4.0.8/app-readme.md new file mode 100644 index 00000000000..01ac0c552c5 --- /dev/null +++ b/stable/automatic-music-downloader/4.0.8/app-readme.md @@ -0,0 +1,8 @@ +A Lidarr companion script to automatically download music for Lidarr. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/automatic-music-downloader](https://truecharts.org/charts/stable/automatic-music-downloader) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/baserow/6.0.24/charts/common-11.1.2.tgz b/stable/automatic-music-downloader/4.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/baserow/6.0.24/charts/common-11.1.2.tgz rename to stable/automatic-music-downloader/4.0.8/charts/common-11.1.2.tgz diff --git a/stable/automatic-music-downloader/4.0.7/ix_values.yaml b/stable/automatic-music-downloader/4.0.8/ix_values.yaml similarity index 100% rename from stable/automatic-music-downloader/4.0.7/ix_values.yaml rename to stable/automatic-music-downloader/4.0.8/ix_values.yaml diff --git a/stable/automatic-music-downloader/4.0.8/questions.yaml b/stable/automatic-music-downloader/4.0.8/questions.yaml new file mode 100644 index 00000000000..82c304263d4 --- /dev/null +++ b/stable/automatic-music-downloader/4.0.8/questions.yaml @@ -0,0 +1,1801 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: AUTOSTART + label: "Auto Start" + description: "true = Enabled :: Runs script automatically on startup" + schema: + type: boolean + default: true + - variable: SCRIPTINTERVAL + label: "Script Interval" + description: "#s or #m or #h or #d :: s = seconds, m = minutes, h = hours, d = days :: Amount of time between each script run, when AUTOSTART is enabled" + schema: + type: string + default: "1h" + - variable: DOWNLOADMODE + label: "Download Mode" + description: > + "`wanted` or `artist` :: wanted mode only download missing/cutoff :: + artist mode downloads all albums by an artist (requires lidarr volume mapping root media folders for import)" + schema: + type: string + default: "wanted" + enum: + - value: "wanted" + description: "Only missing/cutoff" + - value: "artist" + description: "All albums" + - variable: FALLBACKSEARCH + label: "Fallback Search" + description: "True or False :: True = enabled :: Allows DL client to search for missing songs when they are not available" + schema: + type: boolean + default: true + - variable: LIST + label: "LIST" + description: "Both or missing or cutoff :: both = missing + cutoff :: missng = lidarr missing list :: cutoff = lidarr cutoff list" + schema: + type: string + default: "both" + enum: + - value: "both" + description: "missing + cutoff" + - value: "missing" + description: "lidarr missing list" + - value: "cutoff" + description: "lidarr cutoff list" + - variable: SearchType + label: "Search Type" + description: | + both or artist or fuzzy + both = artist + fuzzy searching + artist = only artist searching + fuzzy = only fuzzy searching (Various Artist is always fuzzy searched, regardless of setting) + schema: + type: string + default: "both" + enum: + - value: "both" + description: "Artist + fuzzy searching." + - value: "artist" + description: "Only artist searching." + - value: "fuzzy" + description: "Only fuzzy searching." + - variable: Concurrency + label: "Concurrency" + description: "Number of concurrent downloads" + schema: + type: int + default: 1 + - variable: EMBEDDED_COVER_QUALITY + label: "Embedded Cover Quality" + description: "Controls the quality of the cover image compression in percentage, 100 = no compression" + schema: + type: int + default: 80 + - variable: FORMAT + label: "Format" + description: | + FLAC or MP3 or OPUS or AAC or ALAC. + FLAC is an audio coding format for lossless compression of digital audio. + MP3 (or mp3) as a file format commonly designates files containing an elementary stream of MPEG-1 Audio or MPEG-2 Audio encoded data. + Opus is a lossy audio coding format developed by the Xiph.Org Foundation and standardized by the Internet Engineering Task Force. + Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio compression. + schema: + type: string + default: "FLAC" + enum: + - value: "FLAC" + description: "FLAC" + - value: "MP3" + description: "MP3" + - value: "OPUS" + description: "OPUS" + - value: "AAC" + description: "AAC" + - value: "ALAC" + description: "ALAC" + - variable: BITRATE + label: "Bit Rate" + description: "FLAC -> OPUS/AAC/MP3 will be converted using this bitrate (MP3 320/128 is native, not converted)" + schema: + type: int + default: 320 + - variable: ENABLEPOSTPROCESSING + label: "Enable Postprocessing" + description: "true = enabled :: enables or disables post processing processes as much as possible" + schema: + type: boolean + default: true + - variable: FORCECONVERT + label: "Force Convert" + description: "true = enabled :: This will convert lossy MP3 to desired target format (exluding FLAC/ALAC, ALAC will convert to AAC)" + schema: + type: boolean + default: true + - variable: requirequality + label: "Require Quality" + description: "true = enabled :: Requires all downloaded files match target file extension (mp3 or flac) when enabled" + schema: + type: boolean + default: true + - variable: MatchDistance + label: "Match Distance" + description: > + "Set as an integer, the higher the number, the more lenient it is. + Example: A match score of 0 is a perfect match :: For more information, + this score is produced using this function: Algorithm Implementation/Strings/Levenshtein distance" + schema: + type: int + default: 10 + - variable: replaygain + label: "Replay Gain" + description: "true = enabled :: Scans and analyzes files to add replaygain tags to song metadata" + schema: + type: boolean + default: true + - variable: FolderPermissions + label: "Folder Permissions" + description: "Based on chmod linux permissions" + schema: + type: int + default: 766 + - variable: FilePermissions + label: "File Permissions" + description: "Based on chmod linux permissions" + schema: + type: int + default: 666 + - variable: MBRAINZMIRROR + label: "Mbrainz Mirror" + description: "OPTIONAL :: Only change if using a different mirror" + schema: + type: string + default: "https://musicbrainz.org" + - variable: MBRATELIMIT + label: "Mb Rate Limit" + description: "OPTIONAL: musicbrainz rate limit, musicbrainz allows only 1 connection per second, max setting is 10 :: Set to 101 to disable limit" + schema: + type: int + default: 1 + - variable: LidarrUrl + label: "Lidarr Url" + description: "Set domain or IP to your Lidarr instance including port. If using reverse proxy, do not use a trailing slash. Ensure you specify http/s." + schema: + type: string + default: "http://x.x.x.x:8686" + - variable: LidarrAPIkey + label: "Lidarr Api Key" + description: "Lidarr API key." + schema: + type: string + default: "LIDARRAPI" + - variable: ARL_TOKEN + label: "ARL Token" + description: "Deezer ARL Cookie" + schema: + type: string + default: "ARLTOKEN" + - variable: NOTIFYPLEX + label: "Notify PLEX" + description: "true = enabled :: ONLY APPLIES ARTIST MODE :: Plex must have a music library added and be configured to use the exact same mount point as Lidarr's root folder" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PLEXLIBRARYNAME + label: "PLEX Library Name" + description: "This must exactly match the name of the Plex Library that contains the Lidarr Media Folder data" + schema: + type: string + default: "Music" + - variable: PLEXURL + label: "PLEX URL" + description: "Path to PLEX." + schema: + type: string + default: "http://x.x.x.x:32400" + - variable: PLEXTOKEN + label: "PLEX Token" + description: "PLEX API token." + schema: + type: string + default: "plextoken" + - variable: ALBUM_TYPE_FILTER + label: "Album Type Filter" + description: 'Filter Types: COMPILE, SINGLE, ALBUM, EP (this is a ", " separated list of Album Types to skip) (Applicable to artist mode only)' + schema: + type: string + default: "COMPILE" + - variable: POSTPROCESSTHREADS + label: "Post Process Threads" + description: "Controls number of threads used for Format conversion and replay gain tagging" + schema: + type: int + default: 1 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/automatic-music-downloader/4.0.7/templates/common.yaml b/stable/automatic-music-downloader/4.0.8/templates/common.yaml similarity index 100% rename from stable/automatic-music-downloader/4.0.7/templates/common.yaml rename to stable/automatic-music-downloader/4.0.8/templates/common.yaml diff --git a/stable/baserow/6.0.24/values.yaml b/stable/automatic-music-downloader/4.0.8/values.yaml similarity index 100% rename from stable/baserow/6.0.24/values.yaml rename to stable/automatic-music-downloader/4.0.8/values.yaml diff --git a/stable/avidemux/3.0.7/CHANGELOG.md b/stable/avidemux/3.0.7/CHANGELOG.md deleted file mode 100644 index 25fec635b14..00000000000 --- a/stable/avidemux/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [avidemux-3.0.7](https://github.com/truecharts/charts/compare/avidemux-3.0.6...avidemux-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [avidemux-3.0.6](https://github.com/truecharts/charts/compare/avidemux-3.0.5...avidemux-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [avidemux-3.0.5](https://github.com/truecharts/charts/compare/avidemux-3.0.4...avidemux-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [avidemux-3.0.4](https://github.com/truecharts/charts/compare/avidemux-3.0.3...avidemux-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [avidemux-3.0.3](https://github.com/truecharts/charts/compare/avidemux-3.0.2...avidemux-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - - - -## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) - - diff --git a/stable/avidemux/3.0.7/Chart.yaml b/stable/avidemux/3.0.7/Chart.yaml deleted file mode 100644 index d5bbcfaec2b..00000000000 --- a/stable/avidemux/3.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "1.4.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Avidemux is a free video editor designed for simple cutting, filtering and encoding tasks. -home: https://truecharts.org/charts/stable/avidemux -icon: https://truecharts.org/img/hotlink-ok/chart-icons/avidemux.png -keywords: - - media - - avidemux -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: avidemux -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/avidemux - - https://github.com/jlesage/docker-avidemux - - https://hub.docker.com/r/jlesage/avidemux/ -type: application -version: 3.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/avidemux/3.0.7/app-changelog.md b/stable/avidemux/3.0.7/app-changelog.md deleted file mode 100644 index 27ded030cdf..00000000000 --- a/stable/avidemux/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [avidemux-3.0.7](https://github.com/truecharts/charts/compare/avidemux-3.0.6...avidemux-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/avidemux/3.0.7/app-readme.md b/stable/avidemux/3.0.7/app-readme.md deleted file mode 100644 index 792844ab775..00000000000 --- a/stable/avidemux/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Avidemux is a free video editor designed for simple cutting, filtering and encoding tasks. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/avidemux](https://truecharts.org/charts/stable/avidemux) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/avidemux/3.0.7/questions.yaml b/stable/avidemux/3.0.7/questions.yaml deleted file mode 100644 index 6185cf111fc..00000000000 --- a/stable/avidemux/3.0.7/questions.yaml +++ /dev/null @@ -1,2013 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - # Portal - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: avidemux - group: "App Configuration" - label: "Avidemux Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10272 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10273 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage" - description: "Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/avidemux/3.0.8/CHANGELOG.md b/stable/avidemux/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..05fc340e2c7 --- /dev/null +++ b/stable/avidemux/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [avidemux-3.0.8](https://github.com/truecharts/charts/compare/avidemux-3.0.7...avidemux-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [avidemux-3.0.7](https://github.com/truecharts/charts/compare/avidemux-3.0.6...avidemux-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [avidemux-3.0.6](https://github.com/truecharts/charts/compare/avidemux-3.0.5...avidemux-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [avidemux-3.0.5](https://github.com/truecharts/charts/compare/avidemux-3.0.4...avidemux-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [avidemux-3.0.4](https://github.com/truecharts/charts/compare/avidemux-3.0.3...avidemux-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [avidemux-3.0.3](https://github.com/truecharts/charts/compare/avidemux-3.0.2...avidemux-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) + + + + +## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) + + + + +## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) + + + + +## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) + + + + +## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) + + + + +## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) + + + + +## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) + + + + +## [avidemux-3.0.2](https://github.com/truecharts/charts/compare/avidemux-3.0.1...avidemux-3.0.2) (2022-11-30) + + + diff --git a/stable/avidemux/3.0.8/Chart.yaml b/stable/avidemux/3.0.8/Chart.yaml new file mode 100644 index 00000000000..dd3c7c61876 --- /dev/null +++ b/stable/avidemux/3.0.8/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "1.4.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Avidemux is a free video editor designed for simple cutting, filtering and encoding tasks. +home: https://truecharts.org/charts/stable/avidemux +icon: https://truecharts.org/img/hotlink-ok/chart-icons/avidemux.png +keywords: + - media + - avidemux +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: avidemux +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/avidemux + - https://hub.docker.com/jlesage/avidemux + - https://github.com/jlesage/docker-avidemux +type: application +version: 3.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/baserow/6.0.24/README.md b/stable/avidemux/3.0.8/README.md similarity index 100% rename from stable/baserow/6.0.24/README.md rename to stable/avidemux/3.0.8/README.md diff --git a/stable/avidemux/3.0.8/app-changelog.md b/stable/avidemux/3.0.8/app-changelog.md new file mode 100644 index 00000000000..50335b559d2 --- /dev/null +++ b/stable/avidemux/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [avidemux-3.0.8](https://github.com/truecharts/charts/compare/avidemux-3.0.7...avidemux-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/avidemux/3.0.8/app-readme.md b/stable/avidemux/3.0.8/app-readme.md new file mode 100644 index 00000000000..0cfc9534e5a --- /dev/null +++ b/stable/avidemux/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +Avidemux is a free video editor designed for simple cutting, filtering and encoding tasks. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/avidemux](https://truecharts.org/charts/stable/avidemux) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/browserless-chrome/4.0.9/charts/common-11.1.2.tgz b/stable/avidemux/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/browserless-chrome/4.0.9/charts/common-11.1.2.tgz rename to stable/avidemux/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/avidemux/3.0.7/ix_values.yaml b/stable/avidemux/3.0.8/ix_values.yaml similarity index 100% rename from stable/avidemux/3.0.7/ix_values.yaml rename to stable/avidemux/3.0.8/ix_values.yaml diff --git a/stable/avidemux/3.0.8/questions.yaml b/stable/avidemux/3.0.8/questions.yaml new file mode 100644 index 00000000000..871ce1c790f --- /dev/null +++ b/stable/avidemux/3.0.8/questions.yaml @@ -0,0 +1,2054 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + # Portal + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: avidemux + group: "App Configuration" + label: "Avidemux Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10272 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10273 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage" + description: "Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/avidemux/3.0.7/templates/common.yaml b/stable/avidemux/3.0.8/templates/common.yaml similarity index 100% rename from stable/avidemux/3.0.7/templates/common.yaml rename to stable/avidemux/3.0.8/templates/common.yaml diff --git a/stable/browserless-chrome/4.0.9/values.yaml b/stable/avidemux/3.0.8/values.yaml similarity index 100% rename from stable/browserless-chrome/4.0.9/values.yaml rename to stable/avidemux/3.0.8/values.yaml diff --git a/stable/baserow/6.0.24/CHANGELOG.md b/stable/baserow/6.0.24/CHANGELOG.md deleted file mode 100644 index 1117b7cb1ec..00000000000 --- a/stable/baserow/6.0.24/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [baserow-6.0.24](https://github.com/truecharts/charts/compare/baserow-6.0.23...baserow-6.0.24) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [baserow-6.0.23](https://github.com/truecharts/charts/compare/baserow-6.0.22...baserow-6.0.23) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [baserow-6.0.22](https://github.com/truecharts/charts/compare/baserow-6.0.21...baserow-6.0.22) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/baserow to v1.14.0 - - - - -## [baserow-6.0.21](https://github.com/truecharts/charts/compare/baserow-6.0.20...baserow-6.0.21) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [baserow-6.0.20](https://github.com/truecharts/charts/compare/baserow-6.0.19...baserow-6.0.20) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [baserow-6.0.19](https://github.com/truecharts/charts/compare/baserow-6.0.18...baserow-6.0.19) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [baserow-6.0.18](https://github.com/truecharts/charts/compare/baserow-6.0.17...baserow-6.0.18) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [baserow-6.0.17](https://github.com/truecharts/charts/compare/baserow-6.0.16...baserow-6.0.17) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [baserow-6.0.16](https://github.com/truecharts/charts/compare/baserow-6.0.15...baserow-6.0.16) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [baserow-6.0.15](https://github.com/truecharts/charts/compare/baserow-6.0.14...baserow-6.0.15) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/baserow to v1.13.3 - - - - -## [baserow-6.0.14](https://github.com/truecharts/charts/compare/baserow-6.0.13...baserow-6.0.14) (2022-12-19) - -### Chore diff --git a/stable/baserow/6.0.24/Chart.yaml b/stable/baserow/6.0.24/Chart.yaml deleted file mode 100644 index 39a4440d308..00000000000 --- a/stable/baserow/6.0.24/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v2 -appVersion: "1.14.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -description: Baserow is an open source no-code database tool and Airtable alternative. -home: https://truecharts.org/charts/stable/baserow -icon: https://truecharts.org/img/hotlink-ok/chart-icons/baserow.png -keywords: - - baserow -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: baserow -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/baserow - - https://hub.docker.com/r/baserow/baserow - - https://gitlab.com/bramw/baserow/ -version: 6.0.24 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/baserow/6.0.24/app-changelog.md b/stable/baserow/6.0.24/app-changelog.md deleted file mode 100644 index 0444b736598..00000000000 --- a/stable/baserow/6.0.24/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [baserow-6.0.24](https://github.com/truecharts/charts/compare/baserow-6.0.23...baserow-6.0.24) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/baserow/6.0.25/CHANGELOG.md b/stable/baserow/6.0.25/CHANGELOG.md new file mode 100644 index 00000000000..2379bb46094 --- /dev/null +++ b/stable/baserow/6.0.25/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [baserow-6.0.25](https://github.com/truecharts/charts/compare/baserow-6.0.24...baserow-6.0.25) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [baserow-6.0.24](https://github.com/truecharts/charts/compare/baserow-6.0.23...baserow-6.0.24) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [baserow-6.0.23](https://github.com/truecharts/charts/compare/baserow-6.0.22...baserow-6.0.23) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [baserow-6.0.22](https://github.com/truecharts/charts/compare/baserow-6.0.21...baserow-6.0.22) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/baserow to v1.14.0 + + + + +## [baserow-6.0.21](https://github.com/truecharts/charts/compare/baserow-6.0.20...baserow-6.0.21) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [baserow-6.0.20](https://github.com/truecharts/charts/compare/baserow-6.0.19...baserow-6.0.20) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [baserow-6.0.19](https://github.com/truecharts/charts/compare/baserow-6.0.18...baserow-6.0.19) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [baserow-6.0.18](https://github.com/truecharts/charts/compare/baserow-6.0.17...baserow-6.0.18) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [baserow-6.0.17](https://github.com/truecharts/charts/compare/baserow-6.0.16...baserow-6.0.17) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [baserow-6.0.16](https://github.com/truecharts/charts/compare/baserow-6.0.15...baserow-6.0.16) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [baserow-6.0.15](https://github.com/truecharts/charts/compare/baserow-6.0.14...baserow-6.0.15) (2022-12-24) + +### Chore diff --git a/stable/baserow/6.0.25/Chart.yaml b/stable/baserow/6.0.25/Chart.yaml new file mode 100644 index 00000000000..2a394d46e64 --- /dev/null +++ b/stable/baserow/6.0.25/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +appVersion: "1.14.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: Baserow is an open source no-code database tool and Airtable alternative. +home: https://truecharts.org/charts/stable/baserow +icon: https://truecharts.org/img/hotlink-ok/chart-icons/baserow.png +keywords: + - baserow +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: baserow +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/baserow + - https://hub.docker.com/baserow/baserow + - https://gitlab.com/bramw/baserow/ +version: 6.0.25 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/browserless-chrome/4.0.9/README.md b/stable/baserow/6.0.25/README.md similarity index 100% rename from stable/browserless-chrome/4.0.9/README.md rename to stable/baserow/6.0.25/README.md diff --git a/stable/baserow/6.0.25/app-changelog.md b/stable/baserow/6.0.25/app-changelog.md new file mode 100644 index 00000000000..e3b6971e543 --- /dev/null +++ b/stable/baserow/6.0.25/app-changelog.md @@ -0,0 +1,9 @@ + + +## [baserow-6.0.25](https://github.com/truecharts/charts/compare/baserow-6.0.24...baserow-6.0.25) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/baserow/6.0.24/app-readme.md b/stable/baserow/6.0.25/app-readme.md similarity index 100% rename from stable/baserow/6.0.24/app-readme.md rename to stable/baserow/6.0.25/app-readme.md diff --git a/stable/chronos/3.0.7/charts/common-11.1.2.tgz b/stable/baserow/6.0.25/charts/common-11.1.2.tgz similarity index 100% rename from stable/chronos/3.0.7/charts/common-11.1.2.tgz rename to stable/baserow/6.0.25/charts/common-11.1.2.tgz diff --git a/stable/baserow/6.0.24/charts/postgresql-11.0.22.tgz b/stable/baserow/6.0.25/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/baserow/6.0.24/charts/postgresql-11.0.22.tgz rename to stable/baserow/6.0.25/charts/postgresql-11.0.22.tgz diff --git a/stable/grist/7.0.22/charts/redis-5.0.29.tgz b/stable/baserow/6.0.25/charts/redis-5.0.29.tgz similarity index 100% rename from stable/grist/7.0.22/charts/redis-5.0.29.tgz rename to stable/baserow/6.0.25/charts/redis-5.0.29.tgz diff --git a/stable/baserow/6.0.24/ix_values.yaml b/stable/baserow/6.0.25/ix_values.yaml similarity index 100% rename from stable/baserow/6.0.24/ix_values.yaml rename to stable/baserow/6.0.25/ix_values.yaml diff --git a/stable/baserow/6.0.24/questions.yaml b/stable/baserow/6.0.25/questions.yaml similarity index 100% rename from stable/baserow/6.0.24/questions.yaml rename to stable/baserow/6.0.25/questions.yaml diff --git a/stable/baserow/6.0.24/templates/_secrets.tpl b/stable/baserow/6.0.25/templates/_secrets.tpl similarity index 100% rename from stable/baserow/6.0.24/templates/_secrets.tpl rename to stable/baserow/6.0.25/templates/_secrets.tpl diff --git a/stable/baserow/6.0.24/templates/common.yaml b/stable/baserow/6.0.25/templates/common.yaml similarity index 100% rename from stable/baserow/6.0.24/templates/common.yaml rename to stable/baserow/6.0.25/templates/common.yaml diff --git a/stable/chronos/3.0.7/values.yaml b/stable/baserow/6.0.25/values.yaml similarity index 100% rename from stable/chronos/3.0.7/values.yaml rename to stable/baserow/6.0.25/values.yaml diff --git a/stable/browserless-chrome/4.0.10/CHANGELOG.md b/stable/browserless-chrome/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..9ba4c161a0c --- /dev/null +++ b/stable/browserless-chrome/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [browserless-chrome-4.0.10](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.9...browserless-chrome-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [browserless-chrome-4.0.9](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.8...browserless-chrome-4.0.9) (2023-01-14) + +### Chore + +- update container image tccr.io/truecharts/browserless-chrome-puppeteer13 to v1.57.0 + + + + +## [browserless-chrome-4.0.8](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.7...browserless-chrome-4.0.8) (2023-01-14) + +### Chore + +- group more apps and fix some images ([#6356](https://github.com/truecharts/charts/issues/6356)) + + + + +## [browserless-chrome-4.0.7](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.6...browserless-chrome-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [browserless-chrome-4.0.6](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.5...browserless-chrome-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [browserless-chrome-4.0.5](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.4...browserless-chrome-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [browserless-chrome-4.0.4](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.3...browserless-chrome-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [browserless-chrome-4.0.3](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.2...browserless-chrome-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) + + + + +## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) + + + + +## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) + + + + +## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) + + + + +## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) diff --git a/stable/browserless-chrome/4.0.10/Chart.yaml b/stable/browserless-chrome/4.0.10/Chart.yaml new file mode 100644 index 00000000000..f94b79704d4 --- /dev/null +++ b/stable/browserless-chrome/4.0.10/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "1.54.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Browserless is a web-service that allows for remote clients to connect, drive, and execute headless work +home: https://truecharts.org/charts/stable/browserless-chrome +icon: https://truecharts.org/img/hotlink-ok/chart-icons/browserless-chrome.png +keywords: + - browserless + - chrome + - puppeteer +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: browserless-chrome +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/browserless-chrome + - https://hub.docker.com/browserless/chrome + - https://docs.browserless.io/docs/docker.html +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/chronos/3.0.7/README.md b/stable/browserless-chrome/4.0.10/README.md similarity index 100% rename from stable/chronos/3.0.7/README.md rename to stable/browserless-chrome/4.0.10/README.md diff --git a/stable/browserless-chrome/4.0.10/app-changelog.md b/stable/browserless-chrome/4.0.10/app-changelog.md new file mode 100644 index 00000000000..a7d1d8b2734 --- /dev/null +++ b/stable/browserless-chrome/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [browserless-chrome-4.0.10](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.9...browserless-chrome-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/browserless-chrome/4.0.10/app-readme.md b/stable/browserless-chrome/4.0.10/app-readme.md new file mode 100644 index 00000000000..9a9e0bfe759 --- /dev/null +++ b/stable/browserless-chrome/4.0.10/app-readme.md @@ -0,0 +1,8 @@ +Browserless is a web-service that allows for remote clients to connect, drive, and execute headless work + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/browserless-chrome](https://truecharts.org/charts/stable/browserless-chrome) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/clamav/5.0.12/charts/common-11.1.2.tgz b/stable/browserless-chrome/4.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/clamav/5.0.12/charts/common-11.1.2.tgz rename to stable/browserless-chrome/4.0.10/charts/common-11.1.2.tgz diff --git a/stable/browserless-chrome/4.0.9/ix_values.yaml b/stable/browserless-chrome/4.0.10/ix_values.yaml similarity index 100% rename from stable/browserless-chrome/4.0.9/ix_values.yaml rename to stable/browserless-chrome/4.0.10/ix_values.yaml diff --git a/stable/browserless-chrome/4.0.10/questions.yaml b/stable/browserless-chrome/4.0.10/questions.yaml new file mode 100644 index 00000000000..4f5dc5f0d6b --- /dev/null +++ b/stable/browserless-chrome/4.0.10/questions.yaml @@ -0,0 +1,2076 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + metrics: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "/metrics" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: imageSelector + group: "Container Image" + label: "Select Image" + schema: + type: string + default: "image" + enum: + - value: "image" + description: "Chrome" + - value: "puppeteerImage" + description: "Puppeteer" + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: TOKEN + label: "TOKEN" + description: "You can optionally apply a TOKEN param that will restrict calls without a token query-string parameter" + schema: + type: string + default: "" + private: true + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: HOST + label: "HOST" + schema: + type: string + default: "" + - variable: WORKSPACE_DELETE_EXPIRED + label: "WORKSPACE_DELETE_EXPIRED" + description: "This will have browserless delete files older than 30 days in the workspace, checking once a day" + schema: + type: boolean + default: false + - variable: WORKSPACE_EXPIRE_DAYS + label: "WORKSPACE_EXPIRE_DAYS" + description: "Attempts to delete files older than X days in the workspace directory" + schema: + type: int + default: 30 + - variable: CHROME_REFRESH_TIME + label: "CHROME_REFRESH_TIME" + description: "The CHROME_REFRESH_TIME flag accepts a value in milliseconds to keep Chrome running before it attempts to close it." + schema: + type: int + default: 3600000 + - variable: MAX_CONCURRENT_SESSIONS + label: "MAX_CONCURRENT_SESSIONS" + description: "Since running Chrome can be rather resource intensive you'll probably want to limit the number of concurrent sessions." + schema: + type: int + default: 5 + - variable: MAX_QUEUE_LENGTH + label: "MAX_QUEUE_LENGTH" + description: "This value determines how many items in the queue are allowed before requests are issued a 429 response code and closed." + schema: + type: int + default: 5 + - variable: CONNECTION_TIMEOUT + label: "CONNECTION_TIMEOUT" + description: "How long any session can run for in milliseconds. defaults to 30000 ms or 30 seconds" + schema: + type: int + default: 30000 + - variable: DEFAULT_BLOCK_ADS + label: "DEFAULT_BLOCK_ADS" + schema: + type: boolean + default: false + - variable: DEFAULT_HEADLESS + label: "DEFAULT_HEADLESS" + schema: + type: boolean + default: true + - variable: DEFAULT_IGNORE_HTTPS_ERRORS + label: "DEFAULT_IGNORE_HTTPS_ERRORS" + schema: + type: boolean + default: false + - variable: DEFAULT_IGNORE_DEFAULT_ARGS + label: "DEFAULT_IGNORE_DEFAULT_ARGS" + schema: + type: boolean + default: false + - variable: ENABLE_API_GET + label: "ENABLE_API_GET" + schema: + type: boolean + default: false + - variable: FUNCTION_ENABLE_INCOGNITO_MODE + label: "FUNCTION_ENABLE_INCOGNITO_MODE" + schema: + type: boolean + default: false + - variable: EXIT_ON_HEALTH_FAILURE + label: "EXIT_ON_HEALTH_FAILURE" + schema: + type: boolean + default: false + - variable: DISABLE_AUTO_SET_DOWNLOAD_BEHAVIOR + label: "DISABLE_AUTO_SET_DOWNLOAD_BEHAVIOR" + schema: + type: boolean + default: false + - variable: ENABLE_DEBUGGER + label: "ENABLE_DEBUGGER" + schema: + type: boolean + default: false + - variable: ENABLE_CORS + label: "ENABLE_CORS" + schema: + type: boolean + default: false + - variable: ENABLE_XVBF + label: "ENABLE_XVBF" + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10194 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: downloads + label: "App Downloads Storage" + description: "Stores the Application Downloads." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: metrics + label: "App Metrics Storage" + description: "Stores the Application Metrics." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/browserless-chrome/4.0.9/templates/common.yaml b/stable/browserless-chrome/4.0.10/templates/common.yaml similarity index 100% rename from stable/browserless-chrome/4.0.9/templates/common.yaml rename to stable/browserless-chrome/4.0.10/templates/common.yaml diff --git a/stable/clamav/5.0.12/values.yaml b/stable/browserless-chrome/4.0.10/values.yaml similarity index 100% rename from stable/clamav/5.0.12/values.yaml rename to stable/browserless-chrome/4.0.10/values.yaml diff --git a/stable/browserless-chrome/4.0.9/CHANGELOG.md b/stable/browserless-chrome/4.0.9/CHANGELOG.md deleted file mode 100644 index 30103597cb0..00000000000 --- a/stable/browserless-chrome/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [browserless-chrome-4.0.9](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.8...browserless-chrome-4.0.9) (2023-01-14) - -### Chore - -- update container image tccr.io/truecharts/browserless-chrome-puppeteer13 to v1.57.0 - - - - -## [browserless-chrome-4.0.8](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.7...browserless-chrome-4.0.8) (2023-01-14) - -### Chore - -- group more apps and fix some images ([#6356](https://github.com/truecharts/charts/issues/6356)) - - - - -## [browserless-chrome-4.0.7](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.6...browserless-chrome-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [browserless-chrome-4.0.6](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.5...browserless-chrome-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [browserless-chrome-4.0.5](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.4...browserless-chrome-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [browserless-chrome-4.0.4](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.3...browserless-chrome-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [browserless-chrome-4.0.3](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.2...browserless-chrome-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) - - - - -## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) - - - - -## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) - - - - -## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) - - - - -## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) - - - - -## [browserless-chrome-4.0.2](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.1...browserless-chrome-4.0.2) (2022-11-30) - - - - diff --git a/stable/browserless-chrome/4.0.9/Chart.yaml b/stable/browserless-chrome/4.0.9/Chart.yaml deleted file mode 100644 index 0a7870089a2..00000000000 --- a/stable/browserless-chrome/4.0.9/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "1.54.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Browserless is a web-service that allows for remote clients to connect, drive, and execute headless work -home: https://truecharts.org/charts/stable/browserless-chrome -icon: https://truecharts.org/img/hotlink-ok/chart-icons/browserless-chrome.png -keywords: - - browserless - - chrome - - puppeteer -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: browserless-chrome -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/browserless-chrome - - https://docs.browserless.io/docs/docker.html - - https://hub.docker.com/r/browserless/chrome/ -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/browserless-chrome/4.0.9/app-changelog.md b/stable/browserless-chrome/4.0.9/app-changelog.md deleted file mode 100644 index 0efd7fa5d62..00000000000 --- a/stable/browserless-chrome/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [browserless-chrome-4.0.9](https://github.com/truecharts/charts/compare/browserless-chrome-4.0.8...browserless-chrome-4.0.9) (2023-01-14) - -### Chore - -- update container image tccr.io/truecharts/browserless-chrome-puppeteer13 to v1.57.0 - - \ No newline at end of file diff --git a/stable/browserless-chrome/4.0.9/app-readme.md b/stable/browserless-chrome/4.0.9/app-readme.md deleted file mode 100644 index ea4c1be4eed..00000000000 --- a/stable/browserless-chrome/4.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Browserless is a web-service that allows for remote clients to connect, drive, and execute headless work - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/browserless-chrome](https://truecharts.org/charts/stable/browserless-chrome) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/browserless-chrome/4.0.9/questions.yaml b/stable/browserless-chrome/4.0.9/questions.yaml deleted file mode 100644 index cd8f9f81120..00000000000 --- a/stable/browserless-chrome/4.0.9/questions.yaml +++ /dev/null @@ -1,2035 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - metrics: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - path: "/metrics" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: imageSelector - group: "Container Image" - label: "Select Image" - schema: - type: string - default: "image" - enum: - - value: "image" - description: "Chrome" - - value: "puppeteerImage" - description: "Puppeteer" - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: TOKEN - label: "TOKEN" - description: "You can optionally apply a TOKEN param that will restrict calls without a token query-string parameter" - schema: - type: string - default: "" - private: true - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: HOST - label: "HOST" - schema: - type: string - default: "" - - variable: WORKSPACE_DELETE_EXPIRED - label: "WORKSPACE_DELETE_EXPIRED" - description: "This will have browserless delete files older than 30 days in the workspace, checking once a day" - schema: - type: boolean - default: false - - variable: WORKSPACE_EXPIRE_DAYS - label: "WORKSPACE_EXPIRE_DAYS" - description: "Attempts to delete files older than X days in the workspace directory" - schema: - type: int - default: 30 - - variable: CHROME_REFRESH_TIME - label: "CHROME_REFRESH_TIME" - description: "The CHROME_REFRESH_TIME flag accepts a value in milliseconds to keep Chrome running before it attempts to close it." - schema: - type: int - default: 3600000 - - variable: MAX_CONCURRENT_SESSIONS - label: "MAX_CONCURRENT_SESSIONS" - description: "Since running Chrome can be rather resource intensive you'll probably want to limit the number of concurrent sessions." - schema: - type: int - default: 5 - - variable: MAX_QUEUE_LENGTH - label: "MAX_QUEUE_LENGTH" - description: "This value determines how many items in the queue are allowed before requests are issued a 429 response code and closed." - schema: - type: int - default: 5 - - variable: CONNECTION_TIMEOUT - label: "CONNECTION_TIMEOUT" - description: "How long any session can run for in milliseconds. defaults to 30000 ms or 30 seconds" - schema: - type: int - default: 30000 - - variable: DEFAULT_BLOCK_ADS - label: "DEFAULT_BLOCK_ADS" - schema: - type: boolean - default: false - - variable: DEFAULT_HEADLESS - label: "DEFAULT_HEADLESS" - schema: - type: boolean - default: true - - variable: DEFAULT_IGNORE_HTTPS_ERRORS - label: "DEFAULT_IGNORE_HTTPS_ERRORS" - schema: - type: boolean - default: false - - variable: DEFAULT_IGNORE_DEFAULT_ARGS - label: "DEFAULT_IGNORE_DEFAULT_ARGS" - schema: - type: boolean - default: false - - variable: ENABLE_API_GET - label: "ENABLE_API_GET" - schema: - type: boolean - default: false - - variable: FUNCTION_ENABLE_INCOGNITO_MODE - label: "FUNCTION_ENABLE_INCOGNITO_MODE" - schema: - type: boolean - default: false - - variable: EXIT_ON_HEALTH_FAILURE - label: "EXIT_ON_HEALTH_FAILURE" - schema: - type: boolean - default: false - - variable: DISABLE_AUTO_SET_DOWNLOAD_BEHAVIOR - label: "DISABLE_AUTO_SET_DOWNLOAD_BEHAVIOR" - schema: - type: boolean - default: false - - variable: ENABLE_DEBUGGER - label: "ENABLE_DEBUGGER" - schema: - type: boolean - default: false - - variable: ENABLE_CORS - label: "ENABLE_CORS" - schema: - type: boolean - default: false - - variable: ENABLE_XVBF - label: "ENABLE_XVBF" - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10194 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: downloads - label: "App Downloads Storage" - description: "Stores the Application Downloads." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: metrics - label: "App Metrics Storage" - description: "Stores the Application Metrics." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/chronos/3.0.7/CHANGELOG.md b/stable/chronos/3.0.7/CHANGELOG.md deleted file mode 100644 index d2ef4679a37..00000000000 --- a/stable/chronos/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [chronos-3.0.7](https://github.com/truecharts/charts/compare/chronos-3.0.6...chronos-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [chronos-3.0.6](https://github.com/truecharts/charts/compare/chronos-3.0.5...chronos-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [chronos-3.0.5](https://github.com/truecharts/charts/compare/chronos-3.0.4...chronos-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [chronos-3.0.4](https://github.com/truecharts/charts/compare/chronos-3.0.3...chronos-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [chronos-3.0.3](https://github.com/truecharts/charts/compare/chronos-3.0.2...chronos-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - - - -## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) - - diff --git a/stable/chronos/3.0.7/Chart.yaml b/stable/chronos/3.0.7/Chart.yaml deleted file mode 100644 index 520e500594a..00000000000 --- a/stable/chronos/3.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "0.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Chronos is a small container to run and schedule Python 3.7 scripts. You can create virtual enviroments, edit your scripts, install Pip dependencies, view execution logs, and debug your scripts, all from the sleek web UI." -home: https://truecharts.org/charts/stable/chronos -icon: https://truecharts.org/img/hotlink-ok/chart-icons/chronos.png -keywords: - - chronos - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: chronos -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/chronos - - https://github.com/simse/chronos - - https://hub.docker.com/r/simsemand/chronos -type: application -version: 3.0.7 -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities diff --git a/stable/chronos/3.0.7/app-changelog.md b/stable/chronos/3.0.7/app-changelog.md deleted file mode 100644 index 9d7875b3508..00000000000 --- a/stable/chronos/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [chronos-3.0.7](https://github.com/truecharts/charts/compare/chronos-3.0.6...chronos-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/chronos/3.0.7/app-readme.md b/stable/chronos/3.0.7/app-readme.md deleted file mode 100644 index dab4066d033..00000000000 --- a/stable/chronos/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Chronos is a small container to run and schedule Python 3.7 scripts. You can create virtual enviroments, edit your scripts, install Pip dependencies, view execution logs, and debug your scripts, all from the sleek web UI. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/chronos](https://truecharts.org/charts/stable/chronos) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/chronos/3.0.7/questions.yaml b/stable/chronos/3.0.7/questions.yaml deleted file mode 100644 index 8f6f9b0bf69..00000000000 --- a/stable/chronos/3.0.7/questions.yaml +++ /dev/null @@ -1,1828 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10305 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: chronos - label: "chronos Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/chronos/3.0.8/CHANGELOG.md b/stable/chronos/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..3e29442caf1 --- /dev/null +++ b/stable/chronos/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [chronos-3.0.8](https://github.com/truecharts/charts/compare/chronos-3.0.7...chronos-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [chronos-3.0.7](https://github.com/truecharts/charts/compare/chronos-3.0.6...chronos-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [chronos-3.0.6](https://github.com/truecharts/charts/compare/chronos-3.0.5...chronos-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [chronos-3.0.5](https://github.com/truecharts/charts/compare/chronos-3.0.4...chronos-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [chronos-3.0.4](https://github.com/truecharts/charts/compare/chronos-3.0.3...chronos-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [chronos-3.0.3](https://github.com/truecharts/charts/compare/chronos-3.0.2...chronos-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) + + + + +## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) + + + + +## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) + + + + +## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) + + + + +## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) + + + + +## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) + + + + +## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) + + + + +## [chronos-3.0.2](https://github.com/truecharts/charts/compare/chronos-3.0.1...chronos-3.0.2) (2022-11-30) + + + diff --git a/stable/chronos/3.0.8/Chart.yaml b/stable/chronos/3.0.8/Chart.yaml new file mode 100644 index 00000000000..ed79f15fc41 --- /dev/null +++ b/stable/chronos/3.0.8/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "0.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Chronos is a small container to run and schedule Python 3.7 scripts. You can create virtual enviroments, edit your scripts, install Pip dependencies, view execution logs, and debug your scripts, all from the sleek web UI." +home: https://truecharts.org/charts/stable/chronos +icon: https://truecharts.org/img/hotlink-ok/chart-icons/chronos.png +keywords: + - chronos + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: chronos +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/chronos + - https://hub.docker.com/simsemand/chronos + - https://github.com/simse/chronos +type: application +version: 3.0.8 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities diff --git a/stable/clamav/5.0.12/README.md b/stable/chronos/3.0.8/README.md similarity index 100% rename from stable/clamav/5.0.12/README.md rename to stable/chronos/3.0.8/README.md diff --git a/stable/chronos/3.0.8/app-changelog.md b/stable/chronos/3.0.8/app-changelog.md new file mode 100644 index 00000000000..e8cc5cf55ab --- /dev/null +++ b/stable/chronos/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [chronos-3.0.8](https://github.com/truecharts/charts/compare/chronos-3.0.7...chronos-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/chronos/3.0.8/app-readme.md b/stable/chronos/3.0.8/app-readme.md new file mode 100644 index 00000000000..2050a501b2a --- /dev/null +++ b/stable/chronos/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +Chronos is a small container to run and schedule Python 3.7 scripts. You can create virtual enviroments, edit your scripts, install Pip dependencies, view execution logs, and debug your scripts, all from the sleek web UI. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/chronos](https://truecharts.org/charts/stable/chronos) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/commento-plusplus/6.0.19/charts/common-11.1.2.tgz b/stable/chronos/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/commento-plusplus/6.0.19/charts/common-11.1.2.tgz rename to stable/chronos/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/chronos/3.0.7/ix_values.yaml b/stable/chronos/3.0.8/ix_values.yaml similarity index 100% rename from stable/chronos/3.0.7/ix_values.yaml rename to stable/chronos/3.0.8/ix_values.yaml diff --git a/stable/chronos/3.0.8/questions.yaml b/stable/chronos/3.0.8/questions.yaml new file mode 100644 index 00000000000..191791ca0d4 --- /dev/null +++ b/stable/chronos/3.0.8/questions.yaml @@ -0,0 +1,1869 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10305 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: chronos + label: "chronos Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/chronos/3.0.7/templates/common.yaml b/stable/chronos/3.0.8/templates/common.yaml similarity index 100% rename from stable/chronos/3.0.7/templates/common.yaml rename to stable/chronos/3.0.8/templates/common.yaml diff --git a/stable/commento-plusplus/6.0.19/values.yaml b/stable/chronos/3.0.8/values.yaml similarity index 100% rename from stable/commento-plusplus/6.0.19/values.yaml rename to stable/chronos/3.0.8/values.yaml diff --git a/stable/clamav/5.0.12/CHANGELOG.md b/stable/clamav/5.0.12/CHANGELOG.md deleted file mode 100644 index fa10e2111b6..00000000000 --- a/stable/clamav/5.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [clamav-5.0.12](https://github.com/truecharts/charts/compare/clamav-5.0.11...clamav-5.0.12) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [clamav-5.0.11](https://github.com/truecharts/charts/compare/clamav-5.0.10...clamav-5.0.11) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [clamav-5.0.10](https://github.com/truecharts/charts/compare/clamav-5.0.9...clamav-5.0.10) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [clamav-5.0.9](https://github.com/truecharts/charts/compare/clamav-5.0.1...clamav-5.0.9) (2022-12-22) - - - - -## [clamav-5.0.1](https://github.com/truecharts/charts/compare/clamav-5.0.8...clamav-5.0.1) (2022-12-22) - -### Docs - -- Add how-to guide ([#5615](https://github.com/truecharts/charts/issues/5615)) - - - - -## [clamav-5.0.8](https://github.com/truecharts/charts/compare/clamav-5.0.7...clamav-5.0.8) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [clamav-5.0.7](https://github.com/truecharts/charts/compare/clamav-5.0.6...clamav-5.0.7) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) - - - - -## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) - - - - -## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) - - - - -## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) - - - - -## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) - - - - -## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) - - - - -## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) - - - diff --git a/stable/clamav/5.0.12/Chart.yaml b/stable/clamav/5.0.12/Chart.yaml deleted file mode 100644 index 29a266b6b78..00000000000 --- a/stable/clamav/5.0.12/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "1.0.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: ClamAV is an open source antivirus engine for detecting trojans, viruses, malware & other malicious threats. -home: https://truecharts.org/charts/stable/clamav -icon: https://truecharts.org/img/hotlink-ok/chart-icons/clamav.png -keywords: - - clamav - - antivirus -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: clamav -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/clamav - - https://github.com/Cisco-Talos/clamav - - https://hub.docker.com/r/clamav/clamav - - https://docs.clamav.net/ -type: application -version: 5.0.12 -annotations: - truecharts.org/catagories: | - - utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/clamav/5.0.12/app-changelog.md b/stable/clamav/5.0.12/app-changelog.md deleted file mode 100644 index 3c7b6996182..00000000000 --- a/stable/clamav/5.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [clamav-5.0.12](https://github.com/truecharts/charts/compare/clamav-5.0.11...clamav-5.0.12) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/clamav/5.0.12/app-readme.md b/stable/clamav/5.0.12/app-readme.md deleted file mode 100644 index 2e9eaae01e6..00000000000 --- a/stable/clamav/5.0.12/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -ClamAV is an open source antivirus engine for detecting trojans, viruses, malware & other malicious threats. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/clamav](https://truecharts.org/charts/stable/clamav) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/clamav/5.0.12/questions.yaml b/stable/clamav/5.0.12/questions.yaml deleted file mode 100644 index eb333625c4f..00000000000 --- a/stable/clamav/5.0.12/questions.yaml +++ /dev/null @@ -1,2102 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: CLAMAV_NO_CLAMD - label: "NO CLAMD" - description: "Do not start clamd." - schema: - type: boolean - default: false - - variable: CLAMAV_NO_FRESHCLAMD - label: "NO FRESHCLAMD" - description: "Do not start the freshclam daemon." - schema: - type: boolean - default: false - - variable: CLAMAV_NO_MILTERD - label: "NO MILTERD" - description: "Do not start the clamav-milter daemon." - schema: - type: boolean - default: true - - variable: CLAMD_STARTUP_TIMEOUT - label: "STARTUP TIMEOUT" - description: "Seconds to wait for clamd to start." - schema: - type: int - default: 1800 - - variable: FRESHCLAM_CHECKS - label: "FRESHCLAM CHECKS " - description: "Freshclam daily update frequency." - schema: - type: int - default: 1 - - variable: clamav - group: "App Configuration" - label: "ClamAV Cron Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: cron_enabled - label: "Enable cronjob" - description: "Enables automatic scan for /scandir" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: cron_schedule - label: "Cron Schedule" - description: "Enter a valid cron schedule" - schema: - type: string - default: "@daily" - required: true - - variable: log_file_name - label: "Log File Name" - description: "Log file name for the scan report. You will find this report in /logs/FILENAME_DATEFORMAT" - schema: - type: string - default: "clamscan_report" - required: true - - variable: date_format - label: "Date Format" - description: "Date format for the log file" - schema: - type: string - default: "MM-DD-YYYY_HH.MM.SS" - required: true - enum: - - value: "+%m-%d-%Y_%H.%M.%S" - description: "MM-DD-YYYY_HH.MM.SS" - - value: "+%Y-%m-%d_%H.%M.%S" - description: "YYYY-MM-DD_HH.MM.SS" - - value: "+%H.%M.%S_%m-%d-%Y" - description: "HH.MM.SS_MM-DD-YYYY" - - value: "+%H.%M.%S_%Y-%m-%d" - description: "HH.MM.SS_YYYY-MM-DD" - - variable: extra_args - label: "Extra Args" - description: "Set extra args for clamscan here. (https://linux.die.net/man/1/clamscan). We already set --log, --database and --recursive. Do not add those here." - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3310 - required: true - - variable: milter - label: "Milter Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: milter - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 7357 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: sigdatabase - label: "App Signature Database Storage" - description: "Stores the Application Signature Database." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: scandir - label: "App Scan Dir Storage" - description: "Stores the Application Scan Directory. (By default set to readOnly)" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: logs - label: "App Logs Storage" - description: "Stores the Application Logs." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/clamav/5.0.13/CHANGELOG.md b/stable/clamav/5.0.13/CHANGELOG.md new file mode 100644 index 00000000000..4e5d882e76c --- /dev/null +++ b/stable/clamav/5.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [clamav-5.0.13](https://github.com/truecharts/charts/compare/clamav-5.0.12...clamav-5.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [clamav-5.0.12](https://github.com/truecharts/charts/compare/clamav-5.0.11...clamav-5.0.12) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [clamav-5.0.11](https://github.com/truecharts/charts/compare/clamav-5.0.10...clamav-5.0.11) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [clamav-5.0.10](https://github.com/truecharts/charts/compare/clamav-5.0.9...clamav-5.0.10) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [clamav-5.0.9](https://github.com/truecharts/charts/compare/clamav-5.0.1...clamav-5.0.9) (2022-12-22) + + + + +## [clamav-5.0.1](https://github.com/truecharts/charts/compare/clamav-5.0.8...clamav-5.0.1) (2022-12-22) + +### Docs + +- Add how-to guide ([#5615](https://github.com/truecharts/charts/issues/5615)) + + + + +## [clamav-5.0.8](https://github.com/truecharts/charts/compare/clamav-5.0.7...clamav-5.0.8) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [clamav-5.0.7](https://github.com/truecharts/charts/compare/clamav-5.0.6...clamav-5.0.7) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) + + + + +## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) + + + + +## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) + + + + +## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) + + + + +## [clamav-5.0.6](https://github.com/truecharts/charts/compare/clamav-5.0.4...clamav-5.0.6) (2022-11-30) + + + + diff --git a/stable/clamav/5.0.13/Chart.yaml b/stable/clamav/5.0.13/Chart.yaml new file mode 100644 index 00000000000..14da8c703d7 --- /dev/null +++ b/stable/clamav/5.0.13/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "1.0.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: ClamAV is an open source antivirus engine for detecting trojans, viruses, malware & other malicious threats. +home: https://truecharts.org/charts/stable/clamav +icon: https://truecharts.org/img/hotlink-ok/chart-icons/clamav.png +keywords: + - clamav + - antivirus +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: clamav +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/clamav + - https://hub.docker.com/clamav/clamav + - https://github.com/Cisco-Talos/clamav + - https://docs.clamav.net/ +type: application +version: 5.0.13 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/commento-plusplus/6.0.19/README.md b/stable/clamav/5.0.13/README.md similarity index 100% rename from stable/commento-plusplus/6.0.19/README.md rename to stable/clamav/5.0.13/README.md diff --git a/stable/clamav/5.0.13/app-changelog.md b/stable/clamav/5.0.13/app-changelog.md new file mode 100644 index 00000000000..07f12989e91 --- /dev/null +++ b/stable/clamav/5.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [clamav-5.0.13](https://github.com/truecharts/charts/compare/clamav-5.0.12...clamav-5.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/clamav/5.0.13/app-readme.md b/stable/clamav/5.0.13/app-readme.md new file mode 100644 index 00000000000..373fe6c9f3c --- /dev/null +++ b/stable/clamav/5.0.13/app-readme.md @@ -0,0 +1,8 @@ +ClamAV is an open source antivirus engine for detecting trojans, viruses, malware & other malicious threats. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/clamav](https://truecharts.org/charts/stable/clamav) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/cryptofolio/6.0.7/charts/common-11.1.2.tgz b/stable/clamav/5.0.13/charts/common-11.1.2.tgz similarity index 100% rename from stable/cryptofolio/6.0.7/charts/common-11.1.2.tgz rename to stable/clamav/5.0.13/charts/common-11.1.2.tgz diff --git a/stable/clamav/5.0.12/ix_values.yaml b/stable/clamav/5.0.13/ix_values.yaml similarity index 100% rename from stable/clamav/5.0.12/ix_values.yaml rename to stable/clamav/5.0.13/ix_values.yaml diff --git a/stable/clamav/5.0.13/questions.yaml b/stable/clamav/5.0.13/questions.yaml new file mode 100644 index 00000000000..aeca9e129ed --- /dev/null +++ b/stable/clamav/5.0.13/questions.yaml @@ -0,0 +1,2143 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: CLAMAV_NO_CLAMD + label: "NO CLAMD" + description: "Do not start clamd." + schema: + type: boolean + default: false + - variable: CLAMAV_NO_FRESHCLAMD + label: "NO FRESHCLAMD" + description: "Do not start the freshclam daemon." + schema: + type: boolean + default: false + - variable: CLAMAV_NO_MILTERD + label: "NO MILTERD" + description: "Do not start the clamav-milter daemon." + schema: + type: boolean + default: true + - variable: CLAMD_STARTUP_TIMEOUT + label: "STARTUP TIMEOUT" + description: "Seconds to wait for clamd to start." + schema: + type: int + default: 1800 + - variable: FRESHCLAM_CHECKS + label: "FRESHCLAM CHECKS " + description: "Freshclam daily update frequency." + schema: + type: int + default: 1 + - variable: clamav + group: "App Configuration" + label: "ClamAV Cron Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cron_enabled + label: "Enable cronjob" + description: "Enables automatic scan for /scandir" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: cron_schedule + label: "Cron Schedule" + description: "Enter a valid cron schedule" + schema: + type: string + default: "@daily" + required: true + - variable: log_file_name + label: "Log File Name" + description: "Log file name for the scan report. You will find this report in /logs/FILENAME_DATEFORMAT" + schema: + type: string + default: "clamscan_report" + required: true + - variable: date_format + label: "Date Format" + description: "Date format for the log file" + schema: + type: string + default: "MM-DD-YYYY_HH.MM.SS" + required: true + enum: + - value: "+%m-%d-%Y_%H.%M.%S" + description: "MM-DD-YYYY_HH.MM.SS" + - value: "+%Y-%m-%d_%H.%M.%S" + description: "YYYY-MM-DD_HH.MM.SS" + - value: "+%H.%M.%S_%m-%d-%Y" + description: "HH.MM.SS_MM-DD-YYYY" + - value: "+%H.%M.%S_%Y-%m-%d" + description: "HH.MM.SS_YYYY-MM-DD" + - variable: extra_args + label: "Extra Args" + description: "Set extra args for clamscan here. (https://linux.die.net/man/1/clamscan). We already set --log, --database and --recursive. Do not add those here." + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3310 + required: true + - variable: milter + label: "Milter Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: milter + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 7357 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: sigdatabase + label: "App Signature Database Storage" + description: "Stores the Application Signature Database." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: scandir + label: "App Scan Dir Storage" + description: "Stores the Application Scan Directory. (By default set to readOnly)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: logs + label: "App Logs Storage" + description: "Stores the Application Logs." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/clamav/5.0.12/templates/_cronjob.tpl b/stable/clamav/5.0.13/templates/_cronjob.tpl similarity index 100% rename from stable/clamav/5.0.12/templates/_cronjob.tpl rename to stable/clamav/5.0.13/templates/_cronjob.tpl diff --git a/stable/clamav/5.0.12/templates/common.yaml b/stable/clamav/5.0.13/templates/common.yaml similarity index 100% rename from stable/clamav/5.0.12/templates/common.yaml rename to stable/clamav/5.0.13/templates/common.yaml diff --git a/stable/cryptofolio/6.0.7/values.yaml b/stable/clamav/5.0.13/values.yaml similarity index 100% rename from stable/cryptofolio/6.0.7/values.yaml rename to stable/clamav/5.0.13/values.yaml diff --git a/stable/commento-plusplus/6.0.19/CHANGELOG.md b/stable/commento-plusplus/6.0.19/CHANGELOG.md deleted file mode 100644 index 29fe4c2b081..00000000000 --- a/stable/commento-plusplus/6.0.19/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [commento-plusplus-6.0.19](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.18...commento-plusplus-6.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [commento-plusplus-6.0.18](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.17...commento-plusplus-6.0.18) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [commento-plusplus-6.0.17](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.16...commento-plusplus-6.0.17) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [commento-plusplus-6.0.16](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.15...commento-plusplus-6.0.16) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [commento-plusplus-6.0.15](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.14...commento-plusplus-6.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [commento-plusplus-6.0.14](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.13...commento-plusplus-6.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [commento-plusplus-6.0.13](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.12...commento-plusplus-6.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [commento-plusplus-6.0.12](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.11...commento-plusplus-6.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [commento-plusplus-6.0.11](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.10...commento-plusplus-6.0.11) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - - - -## [commento-plusplus-6.0.10](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.9...commento-plusplus-6.0.10) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [commento-plusplus-6.0.9](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.8...commento-plusplus-6.0.9) (2022-12-05) - -### Chore diff --git a/stable/commento-plusplus/6.0.19/Chart.yaml b/stable/commento-plusplus/6.0.19/Chart.yaml deleted file mode 100644 index 6882502479c..00000000000 --- a/stable/commento-plusplus/6.0.19/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -appVersion: "1.8.7" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -description: Commento++ is a free, open source, fast & lightweight comments box that you can embed in your static website instead of Disqus. -home: https://truecharts.org/charts/stable/commento-plusplus -icon: https://truecharts.org/img/hotlink-ok/chart-icons/commento-plusplus.png -keywords: - - commento -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: commento-plusplus -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/commento-plusplus - - https://github.com/souramoo/commentoplusplus - - https://hub.docker.com/r/caroga/commentoplusplus -version: 6.0.19 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/commento-plusplus/6.0.19/app-changelog.md b/stable/commento-plusplus/6.0.19/app-changelog.md deleted file mode 100644 index 61b913ac113..00000000000 --- a/stable/commento-plusplus/6.0.19/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [commento-plusplus-6.0.19](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.18...commento-plusplus-6.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/commento-plusplus/6.0.20/CHANGELOG.md b/stable/commento-plusplus/6.0.20/CHANGELOG.md new file mode 100644 index 00000000000..b387120c1b2 --- /dev/null +++ b/stable/commento-plusplus/6.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [commento-plusplus-6.0.20](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.19...commento-plusplus-6.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [commento-plusplus-6.0.19](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.18...commento-plusplus-6.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [commento-plusplus-6.0.18](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.17...commento-plusplus-6.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [commento-plusplus-6.0.17](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.16...commento-plusplus-6.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [commento-plusplus-6.0.16](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.15...commento-plusplus-6.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [commento-plusplus-6.0.15](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.14...commento-plusplus-6.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [commento-plusplus-6.0.14](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.13...commento-plusplus-6.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [commento-plusplus-6.0.13](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.12...commento-plusplus-6.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [commento-plusplus-6.0.12](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.11...commento-plusplus-6.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [commento-plusplus-6.0.11](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.10...commento-plusplus-6.0.11) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [commento-plusplus-6.0.10](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.9...commento-plusplus-6.0.10) (2022-12-13) + +### Chore diff --git a/stable/commento-plusplus/6.0.20/Chart.yaml b/stable/commento-plusplus/6.0.20/Chart.yaml new file mode 100644 index 00000000000..c160eb01391 --- /dev/null +++ b/stable/commento-plusplus/6.0.20/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "1.8.7" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +description: Commento++ is a free, open source, fast & lightweight comments box that you can embed in your static website instead of Disqus. +home: https://truecharts.org/charts/stable/commento-plusplus +icon: https://truecharts.org/img/hotlink-ok/chart-icons/commento-plusplus.png +keywords: + - commento +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: commento-plusplus +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/commento-plusplus + - https://hub.docker.com/caroga/commentoplusplus + - https://github.com/souramoo/commentoplusplus +version: 6.0.20 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/cryptofolio/6.0.7/README.md b/stable/commento-plusplus/6.0.20/README.md similarity index 100% rename from stable/cryptofolio/6.0.7/README.md rename to stable/commento-plusplus/6.0.20/README.md diff --git a/stable/commento-plusplus/6.0.20/app-changelog.md b/stable/commento-plusplus/6.0.20/app-changelog.md new file mode 100644 index 00000000000..96207d589c0 --- /dev/null +++ b/stable/commento-plusplus/6.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [commento-plusplus-6.0.20](https://github.com/truecharts/charts/compare/commento-plusplus-6.0.19...commento-plusplus-6.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/commento-plusplus/6.0.19/app-readme.md b/stable/commento-plusplus/6.0.20/app-readme.md similarity index 100% rename from stable/commento-plusplus/6.0.19/app-readme.md rename to stable/commento-plusplus/6.0.20/app-readme.md diff --git a/stable/cyberchef/4.0.24/charts/common-11.1.2.tgz b/stable/commento-plusplus/6.0.20/charts/common-11.1.2.tgz similarity index 100% rename from stable/cyberchef/4.0.24/charts/common-11.1.2.tgz rename to stable/commento-plusplus/6.0.20/charts/common-11.1.2.tgz diff --git a/stable/commento-plusplus/6.0.19/charts/postgresql-11.0.22.tgz b/stable/commento-plusplus/6.0.20/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/commento-plusplus/6.0.19/charts/postgresql-11.0.22.tgz rename to stable/commento-plusplus/6.0.20/charts/postgresql-11.0.22.tgz diff --git a/stable/commento-plusplus/6.0.19/ix_values.yaml b/stable/commento-plusplus/6.0.20/ix_values.yaml similarity index 100% rename from stable/commento-plusplus/6.0.19/ix_values.yaml rename to stable/commento-plusplus/6.0.20/ix_values.yaml diff --git a/stable/commento-plusplus/6.0.19/questions.yaml b/stable/commento-plusplus/6.0.20/questions.yaml similarity index 100% rename from stable/commento-plusplus/6.0.19/questions.yaml rename to stable/commento-plusplus/6.0.20/questions.yaml diff --git a/stable/commento-plusplus/6.0.19/templates/common.yaml b/stable/commento-plusplus/6.0.20/templates/common.yaml similarity index 100% rename from stable/commento-plusplus/6.0.19/templates/common.yaml rename to stable/commento-plusplus/6.0.20/templates/common.yaml diff --git a/stable/cyberchef/4.0.24/values.yaml b/stable/commento-plusplus/6.0.20/values.yaml similarity index 100% rename from stable/cyberchef/4.0.24/values.yaml rename to stable/commento-plusplus/6.0.20/values.yaml diff --git a/stable/cryptofolio/6.0.7/CHANGELOG.md b/stable/cryptofolio/6.0.7/CHANGELOG.md deleted file mode 100644 index 804c7756474..00000000000 --- a/stable/cryptofolio/6.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cryptofolio-6.0.7](https://github.com/truecharts/charts/compare/cryptofolio-6.0.6...cryptofolio-6.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [cryptofolio-6.0.6](https://github.com/truecharts/charts/compare/cryptofolio-6.0.5...cryptofolio-6.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cryptofolio-6.0.5](https://github.com/truecharts/charts/compare/cryptofolio-6.0.4...cryptofolio-6.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cryptofolio-6.0.4](https://github.com/truecharts/charts/compare/cryptofolio-6.0.3...cryptofolio-6.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cryptofolio-6.0.3](https://github.com/truecharts/charts/compare/cryptofolio-6.0.2...cryptofolio-6.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - - - -## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) - - diff --git a/stable/cryptofolio/6.0.7/Chart.yaml b/stable/cryptofolio/6.0.7/Chart.yaml deleted file mode 100644 index a7ff8a3bd93..00000000000 --- a/stable/cryptofolio/6.0.7/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "2.2.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Track your cryptocurrency holdings/portfolio -home: https://truecharts.org/charts/stable/cryptofolio -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cryptofolio.png -keywords: - - cryptofolio -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cryptofolio -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/cryptofolio - - https://github.com/Xtrendence/cryptofolio -version: 6.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/cryptofolio/6.0.7/app-changelog.md b/stable/cryptofolio/6.0.7/app-changelog.md deleted file mode 100644 index 71534e5b18d..00000000000 --- a/stable/cryptofolio/6.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cryptofolio-6.0.7](https://github.com/truecharts/charts/compare/cryptofolio-6.0.6...cryptofolio-6.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/cryptofolio/6.0.7/app-readme.md b/stable/cryptofolio/6.0.7/app-readme.md deleted file mode 100644 index 7eebdce5906..00000000000 --- a/stable/cryptofolio/6.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Track your cryptocurrency holdings/portfolio - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/cryptofolio](https://truecharts.org/charts/stable/cryptofolio) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/cryptofolio/6.0.7/questions.yaml b/stable/cryptofolio/6.0.7/questions.yaml deleted file mode 100644 index eb67474c4d5..00000000000 --- a/stable/cryptofolio/6.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10007 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/cryptofolio/6.0.8/CHANGELOG.md b/stable/cryptofolio/6.0.8/CHANGELOG.md new file mode 100644 index 00000000000..8ac5247756b --- /dev/null +++ b/stable/cryptofolio/6.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cryptofolio-6.0.8](https://github.com/truecharts/charts/compare/cryptofolio-6.0.7...cryptofolio-6.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cryptofolio-6.0.7](https://github.com/truecharts/charts/compare/cryptofolio-6.0.6...cryptofolio-6.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [cryptofolio-6.0.6](https://github.com/truecharts/charts/compare/cryptofolio-6.0.5...cryptofolio-6.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cryptofolio-6.0.5](https://github.com/truecharts/charts/compare/cryptofolio-6.0.4...cryptofolio-6.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cryptofolio-6.0.4](https://github.com/truecharts/charts/compare/cryptofolio-6.0.3...cryptofolio-6.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cryptofolio-6.0.3](https://github.com/truecharts/charts/compare/cryptofolio-6.0.2...cryptofolio-6.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) + + + + +## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) + + + + +## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) + + + + +## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) + + + + +## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) + + + + +## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) + + + + +## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) + + + + +## [cryptofolio-6.0.2](https://github.com/truecharts/charts/compare/cryptofolio-6.0.1...cryptofolio-6.0.2) (2022-11-30) + + + diff --git a/stable/cryptofolio/6.0.8/Chart.yaml b/stable/cryptofolio/6.0.8/Chart.yaml new file mode 100644 index 00000000000..fcb71a1e56e --- /dev/null +++ b/stable/cryptofolio/6.0.8/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "2.2.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Track your cryptocurrency holdings/portfolio +home: https://truecharts.org/charts/stable/cryptofolio +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cryptofolio.png +keywords: + - cryptofolio +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cryptofolio +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/cryptofolio + - https://hub.docker.com/xtrendence/cryptofolio + - https://github.com/Xtrendence/cryptofolio +version: 6.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/cyberchef/4.0.24/README.md b/stable/cryptofolio/6.0.8/README.md similarity index 100% rename from stable/cyberchef/4.0.24/README.md rename to stable/cryptofolio/6.0.8/README.md diff --git a/stable/cryptofolio/6.0.8/app-changelog.md b/stable/cryptofolio/6.0.8/app-changelog.md new file mode 100644 index 00000000000..4e706a87ea2 --- /dev/null +++ b/stable/cryptofolio/6.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cryptofolio-6.0.8](https://github.com/truecharts/charts/compare/cryptofolio-6.0.7...cryptofolio-6.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/cryptofolio/6.0.8/app-readme.md b/stable/cryptofolio/6.0.8/app-readme.md new file mode 100644 index 00000000000..33386805909 --- /dev/null +++ b/stable/cryptofolio/6.0.8/app-readme.md @@ -0,0 +1,8 @@ +Track your cryptocurrency holdings/portfolio + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/cryptofolio](https://truecharts.org/charts/stable/cryptofolio) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/czkawka/3.0.12/charts/common-11.1.2.tgz b/stable/cryptofolio/6.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/czkawka/3.0.12/charts/common-11.1.2.tgz rename to stable/cryptofolio/6.0.8/charts/common-11.1.2.tgz diff --git a/stable/cryptofolio/6.0.7/ix_values.yaml b/stable/cryptofolio/6.0.8/ix_values.yaml similarity index 100% rename from stable/cryptofolio/6.0.7/ix_values.yaml rename to stable/cryptofolio/6.0.8/ix_values.yaml diff --git a/stable/cryptofolio/6.0.8/questions.yaml b/stable/cryptofolio/6.0.8/questions.yaml new file mode 100644 index 00000000000..11cb30d60d2 --- /dev/null +++ b/stable/cryptofolio/6.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10007 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/cryptofolio/6.0.7/templates/common.yaml b/stable/cryptofolio/6.0.8/templates/common.yaml similarity index 100% rename from stable/cryptofolio/6.0.7/templates/common.yaml rename to stable/cryptofolio/6.0.8/templates/common.yaml diff --git a/stable/czkawka/3.0.12/values.yaml b/stable/cryptofolio/6.0.8/values.yaml similarity index 100% rename from stable/czkawka/3.0.12/values.yaml rename to stable/cryptofolio/6.0.8/values.yaml diff --git a/stable/cyberchef/4.0.24/CHANGELOG.md b/stable/cyberchef/4.0.24/CHANGELOG.md deleted file mode 100644 index d244395bcf4..00000000000 --- a/stable/cyberchef/4.0.24/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [cyberchef-4.0.24](https://github.com/truecharts/charts/compare/cyberchef-4.0.23...cyberchef-4.0.24) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/cyberchef to 9.55.0 - - - - -## [cyberchef-4.0.23](https://github.com/truecharts/charts/compare/cyberchef-4.0.22...cyberchef-4.0.23) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/cyberchef to 9.55.0 - - - - -## [cyberchef-4.0.22](https://github.com/truecharts/charts/compare/cyberchef-4.0.21...cyberchef-4.0.22) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/cyberchef to 9.55.0 - - - - -## [cyberchef-4.0.21](https://github.com/truecharts/charts/compare/cyberchef-4.0.20...cyberchef-4.0.21) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/cyberchef to 9.55.0 - - - - -## [cyberchef-4.0.20](https://github.com/truecharts/charts/compare/cyberchef-4.0.19...cyberchef-4.0.20) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - update container image tccr.io/truecharts/cyberchef to 9.55.0 - - - - -## [cyberchef-4.0.19](https://github.com/truecharts/charts/compare/cyberchef-4.0.18...cyberchef-4.0.19) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [cyberchef-4.0.18](https://github.com/truecharts/charts/compare/cyberchef-4.0.17...cyberchef-4.0.18) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [cyberchef-4.0.17](https://github.com/truecharts/charts/compare/cyberchef-4.0.16...cyberchef-4.0.17) (2022-12-25) - -### Chore - -- update container image tccr.io/truecharts/cyberchef to 9.55.0 ([#5710](https://github.com/truecharts/charts/issues/5710)) - - - - -## [cyberchef-4.0.16](https://github.com/truecharts/charts/compare/cyberchef-4.0.15...cyberchef-4.0.16) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [cyberchef-4.0.15](https://github.com/truecharts/charts/compare/cyberchef-4.0.14...cyberchef-4.0.15) (2022-12-17) - - - - -## [cyberchef-4.0.14](https://github.com/truecharts/charts/compare/cyberchef-4.0.13...cyberchef-4.0.14) (2022-12-13) - -### Chore - -- update helm general non-major - diff --git a/stable/cyberchef/4.0.24/Chart.yaml b/stable/cyberchef/4.0.24/Chart.yaml deleted file mode 100644 index 4e804b3ca9a..00000000000 --- a/stable/cyberchef/4.0.24/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "9.55.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: CyberChef is a simple, intuitive web app for carrying out all manner of "cyber" operations within a web browser. -home: https://truecharts.org/charts/stable/cyberchef -icon: https://truecharts.org/img/hotlink-ok/chart-icons/cyberchef.png -keywords: - - cyberchef -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: cyberchef -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/cyberchef - - https://hub.docker.com/r/mpepping/cyberchef -version: 4.0.24 -annotations: - truecharts.org/catagories: | - - utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/cyberchef/4.0.24/app-changelog.md b/stable/cyberchef/4.0.24/app-changelog.md deleted file mode 100644 index 94e46270abf..00000000000 --- a/stable/cyberchef/4.0.24/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [cyberchef-4.0.24](https://github.com/truecharts/charts/compare/cyberchef-4.0.23...cyberchef-4.0.24) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/cyberchef to 9.55.0 - - \ No newline at end of file diff --git a/stable/cyberchef/4.0.25/CHANGELOG.md b/stable/cyberchef/4.0.25/CHANGELOG.md new file mode 100644 index 00000000000..9c722422dcd --- /dev/null +++ b/stable/cyberchef/4.0.25/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [cyberchef-4.0.25](https://github.com/truecharts/charts/compare/cyberchef-4.0.24...cyberchef-4.0.25) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [cyberchef-4.0.24](https://github.com/truecharts/charts/compare/cyberchef-4.0.23...cyberchef-4.0.24) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/cyberchef to 9.55.0 + + + + +## [cyberchef-4.0.23](https://github.com/truecharts/charts/compare/cyberchef-4.0.22...cyberchef-4.0.23) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/cyberchef to 9.55.0 + + + + +## [cyberchef-4.0.22](https://github.com/truecharts/charts/compare/cyberchef-4.0.21...cyberchef-4.0.22) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/cyberchef to 9.55.0 + + + + +## [cyberchef-4.0.21](https://github.com/truecharts/charts/compare/cyberchef-4.0.20...cyberchef-4.0.21) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/cyberchef to 9.55.0 + + + + +## [cyberchef-4.0.20](https://github.com/truecharts/charts/compare/cyberchef-4.0.19...cyberchef-4.0.20) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + - update container image tccr.io/truecharts/cyberchef to 9.55.0 + + + + +## [cyberchef-4.0.19](https://github.com/truecharts/charts/compare/cyberchef-4.0.18...cyberchef-4.0.19) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [cyberchef-4.0.18](https://github.com/truecharts/charts/compare/cyberchef-4.0.17...cyberchef-4.0.18) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [cyberchef-4.0.17](https://github.com/truecharts/charts/compare/cyberchef-4.0.16...cyberchef-4.0.17) (2022-12-25) + +### Chore + +- update container image tccr.io/truecharts/cyberchef to 9.55.0 ([#5710](https://github.com/truecharts/charts/issues/5710)) + + + + +## [cyberchef-4.0.16](https://github.com/truecharts/charts/compare/cyberchef-4.0.15...cyberchef-4.0.16) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [cyberchef-4.0.15](https://github.com/truecharts/charts/compare/cyberchef-4.0.14...cyberchef-4.0.15) (2022-12-17) + diff --git a/stable/cyberchef/4.0.25/Chart.yaml b/stable/cyberchef/4.0.25/Chart.yaml new file mode 100644 index 00000000000..915509df239 --- /dev/null +++ b/stable/cyberchef/4.0.25/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +appVersion: "9.55.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: CyberChef is a simple, intuitive web app for carrying out all manner of "cyber" operations within a web browser. +home: https://truecharts.org/charts/stable/cyberchef +icon: https://truecharts.org/img/hotlink-ok/chart-icons/cyberchef.png +keywords: + - cyberchef +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: cyberchef +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/cyberchef + - https://hub.docker.com/mpepping/cyberchef +version: 4.0.25 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/czkawka/3.0.12/README.md b/stable/cyberchef/4.0.25/README.md similarity index 100% rename from stable/czkawka/3.0.12/README.md rename to stable/cyberchef/4.0.25/README.md diff --git a/stable/cyberchef/4.0.25/app-changelog.md b/stable/cyberchef/4.0.25/app-changelog.md new file mode 100644 index 00000000000..5c478f73ab7 --- /dev/null +++ b/stable/cyberchef/4.0.25/app-changelog.md @@ -0,0 +1,9 @@ + + +## [cyberchef-4.0.25](https://github.com/truecharts/charts/compare/cyberchef-4.0.24...cyberchef-4.0.25) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/cyberchef/4.0.24/app-readme.md b/stable/cyberchef/4.0.25/app-readme.md similarity index 100% rename from stable/cyberchef/4.0.24/app-readme.md rename to stable/cyberchef/4.0.25/app-readme.md diff --git a/stable/dashdot/3.0.11/charts/common-11.1.2.tgz b/stable/cyberchef/4.0.25/charts/common-11.1.2.tgz similarity index 100% rename from stable/dashdot/3.0.11/charts/common-11.1.2.tgz rename to stable/cyberchef/4.0.25/charts/common-11.1.2.tgz diff --git a/stable/cyberchef/4.0.24/ix_values.yaml b/stable/cyberchef/4.0.25/ix_values.yaml similarity index 100% rename from stable/cyberchef/4.0.24/ix_values.yaml rename to stable/cyberchef/4.0.25/ix_values.yaml diff --git a/stable/cyberchef/4.0.24/questions.yaml b/stable/cyberchef/4.0.25/questions.yaml similarity index 100% rename from stable/cyberchef/4.0.24/questions.yaml rename to stable/cyberchef/4.0.25/questions.yaml diff --git a/stable/cyberchef/4.0.24/templates/common.yaml b/stable/cyberchef/4.0.25/templates/common.yaml similarity index 100% rename from stable/cyberchef/4.0.24/templates/common.yaml rename to stable/cyberchef/4.0.25/templates/common.yaml diff --git a/stable/dashdot/3.0.11/values.yaml b/stable/cyberchef/4.0.25/values.yaml similarity index 100% rename from stable/dashdot/3.0.11/values.yaml rename to stable/cyberchef/4.0.25/values.yaml diff --git a/stable/czkawka/3.0.12/CHANGELOG.md b/stable/czkawka/3.0.12/CHANGELOG.md deleted file mode 100644 index 014ee4c7f52..00000000000 --- a/stable/czkawka/3.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [czkawka-3.0.12](https://github.com/truecharts/charts/compare/czkawka-3.0.11...czkawka-3.0.12) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/czkawka to v23.01.1 - - - - -## [czkawka-3.0.11](https://github.com/truecharts/charts/compare/czkawka-3.0.10...czkawka-3.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [czkawka-3.0.10](https://github.com/truecharts/charts/compare/czkawka-3.0.9...czkawka-3.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [czkawka-3.0.9](https://github.com/truecharts/charts/compare/czkawka-3.0.8...czkawka-3.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [czkawka-3.0.8](https://github.com/truecharts/charts/compare/czkawka-3.0.7...czkawka-3.0.8) (2022-12-19) - -### Chore - -- update helm general non-major - - update container image tccr.io/truecharts/czkawka to v22.12.2 - - - - -## [czkawka-3.0.7](https://github.com/truecharts/charts/compare/czkawka-3.0.6...czkawka-3.0.7) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [czkawka-3.0.6](https://github.com/truecharts/charts/compare/czkawka-3.0.5...czkawka-3.0.6) (2022-12-01) - -### Chore - -- update container image tccr.io/truecharts/czkawka to v22.12.1 - - - - -## [czkawka-3.0.5](https://github.com/truecharts/charts/compare/czkawka-3.0.4...czkawka-3.0.5) (2022-12-01) - -### Chore - -- update container image tccr.io/truecharts/czkawka to v22.11.2 - - - - -## [czkawka-3.0.4](https://github.com/truecharts/charts/compare/czkawka-3.0.3...czkawka-3.0.4) (2022-11-30) - - - - -## [czkawka-3.0.4](https://github.com/truecharts/charts/compare/czkawka-3.0.3...czkawka-3.0.4) (2022-11-30) - - - - -## [czkawka-3.0.4](https://github.com/truecharts/charts/compare/czkawka-3.0.3...czkawka-3.0.4) (2022-11-30) - - - - -## [czkawka-3.0.4](https://github.com/truecharts/charts/compare/czkawka-3.0.3...czkawka-3.0.4) (2022-11-30) - - - - diff --git a/stable/czkawka/3.0.12/Chart.yaml b/stable/czkawka/3.0.12/Chart.yaml deleted file mode 100644 index b30162383d0..00000000000 --- a/stable/czkawka/3.0.12/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "23.01.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Czkawka is a simple, fast and free app to remove unnecessary files from your computer. -home: https://truecharts.org/charts/stable/czkawka -icon: https://truecharts.org/img/hotlink-ok/chart-icons/czkawka.png -keywords: - - duplicates - - file management - - czkawka -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: czkawka -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/czkawka - - https://hub.docker.com/r/jlesage/czkawka - - https://github.com/jlesage/docker-czkawka - - https://github.com/qarmin/czkawka -type: application -version: 3.0.12 -annotations: - truecharts.org/catagories: | - - duplicates - - files - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/czkawka/3.0.12/app-changelog.md b/stable/czkawka/3.0.12/app-changelog.md deleted file mode 100644 index 7d7983174b8..00000000000 --- a/stable/czkawka/3.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [czkawka-3.0.12](https://github.com/truecharts/charts/compare/czkawka-3.0.11...czkawka-3.0.12) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/czkawka to v23.01.1 - - \ No newline at end of file diff --git a/stable/czkawka/3.0.12/app-readme.md b/stable/czkawka/3.0.12/app-readme.md deleted file mode 100644 index b6560d7199a..00000000000 --- a/stable/czkawka/3.0.12/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Czkawka is a simple, fast and free app to remove unnecessary files from your computer. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/czkawka](https://truecharts.org/charts/stable/czkawka) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/czkawka/3.0.12/questions.yaml b/stable/czkawka/3.0.12/questions.yaml deleted file mode 100644 index 813961a0fc1..00000000000 --- a/stable/czkawka/3.0.12/questions.yaml +++ /dev/null @@ -1,2082 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: czkawka - group: "App Configuration" - label: "CzkawkaConfiguration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10258 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10259 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage" - description: "Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: trash - label: "App Trash Storage" - description: "Stores the Application Trash." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/czkawka/3.0.13/CHANGELOG.md b/stable/czkawka/3.0.13/CHANGELOG.md new file mode 100644 index 00000000000..9dd65e800c9 --- /dev/null +++ b/stable/czkawka/3.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [czkawka-3.0.13](https://github.com/truecharts/charts/compare/czkawka-3.0.12...czkawka-3.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [czkawka-3.0.12](https://github.com/truecharts/charts/compare/czkawka-3.0.11...czkawka-3.0.12) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/czkawka to v23.01.1 + + + + +## [czkawka-3.0.11](https://github.com/truecharts/charts/compare/czkawka-3.0.10...czkawka-3.0.11) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [czkawka-3.0.10](https://github.com/truecharts/charts/compare/czkawka-3.0.9...czkawka-3.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [czkawka-3.0.9](https://github.com/truecharts/charts/compare/czkawka-3.0.8...czkawka-3.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [czkawka-3.0.8](https://github.com/truecharts/charts/compare/czkawka-3.0.7...czkawka-3.0.8) (2022-12-19) + +### Chore + +- update helm general non-major + - update container image tccr.io/truecharts/czkawka to v22.12.2 + + + + +## [czkawka-3.0.7](https://github.com/truecharts/charts/compare/czkawka-3.0.6...czkawka-3.0.7) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [czkawka-3.0.6](https://github.com/truecharts/charts/compare/czkawka-3.0.5...czkawka-3.0.6) (2022-12-01) + +### Chore + +- update container image tccr.io/truecharts/czkawka to v22.12.1 + + + + +## [czkawka-3.0.5](https://github.com/truecharts/charts/compare/czkawka-3.0.4...czkawka-3.0.5) (2022-12-01) + +### Chore + +- update container image tccr.io/truecharts/czkawka to v22.11.2 + + + + +## [czkawka-3.0.4](https://github.com/truecharts/charts/compare/czkawka-3.0.3...czkawka-3.0.4) (2022-11-30) + + + + +## [czkawka-3.0.4](https://github.com/truecharts/charts/compare/czkawka-3.0.3...czkawka-3.0.4) (2022-11-30) + + + + +## [czkawka-3.0.4](https://github.com/truecharts/charts/compare/czkawka-3.0.3...czkawka-3.0.4) (2022-11-30) diff --git a/stable/czkawka/3.0.13/Chart.yaml b/stable/czkawka/3.0.13/Chart.yaml new file mode 100644 index 00000000000..f15e4ca0034 --- /dev/null +++ b/stable/czkawka/3.0.13/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "23.01.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Czkawka is a simple, fast and free app to remove unnecessary files from your computer. +home: https://truecharts.org/charts/stable/czkawka +icon: https://truecharts.org/img/hotlink-ok/chart-icons/czkawka.png +keywords: + - duplicates + - file management + - czkawka +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: czkawka +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/czkawka + - https://hub.docker.com/jlesage/czkawka + - https://github.com/jlesage/docker-czkawka + - https://github.com/qarmin/czkawka +type: application +version: 3.0.13 +annotations: + truecharts.org/catagories: | + - duplicates + - files + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/dashdot/3.0.11/README.md b/stable/czkawka/3.0.13/README.md similarity index 100% rename from stable/dashdot/3.0.11/README.md rename to stable/czkawka/3.0.13/README.md diff --git a/stable/czkawka/3.0.13/app-changelog.md b/stable/czkawka/3.0.13/app-changelog.md new file mode 100644 index 00000000000..e97d204cf09 --- /dev/null +++ b/stable/czkawka/3.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [czkawka-3.0.13](https://github.com/truecharts/charts/compare/czkawka-3.0.12...czkawka-3.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/czkawka/3.0.13/app-readme.md b/stable/czkawka/3.0.13/app-readme.md new file mode 100644 index 00000000000..43cb5d2d7eb --- /dev/null +++ b/stable/czkawka/3.0.13/app-readme.md @@ -0,0 +1,8 @@ +Czkawka is a simple, fast and free app to remove unnecessary files from your computer. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/czkawka](https://truecharts.org/charts/stable/czkawka) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/dizquetv/9.0.7/charts/common-11.1.2.tgz b/stable/czkawka/3.0.13/charts/common-11.1.2.tgz similarity index 100% rename from stable/dizquetv/9.0.7/charts/common-11.1.2.tgz rename to stable/czkawka/3.0.13/charts/common-11.1.2.tgz diff --git a/stable/czkawka/3.0.12/ix_values.yaml b/stable/czkawka/3.0.13/ix_values.yaml similarity index 100% rename from stable/czkawka/3.0.12/ix_values.yaml rename to stable/czkawka/3.0.13/ix_values.yaml diff --git a/stable/czkawka/3.0.13/questions.yaml b/stable/czkawka/3.0.13/questions.yaml new file mode 100644 index 00000000000..1ab8c1f4b0e --- /dev/null +++ b/stable/czkawka/3.0.13/questions.yaml @@ -0,0 +1,2123 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: czkawka + group: "App Configuration" + label: "CzkawkaConfiguration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10258 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10259 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage" + description: "Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: trash + label: "App Trash Storage" + description: "Stores the Application Trash." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/czkawka/3.0.12/templates/common.yaml b/stable/czkawka/3.0.13/templates/common.yaml similarity index 100% rename from stable/czkawka/3.0.12/templates/common.yaml rename to stable/czkawka/3.0.13/templates/common.yaml diff --git a/stable/dizquetv/9.0.7/values.yaml b/stable/czkawka/3.0.13/values.yaml similarity index 100% rename from stable/dizquetv/9.0.7/values.yaml rename to stable/czkawka/3.0.13/values.yaml diff --git a/stable/dashdot/3.0.11/CHANGELOG.md b/stable/dashdot/3.0.11/CHANGELOG.md deleted file mode 100644 index c80a1da270e..00000000000 --- a/stable/dashdot/3.0.11/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [dashdot-3.0.11](https://github.com/truecharts/charts/compare/dashdot-3.0.10...dashdot-3.0.11) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/dashdot to v4.8.2 - - - - -## [dashdot-3.0.10](https://github.com/truecharts/charts/compare/dashdot-3.0.9...dashdot-3.0.10) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/dashdot to v4.6.1 - - - - -## [dashdot-3.0.9](https://github.com/truecharts/charts/compare/dashdot-3.0.8...dashdot-3.0.9) (2023-01-01) - -### Chore - -- update container image tccr.io/truecharts/dashdot to v4.6.0 - - - - -## [dashdot-3.0.8](https://github.com/truecharts/charts/compare/dashdot-3.0.7...dashdot-3.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [dashdot-3.0.7](https://github.com/truecharts/charts/compare/dashdot-3.0.6...dashdot-3.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [dashdot-3.0.6](https://github.com/truecharts/charts/compare/dashdot-3.0.5...dashdot-3.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [dashdot-3.0.5](https://github.com/truecharts/charts/compare/dashdot-3.0.4...dashdot-3.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [dashdot-3.0.4](https://github.com/truecharts/charts/compare/dashdot-3.0.3...dashdot-3.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [dashdot-3.0.3](https://github.com/truecharts/charts/compare/dashdot-3.0.2...dashdot-3.0.3) (2022-11-30) - - - - -## [dashdot-3.0.3](https://github.com/truecharts/charts/compare/dashdot-3.0.2...dashdot-3.0.3) (2022-11-30) - - - - -## [dashdot-3.0.3](https://github.com/truecharts/charts/compare/dashdot-3.0.2...dashdot-3.0.3) (2022-11-30) - - - - -## [dashdot-3.0.3](https://github.com/truecharts/charts/compare/dashdot-3.0.2...dashdot-3.0.3) (2022-11-30) - - - - -## [dashdot-3.0.3](https://github.com/truecharts/charts/compare/dashdot-3.0.2...dashdot-3.0.3) (2022-11-30) diff --git a/stable/dashdot/3.0.11/Chart.yaml b/stable/dashdot/3.0.11/Chart.yaml deleted file mode 100644 index 20c34c81cce..00000000000 --- a/stable/dashdot/3.0.11/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "4.8.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: dash. (or dashdot) is a modern server dashboard, running on the latest tech, designed with glassmorphism in mind. -home: https://truecharts.org/charts/stable/dashdot -icon: https://truecharts.org/img/hotlink-ok/chart-icons/dashdot.png -keywords: - - dashboard - - dashdot -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: dashdot -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/dashdot - - https://github.com/MauriceNino/dashdot - - https://hub.docker.com/r/mauricenino/dashdot -version: 3.0.11 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/dashdot/3.0.11/app-changelog.md b/stable/dashdot/3.0.11/app-changelog.md deleted file mode 100644 index 9b2acd7e474..00000000000 --- a/stable/dashdot/3.0.11/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [dashdot-3.0.11](https://github.com/truecharts/charts/compare/dashdot-3.0.10...dashdot-3.0.11) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/dashdot to v4.8.2 - - \ No newline at end of file diff --git a/stable/dashdot/3.0.12/CHANGELOG.md b/stable/dashdot/3.0.12/CHANGELOG.md new file mode 100644 index 00000000000..28fe5218aa0 --- /dev/null +++ b/stable/dashdot/3.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [dashdot-3.0.12](https://github.com/truecharts/charts/compare/dashdot-3.0.11...dashdot-3.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [dashdot-3.0.11](https://github.com/truecharts/charts/compare/dashdot-3.0.10...dashdot-3.0.11) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/dashdot to v4.8.2 + + + + +## [dashdot-3.0.10](https://github.com/truecharts/charts/compare/dashdot-3.0.9...dashdot-3.0.10) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/dashdot to v4.6.1 + + + + +## [dashdot-3.0.9](https://github.com/truecharts/charts/compare/dashdot-3.0.8...dashdot-3.0.9) (2023-01-01) + +### Chore + +- update container image tccr.io/truecharts/dashdot to v4.6.0 + + + + +## [dashdot-3.0.8](https://github.com/truecharts/charts/compare/dashdot-3.0.7...dashdot-3.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [dashdot-3.0.7](https://github.com/truecharts/charts/compare/dashdot-3.0.6...dashdot-3.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [dashdot-3.0.6](https://github.com/truecharts/charts/compare/dashdot-3.0.5...dashdot-3.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [dashdot-3.0.5](https://github.com/truecharts/charts/compare/dashdot-3.0.4...dashdot-3.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [dashdot-3.0.4](https://github.com/truecharts/charts/compare/dashdot-3.0.3...dashdot-3.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [dashdot-3.0.3](https://github.com/truecharts/charts/compare/dashdot-3.0.2...dashdot-3.0.3) (2022-11-30) + + + + +## [dashdot-3.0.3](https://github.com/truecharts/charts/compare/dashdot-3.0.2...dashdot-3.0.3) (2022-11-30) + + + + +## [dashdot-3.0.3](https://github.com/truecharts/charts/compare/dashdot-3.0.2...dashdot-3.0.3) (2022-11-30) + diff --git a/stable/dashdot/3.0.12/Chart.yaml b/stable/dashdot/3.0.12/Chart.yaml new file mode 100644 index 00000000000..d7240f807ea --- /dev/null +++ b/stable/dashdot/3.0.12/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "4.8.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: dash. (or dashdot) is a modern server dashboard, running on the latest tech, designed with glassmorphism in mind. +home: https://truecharts.org/charts/stable/dashdot +icon: https://truecharts.org/img/hotlink-ok/chart-icons/dashdot.png +keywords: + - dashboard + - dashdot +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dashdot +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/dashdot + - https://hub.docker.com/mauricenino/dashdot + - https://github.com/MauriceNino/dashdot +version: 3.0.12 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/dizquetv/9.0.7/README.md b/stable/dashdot/3.0.12/README.md similarity index 100% rename from stable/dizquetv/9.0.7/README.md rename to stable/dashdot/3.0.12/README.md diff --git a/stable/dashdot/3.0.12/app-changelog.md b/stable/dashdot/3.0.12/app-changelog.md new file mode 100644 index 00000000000..3dcaa2d2f66 --- /dev/null +++ b/stable/dashdot/3.0.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [dashdot-3.0.12](https://github.com/truecharts/charts/compare/dashdot-3.0.11...dashdot-3.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/dashdot/3.0.11/app-readme.md b/stable/dashdot/3.0.12/app-readme.md similarity index 100% rename from stable/dashdot/3.0.11/app-readme.md rename to stable/dashdot/3.0.12/app-readme.md diff --git a/stable/docusaurus/3.0.7/charts/common-11.1.2.tgz b/stable/dashdot/3.0.12/charts/common-11.1.2.tgz similarity index 100% rename from stable/docusaurus/3.0.7/charts/common-11.1.2.tgz rename to stable/dashdot/3.0.12/charts/common-11.1.2.tgz diff --git a/stable/dashdot/3.0.11/ix_values.yaml b/stable/dashdot/3.0.12/ix_values.yaml similarity index 100% rename from stable/dashdot/3.0.11/ix_values.yaml rename to stable/dashdot/3.0.12/ix_values.yaml diff --git a/stable/dashdot/3.0.11/questions.yaml b/stable/dashdot/3.0.12/questions.yaml similarity index 100% rename from stable/dashdot/3.0.11/questions.yaml rename to stable/dashdot/3.0.12/questions.yaml diff --git a/stable/dashdot/3.0.11/templates/common.yaml b/stable/dashdot/3.0.12/templates/common.yaml similarity index 100% rename from stable/dashdot/3.0.11/templates/common.yaml rename to stable/dashdot/3.0.12/templates/common.yaml diff --git a/stable/docusaurus/3.0.7/values.yaml b/stable/dashdot/3.0.12/values.yaml similarity index 100% rename from stable/docusaurus/3.0.7/values.yaml rename to stable/dashdot/3.0.12/values.yaml diff --git a/stable/deconz/10.0.13/CHANGELOG.md b/stable/deconz/10.0.13/CHANGELOG.md new file mode 100644 index 00000000000..9ba0722fc8e --- /dev/null +++ b/stable/deconz/10.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [deconz-10.0.13](https://github.com/truecharts/charts/compare/deconz-10.0.12...deconz-10.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [deconz-10.0.12](https://github.com/truecharts/charts/compare/deconz-10.0.11...deconz-10.0.12) (2023-01-20) + +### Chore + +- update container image tccr.io/truecharts/deconz to v2.20.01 + + + + +## [deconz-10.0.11](https://github.com/truecharts/charts/compare/deconz-10.0.10...deconz-10.0.11) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/deconz to v2.20.00 + + + + +## [deconz-10.0.10](https://github.com/truecharts/charts/compare/deconz-10.0.9...deconz-10.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [deconz-10.0.9](https://github.com/truecharts/charts/compare/deconz-10.0.8...deconz-10.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [deconz-10.0.8](https://github.com/truecharts/charts/compare/deconz-10.0.7...deconz-10.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [deconz-10.0.7](https://github.com/truecharts/charts/compare/deconz-10.0.6...deconz-10.0.7) (2022-12-25) + +### Chore + +- update container image tccr.io/truecharts/deconz to 2.19.03 ([#5713](https://github.com/truecharts/charts/issues/5713)) + + + + +## [deconz-10.0.6](https://github.com/truecharts/charts/compare/deconz-10.0.5...deconz-10.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [deconz-10.0.5](https://github.com/truecharts/charts/compare/deconz-10.0.4...deconz-10.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [deconz-10.0.4](https://github.com/truecharts/charts/compare/deconz-10.0.3...deconz-10.0.4) (2022-12-05) + +### Chore + +- update container image tccr.io/truecharts/deconz to 2.19.03 + + + + +## [deconz-10.0.3](https://github.com/truecharts/charts/compare/deconz-10.0.2...deconz-10.0.3) (2022-12-05) + +### Chore diff --git a/stable/deconz/10.0.13/Chart.yaml b/stable/deconz/10.0.13/Chart.yaml new file mode 100644 index 00000000000..34cb62d46dc --- /dev/null +++ b/stable/deconz/10.0.13/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "2.20.01" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: deCONZ is an easy to use control software, with which you can set up and control Zigbee networks of any size without further programming effort. +home: https://truecharts.org/charts/stable/deconz +icon: https://truecharts.org/img/hotlink-ok/chart-icons/deconz.png +keywords: + - deconz + - home-automation + - zigbee + - conbee +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: deconz +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/deconz + - https://hub.docker.com/deconzcommunity/deconz + - https://github.com/dresden-elektronik/deconz-rest-plugin + - https://github.com/marthoc/docker-deconz +version: 10.0.13 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/docusaurus/3.0.7/README.md b/stable/deconz/10.0.13/README.md similarity index 100% rename from stable/docusaurus/3.0.7/README.md rename to stable/deconz/10.0.13/README.md diff --git a/stable/deconz/10.0.13/app-changelog.md b/stable/deconz/10.0.13/app-changelog.md new file mode 100644 index 00000000000..bb45c5a2d76 --- /dev/null +++ b/stable/deconz/10.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [deconz-10.0.13](https://github.com/truecharts/charts/compare/deconz-10.0.12...deconz-10.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/deconz/10.0.13/app-readme.md b/stable/deconz/10.0.13/app-readme.md new file mode 100644 index 00000000000..1313fa891f2 --- /dev/null +++ b/stable/deconz/10.0.13/app-readme.md @@ -0,0 +1,8 @@ +deCONZ is an easy to use control software, with which you can set up and control Zigbee networks of any size without further programming effort. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/deconz](https://truecharts.org/charts/stable/deconz) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/dokuwiki/5.0.18/charts/common-11.1.2.tgz b/stable/deconz/10.0.13/charts/common-11.1.2.tgz similarity index 100% rename from stable/dokuwiki/5.0.18/charts/common-11.1.2.tgz rename to stable/deconz/10.0.13/charts/common-11.1.2.tgz diff --git a/stable/deconz/10.0.13/ix_values.yaml b/stable/deconz/10.0.13/ix_values.yaml new file mode 100644 index 00000000000..6818cacfaf7 --- /dev/null +++ b/stable/deconz/10.0.13/ix_values.yaml @@ -0,0 +1,67 @@ +image: + repository: tccr.io/truecharts/deconz + tag: 2.20.01@sha256:4626b9fde13aa1082287ba4568e30fdd44467594a700b1e3e958436bc4a09505 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +secretEnv: + DECONZ_VNC_PASSWORD: "" + +env: + # -- Override the location where deCONZ looks for the RaspBee/Conbee device. + # Example: /dev/ttyUSB0 + DECONZ_DEVICE: "" + DECONZ_UPNP: 0 + DECONZ_START_VERBOSE: 0 + # -- Enable VNC access to the container to view the deCONZ ZigBee mesh + DECONZ_VNC_MODE: 1 + DECONZ_WEB_PORT: "{{ .Values.service.main.ports.main.port }}" + DECONZ_WS_PORT: "{{ .Values.service.websocket.ports.websocket.port }}" + DECONZ_VNC_PORT: "{{ .Values.service.vnc.ports.vnc.port }}" + DECONZ_UID: "{{ .Values.security.PUID }}" + DECONZ_GID: "{{ .Values.podSecurityContext.fsGroup }}" + +service: + main: + ports: + main: + port: 10008 + websocket: + enabled: true + ports: + websocket: + enabled: true + port: 10001 + vnc: + enabled: true + ports: + vnc: + enabled: true + port: 10002 + +persistence: + config: + enabled: true + mountPath: "/opt/deCONZ" + +# -- Affinity constraint rules to place the Pod on a specific node. +# [[ref]](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) +affinity: {} +# nodeAffinity: +# requiredDuringSchedulingIgnoredDuringExecution: +# nodeSelectorTerms: +# - matchExpressions: +# - key: app +# operator: In +# values: +# - zigbee-controller + +portal: + enabled: true diff --git a/stable/deconz/10.0.13/questions.yaml b/stable/deconz/10.0.13/questions.yaml new file mode 100644 index 00000000000..e7a6d097235 --- /dev/null +++ b/stable/deconz/10.0.13/questions.yaml @@ -0,0 +1,2020 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DECONZ_VNC_PASSWORD + label: "DECONZ_VNC_PASSWORD" + description: "If VNC is enabled (DECONZ_VNC_MODE=1) you can change the default password" + schema: + type: string + required: true + private: true + default: "REPLACETHIS" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DECONZ_DEVICE + label: "DECONZ_DEVICE" + description: "Override the location where deCONZ looks for the RaspBee/Conbee device" + schema: + type: string + default: "/dev/ttyUSB0" + - variable: DECONZ_VNC_MODE + label: "DECONZ_VNC_MODE" + description: "Enable VNC access to the container to view the deCONZ ZigBee mesh" + schema: + type: int + default: 1 + - variable: DECONZ_UPNP + label: "DECONZ_UPNP" + description: "Set this option to 0 to disable uPNP" + schema: + type: int + default: 0 + - variable: DECONZ_START_VERBOSE + label: "DECONZ_START_VERBOSE" + description: "Set this option to 0 to disable verbose of start script, set to 1 to enable set -x logging" + schema: + type: int + default: 0 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10008 + required: true + - variable: websocket + label: "websocket Service" + description: "The websocket service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: websocket + label: "websocket Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10001 + required: true + - variable: vnc + label: "vnc Service" + description: "The vnc service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "vnc Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10002 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/dizquetv/9.0.7/templates/common.yaml b/stable/deconz/10.0.13/templates/common.yaml similarity index 100% rename from stable/dizquetv/9.0.7/templates/common.yaml rename to stable/deconz/10.0.13/templates/common.yaml diff --git a/stable/dokuwiki/5.0.18/values.yaml b/stable/deconz/10.0.13/values.yaml similarity index 100% rename from stable/dokuwiki/5.0.18/values.yaml rename to stable/deconz/10.0.13/values.yaml diff --git a/stable/dizquetv/9.0.7/CHANGELOG.md b/stable/dizquetv/9.0.7/CHANGELOG.md deleted file mode 100644 index 616f35667a6..00000000000 --- a/stable/dizquetv/9.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [dizquetv-9.0.7](https://github.com/truecharts/charts/compare/dizquetv-9.0.6...dizquetv-9.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [dizquetv-9.0.6](https://github.com/truecharts/charts/compare/dizquetv-9.0.5...dizquetv-9.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [dizquetv-9.0.5](https://github.com/truecharts/charts/compare/dizquetv-9.0.4...dizquetv-9.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [dizquetv-9.0.4](https://github.com/truecharts/charts/compare/dizquetv-9.0.3...dizquetv-9.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [dizquetv-9.0.3](https://github.com/truecharts/charts/compare/dizquetv-9.0.2...dizquetv-9.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - - - -## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) - - diff --git a/stable/dizquetv/9.0.7/Chart.yaml b/stable/dizquetv/9.0.7/Chart.yaml deleted file mode 100644 index 94056db20c4..00000000000 --- a/stable/dizquetv/9.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "1.5.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Create live TV channel streams from media on your Plex servers. -home: https://truecharts.org/charts/stable/dizquetv -icon: https://truecharts.org/img/hotlink-ok/chart-icons/dizquetv.png -keywords: - - dizqueTV - - dizquetv -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: dizquetv -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/dizquetv - - https://github.com/vexorian/dizquetv - - https://hub.docker.com/r/vexorian/dizquetv -version: 9.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/dizquetv/9.0.7/app-changelog.md b/stable/dizquetv/9.0.7/app-changelog.md deleted file mode 100644 index 4c15b8789a2..00000000000 --- a/stable/dizquetv/9.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [dizquetv-9.0.7](https://github.com/truecharts/charts/compare/dizquetv-9.0.6...dizquetv-9.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/dizquetv/9.0.7/app-readme.md b/stable/dizquetv/9.0.7/app-readme.md deleted file mode 100644 index 7f4f928fe3c..00000000000 --- a/stable/dizquetv/9.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Create live TV channel streams from media on your Plex servers. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/dizquetv](https://truecharts.org/charts/stable/dizquetv) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/dizquetv/9.0.7/questions.yaml b/stable/dizquetv/9.0.7/questions.yaml deleted file mode 100644 index 4ae3f153c23..00000000000 --- a/stable/dizquetv/9.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10071 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/dizquetv/9.0.8/CHANGELOG.md b/stable/dizquetv/9.0.8/CHANGELOG.md new file mode 100644 index 00000000000..4b37d6a02b9 --- /dev/null +++ b/stable/dizquetv/9.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [dizquetv-9.0.8](https://github.com/truecharts/charts/compare/dizquetv-9.0.7...dizquetv-9.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [dizquetv-9.0.7](https://github.com/truecharts/charts/compare/dizquetv-9.0.6...dizquetv-9.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [dizquetv-9.0.6](https://github.com/truecharts/charts/compare/dizquetv-9.0.5...dizquetv-9.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [dizquetv-9.0.5](https://github.com/truecharts/charts/compare/dizquetv-9.0.4...dizquetv-9.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [dizquetv-9.0.4](https://github.com/truecharts/charts/compare/dizquetv-9.0.3...dizquetv-9.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [dizquetv-9.0.3](https://github.com/truecharts/charts/compare/dizquetv-9.0.2...dizquetv-9.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) + + + + +## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) + + + + +## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) + + + + +## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) + + + + +## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) + + + + +## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) + + + + +## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) + + + + +## [dizquetv-9.0.2](https://github.com/truecharts/charts/compare/dizquetv-9.0.1...dizquetv-9.0.2) (2022-11-30) + + + diff --git a/stable/dizquetv/9.0.8/Chart.yaml b/stable/dizquetv/9.0.8/Chart.yaml new file mode 100644 index 00000000000..0d144b83e7c --- /dev/null +++ b/stable/dizquetv/9.0.8/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "1.5.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Create live TV channel streams from media on your Plex servers. +home: https://truecharts.org/charts/stable/dizquetv +icon: https://truecharts.org/img/hotlink-ok/chart-icons/dizquetv.png +keywords: + - dizqueTV + - dizquetv +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dizquetv +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/dizquetv + - https://hub.docker.com/vexorian/dizquetv + - https://github.com/vexorian/dizquetv +version: 9.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/dokuwiki/5.0.18/README.md b/stable/dizquetv/9.0.8/README.md similarity index 100% rename from stable/dokuwiki/5.0.18/README.md rename to stable/dizquetv/9.0.8/README.md diff --git a/stable/dizquetv/9.0.8/app-changelog.md b/stable/dizquetv/9.0.8/app-changelog.md new file mode 100644 index 00000000000..84e4744818a --- /dev/null +++ b/stable/dizquetv/9.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [dizquetv-9.0.8](https://github.com/truecharts/charts/compare/dizquetv-9.0.7...dizquetv-9.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/dizquetv/9.0.8/app-readme.md b/stable/dizquetv/9.0.8/app-readme.md new file mode 100644 index 00000000000..d0c81557225 --- /dev/null +++ b/stable/dizquetv/9.0.8/app-readme.md @@ -0,0 +1,8 @@ +Create live TV channel streams from media on your Plex servers. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/dizquetv](https://truecharts.org/charts/stable/dizquetv) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/drawio/4.0.19/charts/common-11.1.2.tgz b/stable/dizquetv/9.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/drawio/4.0.19/charts/common-11.1.2.tgz rename to stable/dizquetv/9.0.8/charts/common-11.1.2.tgz diff --git a/stable/dizquetv/9.0.7/ix_values.yaml b/stable/dizquetv/9.0.8/ix_values.yaml similarity index 100% rename from stable/dizquetv/9.0.7/ix_values.yaml rename to stable/dizquetv/9.0.8/ix_values.yaml diff --git a/stable/dizquetv/9.0.8/questions.yaml b/stable/dizquetv/9.0.8/questions.yaml new file mode 100644 index 00000000000..6eb5167d120 --- /dev/null +++ b/stable/dizquetv/9.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10071 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/docusaurus/3.0.7/templates/common.yaml b/stable/dizquetv/9.0.8/templates/common.yaml similarity index 100% rename from stable/docusaurus/3.0.7/templates/common.yaml rename to stable/dizquetv/9.0.8/templates/common.yaml diff --git a/stable/drawio/4.0.19/values.yaml b/stable/dizquetv/9.0.8/values.yaml similarity index 100% rename from stable/drawio/4.0.19/values.yaml rename to stable/dizquetv/9.0.8/values.yaml diff --git a/stable/docusaurus/3.0.7/CHANGELOG.md b/stable/docusaurus/3.0.7/CHANGELOG.md deleted file mode 100644 index 039be681c4e..00000000000 --- a/stable/docusaurus/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [docusaurus-3.0.7](https://github.com/truecharts/charts/compare/docusaurus-3.0.6...docusaurus-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [docusaurus-3.0.6](https://github.com/truecharts/charts/compare/docusaurus-3.0.5...docusaurus-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [docusaurus-3.0.5](https://github.com/truecharts/charts/compare/docusaurus-3.0.4...docusaurus-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [docusaurus-3.0.4](https://github.com/truecharts/charts/compare/docusaurus-3.0.3...docusaurus-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [docusaurus-3.0.3](https://github.com/truecharts/charts/compare/docusaurus-3.0.2...docusaurus-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - - - -## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) - - diff --git a/stable/docusaurus/3.0.7/Chart.yaml b/stable/docusaurus/3.0.7/Chart.yaml deleted file mode 100644 index 5b94eb61c55..00000000000 --- a/stable/docusaurus/3.0.7/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Docusaurus makes it easy to maintain Open Source documentation websites. -home: https://truecharts.org/charts/stable/docusaurus -icon: https://truecharts.org/img/hotlink-ok/chart-icons/docusaurus.png -keywords: - - documentation - - website - - Docusaurus -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: docusaurus -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/docusaurus - - https://hub.docker.com/r/awesometic/docusaurus - - https://github.com/awesometic/docker-docusaurus -type: application -version: 3.0.7 -annotations: - truecharts.org/catagories: | - - website - - documentation - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/docusaurus/3.0.7/app-changelog.md b/stable/docusaurus/3.0.7/app-changelog.md deleted file mode 100644 index aec689ac9bd..00000000000 --- a/stable/docusaurus/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [docusaurus-3.0.7](https://github.com/truecharts/charts/compare/docusaurus-3.0.6...docusaurus-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/docusaurus/3.0.7/app-readme.md b/stable/docusaurus/3.0.7/app-readme.md deleted file mode 100644 index c69131c811f..00000000000 --- a/stable/docusaurus/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Docusaurus makes it easy to maintain Open Source documentation websites. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/docusaurus](https://truecharts.org/charts/stable/docusaurus) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/docusaurus/3.0.7/questions.yaml b/stable/docusaurus/3.0.7/questions.yaml deleted file mode 100644 index 377f685af1a..00000000000 --- a/stable/docusaurus/3.0.7/questions.yaml +++ /dev/null @@ -1,1864 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: AUTO_UPDATE - label: "Auto Update" - schema: - type: boolean - default: true - - variable: WEBSITE_NAME - label: "Website Name" - description: "The name for your Docusaurus website" - schema: - type: string - default: "Docusaurus HomeLab Website" - - variable: TEMPLATE - label: "Docusaurus Default Template" - description: "Default template for your Docusaurus website" - schema: - type: string - default: "classic" - - variable: RUN_MODE - label: "Run Mode" - description: "Specify the mode to start Docusaurus" - schema: - type: string - default: "Production" - enum: - - value: production - description: Production - - value: development - description: Development - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 13080 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/docusaurus/3.0.8/CHANGELOG.md b/stable/docusaurus/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..e7fdb3ea77e --- /dev/null +++ b/stable/docusaurus/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [docusaurus-3.0.8](https://github.com/truecharts/charts/compare/docusaurus-3.0.7...docusaurus-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [docusaurus-3.0.7](https://github.com/truecharts/charts/compare/docusaurus-3.0.6...docusaurus-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [docusaurus-3.0.6](https://github.com/truecharts/charts/compare/docusaurus-3.0.5...docusaurus-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [docusaurus-3.0.5](https://github.com/truecharts/charts/compare/docusaurus-3.0.4...docusaurus-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [docusaurus-3.0.4](https://github.com/truecharts/charts/compare/docusaurus-3.0.3...docusaurus-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [docusaurus-3.0.3](https://github.com/truecharts/charts/compare/docusaurus-3.0.2...docusaurus-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) + + + + +## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) + + + + +## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) + + + + +## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) + + + + +## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) + + + + +## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) + + + + +## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) + + + + +## [docusaurus-3.0.2](https://github.com/truecharts/charts/compare/docusaurus-3.0.1...docusaurus-3.0.2) (2022-11-30) + + + diff --git a/stable/docusaurus/3.0.8/Chart.yaml b/stable/docusaurus/3.0.8/Chart.yaml new file mode 100644 index 00000000000..73136be09a3 --- /dev/null +++ b/stable/docusaurus/3.0.8/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Docusaurus makes it easy to maintain Open Source documentation websites. +home: https://truecharts.org/charts/stable/docusaurus +icon: https://truecharts.org/img/hotlink-ok/chart-icons/docusaurus.png +keywords: + - documentation + - website + - Docusaurus +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: docusaurus +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/docusaurus + - https://hub.docker.com/awesometic/docusaurus + - https://github.com/awesometic/docker-docusaurus +type: application +version: 3.0.8 +annotations: + truecharts.org/catagories: | + - website + - documentation + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/drawio/4.0.19/README.md b/stable/docusaurus/3.0.8/README.md similarity index 100% rename from stable/drawio/4.0.19/README.md rename to stable/docusaurus/3.0.8/README.md diff --git a/stable/docusaurus/3.0.8/app-changelog.md b/stable/docusaurus/3.0.8/app-changelog.md new file mode 100644 index 00000000000..c961deafe61 --- /dev/null +++ b/stable/docusaurus/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [docusaurus-3.0.8](https://github.com/truecharts/charts/compare/docusaurus-3.0.7...docusaurus-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/docusaurus/3.0.8/app-readme.md b/stable/docusaurus/3.0.8/app-readme.md new file mode 100644 index 00000000000..a2f321810e5 --- /dev/null +++ b/stable/docusaurus/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +Docusaurus makes it easy to maintain Open Source documentation websites. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/docusaurus](https://truecharts.org/charts/stable/docusaurus) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/dupeguru/3.0.8/charts/common-11.1.2.tgz b/stable/docusaurus/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/dupeguru/3.0.8/charts/common-11.1.2.tgz rename to stable/docusaurus/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/docusaurus/3.0.7/ix_values.yaml b/stable/docusaurus/3.0.8/ix_values.yaml similarity index 100% rename from stable/docusaurus/3.0.7/ix_values.yaml rename to stable/docusaurus/3.0.8/ix_values.yaml diff --git a/stable/docusaurus/3.0.8/questions.yaml b/stable/docusaurus/3.0.8/questions.yaml new file mode 100644 index 00000000000..370e42086ac --- /dev/null +++ b/stable/docusaurus/3.0.8/questions.yaml @@ -0,0 +1,1905 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: AUTO_UPDATE + label: "Auto Update" + schema: + type: boolean + default: true + - variable: WEBSITE_NAME + label: "Website Name" + description: "The name for your Docusaurus website" + schema: + type: string + default: "Docusaurus HomeLab Website" + - variable: TEMPLATE + label: "Docusaurus Default Template" + description: "Default template for your Docusaurus website" + schema: + type: string + default: "classic" + - variable: RUN_MODE + label: "Run Mode" + description: "Specify the mode to start Docusaurus" + schema: + type: string + default: "Production" + enum: + - value: production + description: Production + - value: development + description: Development + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 13080 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/dokuwiki/5.0.18/templates/common.yaml b/stable/docusaurus/3.0.8/templates/common.yaml similarity index 100% rename from stable/dokuwiki/5.0.18/templates/common.yaml rename to stable/docusaurus/3.0.8/templates/common.yaml diff --git a/stable/dupeguru/3.0.8/values.yaml b/stable/docusaurus/3.0.8/values.yaml similarity index 100% rename from stable/dupeguru/3.0.8/values.yaml rename to stable/docusaurus/3.0.8/values.yaml diff --git a/stable/dokuwiki/5.0.18/CHANGELOG.md b/stable/dokuwiki/5.0.18/CHANGELOG.md deleted file mode 100644 index a156a1bbe2e..00000000000 --- a/stable/dokuwiki/5.0.18/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [dokuwiki-5.0.18](https://github.com/truecharts/charts/compare/dokuwiki-5.0.17...dokuwiki-5.0.18) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 - - - - -## [dokuwiki-5.0.17](https://github.com/truecharts/charts/compare/dokuwiki-5.0.16...dokuwiki-5.0.17) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 - - - - -## [dokuwiki-5.0.16](https://github.com/truecharts/charts/compare/dokuwiki-5.0.15...dokuwiki-5.0.16) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 - - - - -## [dokuwiki-5.0.15](https://github.com/truecharts/charts/compare/dokuwiki-5.0.14...dokuwiki-5.0.15) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 - - - - -## [dokuwiki-5.0.14](https://github.com/truecharts/charts/compare/dokuwiki-5.0.13...dokuwiki-5.0.14) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 - - - - -## [dokuwiki-5.0.13](https://github.com/truecharts/charts/compare/dokuwiki-5.0.12...dokuwiki-5.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [dokuwiki-5.0.12](https://github.com/truecharts/charts/compare/dokuwiki-5.0.11...dokuwiki-5.0.12) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 ([#5786](https://github.com/truecharts/charts/issues/5786)) - - - - -## [dokuwiki-5.0.11](https://github.com/truecharts/charts/compare/dokuwiki-5.0.10...dokuwiki-5.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [dokuwiki-5.0.10](https://github.com/truecharts/charts/compare/dokuwiki-5.0.9...dokuwiki-5.0.10) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 - - - - -## [dokuwiki-5.0.9](https://github.com/truecharts/charts/compare/dokuwiki-5.0.8...dokuwiki-5.0.9) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [dokuwiki-5.0.8](https://github.com/truecharts/charts/compare/dokuwiki-5.0.7...dokuwiki-5.0.8) (2022-12-13) - diff --git a/stable/dokuwiki/5.0.18/Chart.yaml b/stable/dokuwiki/5.0.18/Chart.yaml deleted file mode 100644 index 7f09769ba05..00000000000 --- a/stable/dokuwiki/5.0.18/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: dokuwiki -version: 5.0.18 -appVersion: "20220731.1" -description: Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. -type: application -deprecated: false -home: https://truecharts.org/charts/stable/dokuwiki -icon: https://truecharts.org/img/hotlink-ok/chart-icons/dokuwiki.png -keywords: - - dokuwiki -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/dokuwiki - - https://hub.docker.com/r/bitnami/dokuwiki -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - # condition: -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - incubator - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/dokuwiki/5.0.18/app-changelog.md b/stable/dokuwiki/5.0.18/app-changelog.md deleted file mode 100644 index e55121f0868..00000000000 --- a/stable/dokuwiki/5.0.18/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [dokuwiki-5.0.18](https://github.com/truecharts/charts/compare/dokuwiki-5.0.17...dokuwiki-5.0.18) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 - - \ No newline at end of file diff --git a/stable/dokuwiki/5.0.19/CHANGELOG.md b/stable/dokuwiki/5.0.19/CHANGELOG.md new file mode 100644 index 00000000000..dd1a9a98897 --- /dev/null +++ b/stable/dokuwiki/5.0.19/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [dokuwiki-5.0.19](https://github.com/truecharts/charts/compare/dokuwiki-5.0.18...dokuwiki-5.0.19) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [dokuwiki-5.0.18](https://github.com/truecharts/charts/compare/dokuwiki-5.0.17...dokuwiki-5.0.18) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 + + + + +## [dokuwiki-5.0.17](https://github.com/truecharts/charts/compare/dokuwiki-5.0.16...dokuwiki-5.0.17) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 + + + + +## [dokuwiki-5.0.16](https://github.com/truecharts/charts/compare/dokuwiki-5.0.15...dokuwiki-5.0.16) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 + + + + +## [dokuwiki-5.0.15](https://github.com/truecharts/charts/compare/dokuwiki-5.0.14...dokuwiki-5.0.15) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 + + + + +## [dokuwiki-5.0.14](https://github.com/truecharts/charts/compare/dokuwiki-5.0.13...dokuwiki-5.0.14) (2023-01-04) + +### Chore + +- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 + + + + +## [dokuwiki-5.0.13](https://github.com/truecharts/charts/compare/dokuwiki-5.0.12...dokuwiki-5.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [dokuwiki-5.0.12](https://github.com/truecharts/charts/compare/dokuwiki-5.0.11...dokuwiki-5.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + - update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 ([#5786](https://github.com/truecharts/charts/issues/5786)) + + + + +## [dokuwiki-5.0.11](https://github.com/truecharts/charts/compare/dokuwiki-5.0.10...dokuwiki-5.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [dokuwiki-5.0.10](https://github.com/truecharts/charts/compare/dokuwiki-5.0.9...dokuwiki-5.0.10) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/dokuwiki to 20220731.1.0 + + + + +## [dokuwiki-5.0.9](https://github.com/truecharts/charts/compare/dokuwiki-5.0.8...dokuwiki-5.0.9) (2022-12-19) + diff --git a/stable/dokuwiki/5.0.19/Chart.yaml b/stable/dokuwiki/5.0.19/Chart.yaml new file mode 100644 index 00000000000..d8624ddcec9 --- /dev/null +++ b/stable/dokuwiki/5.0.19/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: dokuwiki +version: 5.0.19 +appVersion: "20220731.1" +description: Dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. +type: application +deprecated: false +home: https://truecharts.org/charts/stable/dokuwiki +icon: https://truecharts.org/img/hotlink-ok/chart-icons/dokuwiki.png +keywords: + - dokuwiki +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/dokuwiki + - https://hub.docker.com/bitnami/dokuwiki +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - incubator + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/dupeguru/3.0.8/README.md b/stable/dokuwiki/5.0.19/README.md similarity index 100% rename from stable/dupeguru/3.0.8/README.md rename to stable/dokuwiki/5.0.19/README.md diff --git a/stable/dokuwiki/5.0.19/app-changelog.md b/stable/dokuwiki/5.0.19/app-changelog.md new file mode 100644 index 00000000000..27829628021 --- /dev/null +++ b/stable/dokuwiki/5.0.19/app-changelog.md @@ -0,0 +1,9 @@ + + +## [dokuwiki-5.0.19](https://github.com/truecharts/charts/compare/dokuwiki-5.0.18...dokuwiki-5.0.19) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/dokuwiki/5.0.18/app-readme.md b/stable/dokuwiki/5.0.19/app-readme.md similarity index 100% rename from stable/dokuwiki/5.0.18/app-readme.md rename to stable/dokuwiki/5.0.19/app-readme.md diff --git a/stable/filebot/3.0.9/charts/common-11.1.2.tgz b/stable/dokuwiki/5.0.19/charts/common-11.1.2.tgz similarity index 100% rename from stable/filebot/3.0.9/charts/common-11.1.2.tgz rename to stable/dokuwiki/5.0.19/charts/common-11.1.2.tgz diff --git a/stable/dokuwiki/5.0.18/ix_values.yaml b/stable/dokuwiki/5.0.19/ix_values.yaml similarity index 100% rename from stable/dokuwiki/5.0.18/ix_values.yaml rename to stable/dokuwiki/5.0.19/ix_values.yaml diff --git a/stable/dokuwiki/5.0.18/questions.yaml b/stable/dokuwiki/5.0.19/questions.yaml similarity index 100% rename from stable/dokuwiki/5.0.18/questions.yaml rename to stable/dokuwiki/5.0.19/questions.yaml diff --git a/stable/drawio/4.0.19/templates/common.yaml b/stable/dokuwiki/5.0.19/templates/common.yaml similarity index 100% rename from stable/drawio/4.0.19/templates/common.yaml rename to stable/dokuwiki/5.0.19/templates/common.yaml diff --git a/stable/filebot/3.0.9/values.yaml b/stable/dokuwiki/5.0.19/values.yaml similarity index 100% rename from stable/filebot/3.0.9/values.yaml rename to stable/dokuwiki/5.0.19/values.yaml diff --git a/stable/drawio/4.0.19/CHANGELOG.md b/stable/drawio/4.0.19/CHANGELOG.md deleted file mode 100644 index b11318c6e00..00000000000 --- a/stable/drawio/4.0.19/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [drawio-4.0.19](https://github.com/truecharts/charts/compare/drawio-4.0.18...drawio-4.0.19) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/drawio to v20.8.13 - - - - -## [drawio-4.0.18](https://github.com/truecharts/charts/compare/drawio-4.0.17...drawio-4.0.18) (2023-01-21) - -### Chore - -- update container image tccr.io/truecharts/drawio to v20.8.10 - - - - -## [drawio-4.0.17](https://github.com/truecharts/charts/compare/drawio-4.0.16...drawio-4.0.17) (2023-01-20) - -### Chore - -- update container image tccr.io/truecharts/drawio to v20.8.8 - - - - -## [drawio-4.0.16](https://github.com/truecharts/charts/compare/drawio-4.0.15...drawio-4.0.16) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/drawio to v20.8.6 - - - - -## [drawio-4.0.15](https://github.com/truecharts/charts/compare/drawio-4.0.14...drawio-4.0.15) (2023-01-16) - -### Chore - -- update container image tccr.io/truecharts/drawio to v20.8.5 - - - - -## [drawio-4.0.14](https://github.com/truecharts/charts/compare/drawio-4.0.13...drawio-4.0.14) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/drawio to v20.8.3 - - - - -## [drawio-4.0.13](https://github.com/truecharts/charts/compare/drawio-4.0.12...drawio-4.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [drawio-4.0.12](https://github.com/truecharts/charts/compare/drawio-4.0.11...drawio-4.0.12) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [drawio-4.0.11](https://github.com/truecharts/charts/compare/drawio-4.0.10...drawio-4.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [drawio-4.0.10](https://github.com/truecharts/charts/compare/drawio-4.0.9...drawio-4.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [drawio-4.0.9](https://github.com/truecharts/charts/compare/drawio-4.0.8...drawio-4.0.9) (2022-12-18) - -### Chore diff --git a/stable/drawio/4.0.19/Chart.yaml b/stable/drawio/4.0.19/Chart.yaml deleted file mode 100644 index c3fdd49cdde..00000000000 --- a/stable/drawio/4.0.19/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "20.8.13" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Drawio is free online diagram software. -home: https://truecharts.org/charts/stable/drawio -icon: https://truecharts.org/img/hotlink-ok/chart-icons/drawio.png -keywords: - - drawio -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: drawio -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/drawio - - https://hub.docker.com/r/jgraph/drawio - - https://github.com/jgraph/drawio -version: 4.0.19 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/drawio/4.0.19/app-changelog.md b/stable/drawio/4.0.19/app-changelog.md deleted file mode 100644 index 5fab5ae7b1f..00000000000 --- a/stable/drawio/4.0.19/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [drawio-4.0.19](https://github.com/truecharts/charts/compare/drawio-4.0.18...drawio-4.0.19) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/drawio to v20.8.13 - - \ No newline at end of file diff --git a/stable/drawio/4.0.20/CHANGELOG.md b/stable/drawio/4.0.20/CHANGELOG.md new file mode 100644 index 00000000000..524c0f59a9c --- /dev/null +++ b/stable/drawio/4.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [drawio-4.0.20](https://github.com/truecharts/charts/compare/drawio-4.0.19...drawio-4.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [drawio-4.0.19](https://github.com/truecharts/charts/compare/drawio-4.0.18...drawio-4.0.19) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/drawio to v20.8.13 + + + + +## [drawio-4.0.18](https://github.com/truecharts/charts/compare/drawio-4.0.17...drawio-4.0.18) (2023-01-21) + +### Chore + +- update container image tccr.io/truecharts/drawio to v20.8.10 + + + + +## [drawio-4.0.17](https://github.com/truecharts/charts/compare/drawio-4.0.16...drawio-4.0.17) (2023-01-20) + +### Chore + +- update container image tccr.io/truecharts/drawio to v20.8.8 + + + + +## [drawio-4.0.16](https://github.com/truecharts/charts/compare/drawio-4.0.15...drawio-4.0.16) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/drawio to v20.8.6 + + + + +## [drawio-4.0.15](https://github.com/truecharts/charts/compare/drawio-4.0.14...drawio-4.0.15) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/drawio to v20.8.5 + + + + +## [drawio-4.0.14](https://github.com/truecharts/charts/compare/drawio-4.0.13...drawio-4.0.14) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/drawio to v20.8.3 + + + + +## [drawio-4.0.13](https://github.com/truecharts/charts/compare/drawio-4.0.12...drawio-4.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [drawio-4.0.12](https://github.com/truecharts/charts/compare/drawio-4.0.11...drawio-4.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [drawio-4.0.11](https://github.com/truecharts/charts/compare/drawio-4.0.10...drawio-4.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [drawio-4.0.10](https://github.com/truecharts/charts/compare/drawio-4.0.9...drawio-4.0.10) (2022-12-19) + +### Chore diff --git a/stable/drawio/4.0.20/Chart.yaml b/stable/drawio/4.0.20/Chart.yaml new file mode 100644 index 00000000000..3d02deaf2d9 --- /dev/null +++ b/stable/drawio/4.0.20/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "20.8.13" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Drawio is free online diagram software. +home: https://truecharts.org/charts/stable/drawio +icon: https://truecharts.org/img/hotlink-ok/chart-icons/drawio.png +keywords: + - drawio +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: drawio +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/drawio + - https://hub.docker.com/jgraph/drawio + - https://github.com/jgraph/drawio +version: 4.0.20 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/filebot/3.0.9/README.md b/stable/drawio/4.0.20/README.md similarity index 100% rename from stable/filebot/3.0.9/README.md rename to stable/drawio/4.0.20/README.md diff --git a/stable/drawio/4.0.20/app-changelog.md b/stable/drawio/4.0.20/app-changelog.md new file mode 100644 index 00000000000..3bd71183204 --- /dev/null +++ b/stable/drawio/4.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [drawio-4.0.20](https://github.com/truecharts/charts/compare/drawio-4.0.19...drawio-4.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/drawio/4.0.19/app-readme.md b/stable/drawio/4.0.20/app-readme.md similarity index 100% rename from stable/drawio/4.0.19/app-readme.md rename to stable/drawio/4.0.20/app-readme.md diff --git a/stable/fileflows/4.0.9/charts/common-11.1.2.tgz b/stable/drawio/4.0.20/charts/common-11.1.2.tgz similarity index 100% rename from stable/fileflows/4.0.9/charts/common-11.1.2.tgz rename to stable/drawio/4.0.20/charts/common-11.1.2.tgz diff --git a/stable/drawio/4.0.19/ix_values.yaml b/stable/drawio/4.0.20/ix_values.yaml similarity index 100% rename from stable/drawio/4.0.19/ix_values.yaml rename to stable/drawio/4.0.20/ix_values.yaml diff --git a/stable/drawio/4.0.19/questions.yaml b/stable/drawio/4.0.20/questions.yaml similarity index 100% rename from stable/drawio/4.0.19/questions.yaml rename to stable/drawio/4.0.20/questions.yaml diff --git a/stable/dupeguru/3.0.8/templates/common.yaml b/stable/drawio/4.0.20/templates/common.yaml similarity index 100% rename from stable/dupeguru/3.0.8/templates/common.yaml rename to stable/drawio/4.0.20/templates/common.yaml diff --git a/stable/fileflows/4.0.9/values.yaml b/stable/drawio/4.0.20/values.yaml similarity index 100% rename from stable/fileflows/4.0.9/values.yaml rename to stable/drawio/4.0.20/values.yaml diff --git a/stable/dupeguru/3.0.8/CHANGELOG.md b/stable/dupeguru/3.0.8/CHANGELOG.md deleted file mode 100644 index 7510252aa6f..00000000000 --- a/stable/dupeguru/3.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [dupeguru-3.0.8](https://github.com/truecharts/charts/compare/dupeguru-3.0.7...dupeguru-3.0.8) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/dupeguru to v23.01.1 ([#6239](https://github.com/truecharts/charts/issues/6239)) - - - - -## [dupeguru-3.0.7](https://github.com/truecharts/charts/compare/dupeguru-3.0.6...dupeguru-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [dupeguru-3.0.6](https://github.com/truecharts/charts/compare/dupeguru-3.0.5...dupeguru-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [dupeguru-3.0.5](https://github.com/truecharts/charts/compare/dupeguru-3.0.4...dupeguru-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [dupeguru-3.0.4](https://github.com/truecharts/charts/compare/dupeguru-3.0.3...dupeguru-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [dupeguru-3.0.3](https://github.com/truecharts/charts/compare/dupeguru-3.0.2...dupeguru-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) - - - - -## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) - - - - -## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) - - - - -## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) - - - - -## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) - - - - -## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) - - - - -## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) - - - - -## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) - - - diff --git a/stable/dupeguru/3.0.8/Chart.yaml b/stable/dupeguru/3.0.8/Chart.yaml deleted file mode 100644 index 10df663d901..00000000000 --- a/stable/dupeguru/3.0.8/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "23.01.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: dupeGuru is a tool to find duplicate files on your computer. It can scan either filenames or contents. -home: https://truecharts.org/charts/stable/dupeguru -icon: https://truecharts.org/img/hotlink-ok/chart-icons/dupeguru.png -keywords: - - dedupe - - dupeguru -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: dupeguru -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/dupeguru - - https://github.com/jlesage/docker-dupeguru - - https://hub.docker.com/r/jlesage/dupeguru/ -type: application -version: 3.0.8 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/dupeguru/3.0.8/app-changelog.md b/stable/dupeguru/3.0.8/app-changelog.md deleted file mode 100644 index 4a27c09ac6b..00000000000 --- a/stable/dupeguru/3.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [dupeguru-3.0.8](https://github.com/truecharts/charts/compare/dupeguru-3.0.7...dupeguru-3.0.8) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/dupeguru to v23.01.1 ([#6239](https://github.com/truecharts/charts/issues/6239)) - - \ No newline at end of file diff --git a/stable/dupeguru/3.0.9/CHANGELOG.md b/stable/dupeguru/3.0.9/CHANGELOG.md new file mode 100644 index 00000000000..92604d3cc5c --- /dev/null +++ b/stable/dupeguru/3.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [dupeguru-3.0.9](https://github.com/truecharts/charts/compare/dupeguru-3.0.8...dupeguru-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [dupeguru-3.0.8](https://github.com/truecharts/charts/compare/dupeguru-3.0.7...dupeguru-3.0.8) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/dupeguru to v23.01.1 ([#6239](https://github.com/truecharts/charts/issues/6239)) + + + + +## [dupeguru-3.0.7](https://github.com/truecharts/charts/compare/dupeguru-3.0.6...dupeguru-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [dupeguru-3.0.6](https://github.com/truecharts/charts/compare/dupeguru-3.0.5...dupeguru-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [dupeguru-3.0.5](https://github.com/truecharts/charts/compare/dupeguru-3.0.4...dupeguru-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [dupeguru-3.0.4](https://github.com/truecharts/charts/compare/dupeguru-3.0.3...dupeguru-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [dupeguru-3.0.3](https://github.com/truecharts/charts/compare/dupeguru-3.0.2...dupeguru-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) + + + + +## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) + + + + +## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) + + + + +## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) + + + + +## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) + + + + +## [dupeguru-3.0.2](https://github.com/truecharts/charts/compare/dupeguru-3.0.1...dupeguru-3.0.2) (2022-11-30) + + + + diff --git a/stable/dupeguru/3.0.9/Chart.yaml b/stable/dupeguru/3.0.9/Chart.yaml new file mode 100644 index 00000000000..acf3878a6b5 --- /dev/null +++ b/stable/dupeguru/3.0.9/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "23.01.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: dupeGuru is a tool to find duplicate files on your computer. It can scan either filenames or contents. +home: https://truecharts.org/charts/stable/dupeguru +icon: https://truecharts.org/img/hotlink-ok/chart-icons/dupeguru.png +keywords: + - dedupe + - dupeguru +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: dupeguru +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/dupeguru + - https://hub.docker.com/jlesage/dupeguru + - https://github.com/jlesage/docker-dupeguru +type: application +version: 3.0.9 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/fileflows/4.0.9/README.md b/stable/dupeguru/3.0.9/README.md similarity index 100% rename from stable/fileflows/4.0.9/README.md rename to stable/dupeguru/3.0.9/README.md diff --git a/stable/dupeguru/3.0.9/app-changelog.md b/stable/dupeguru/3.0.9/app-changelog.md new file mode 100644 index 00000000000..2d7991747b0 --- /dev/null +++ b/stable/dupeguru/3.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [dupeguru-3.0.9](https://github.com/truecharts/charts/compare/dupeguru-3.0.8...dupeguru-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/dupeguru/3.0.8/app-readme.md b/stable/dupeguru/3.0.9/app-readme.md similarity index 100% rename from stable/dupeguru/3.0.8/app-readme.md rename to stable/dupeguru/3.0.9/app-readme.md diff --git a/stable/filerun/6.0.17/charts/common-11.1.2.tgz b/stable/dupeguru/3.0.9/charts/common-11.1.2.tgz similarity index 100% rename from stable/filerun/6.0.17/charts/common-11.1.2.tgz rename to stable/dupeguru/3.0.9/charts/common-11.1.2.tgz diff --git a/stable/dupeguru/3.0.8/ix_values.yaml b/stable/dupeguru/3.0.9/ix_values.yaml similarity index 100% rename from stable/dupeguru/3.0.8/ix_values.yaml rename to stable/dupeguru/3.0.9/ix_values.yaml diff --git a/stable/dupeguru/3.0.8/questions.yaml b/stable/dupeguru/3.0.9/questions.yaml similarity index 100% rename from stable/dupeguru/3.0.8/questions.yaml rename to stable/dupeguru/3.0.9/questions.yaml diff --git a/stable/filebot/3.0.9/templates/common.yaml b/stable/dupeguru/3.0.9/templates/common.yaml similarity index 100% rename from stable/filebot/3.0.9/templates/common.yaml rename to stable/dupeguru/3.0.9/templates/common.yaml diff --git a/stable/filerun/6.0.17/values.yaml b/stable/dupeguru/3.0.9/values.yaml similarity index 100% rename from stable/filerun/6.0.17/values.yaml rename to stable/dupeguru/3.0.9/values.yaml diff --git a/stable/esphome/13.0.18/CHANGELOG.md b/stable/esphome/13.0.18/CHANGELOG.md new file mode 100644 index 00000000000..6522f669148 --- /dev/null +++ b/stable/esphome/13.0.18/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [esphome-13.0.18](https://github.com/truecharts/charts/compare/esphome-13.0.17...esphome-13.0.18) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [esphome-13.0.17](https://github.com/truecharts/charts/compare/esphome-13.0.16...esphome-13.0.17) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/esphome to v2022.12.8 + + + + +## [esphome-13.0.16](https://github.com/truecharts/charts/compare/esphome-13.0.15...esphome-13.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [esphome-13.0.15](https://github.com/truecharts/charts/compare/esphome-13.0.14...esphome-13.0.15) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [esphome-13.0.14](https://github.com/truecharts/charts/compare/esphome-13.0.13...esphome-13.0.14) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [esphome-13.0.13](https://github.com/truecharts/charts/compare/esphome-13.0.12...esphome-13.0.13) (2022-12-20) + +### Chore + +- update container image tccr.io/truecharts/esphome to v2022.12.3 + + + + +## [esphome-13.0.12](https://github.com/truecharts/charts/compare/esphome-13.0.11...esphome-13.0.12) (2022-12-20) + +### Chore + +- update container image tccr.io/truecharts/esphome to v2022.12.2 + + + + +## [esphome-13.0.11](https://github.com/truecharts/charts/compare/esphome-13.0.10...esphome-13.0.11) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [esphome-13.0.10](https://github.com/truecharts/charts/compare/esphome-13.0.9...esphome-13.0.10) (2022-12-17) + +### Chore + +- update container image tccr.io/truecharts/esphome to v2022.12.1 + + + + +## [esphome-13.0.9](https://github.com/truecharts/charts/compare/esphome-13.0.8...esphome-13.0.9) (2022-12-14) + +### Chore + +- update container image tccr.io/truecharts/esphome to v2022.12.0 + + + + +## [esphome-13.0.8](https://github.com/truecharts/charts/compare/esphome-13.0.7...esphome-13.0.8) (2022-12-13) + +### Chore diff --git a/stable/esphome/13.0.18/Chart.yaml b/stable/esphome/13.0.18/Chart.yaml new file mode 100644 index 00000000000..707a52a8212 --- /dev/null +++ b/stable/esphome/13.0.18/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "2022.12.8" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems. +home: https://truecharts.org/charts/stable/esphome +icon: https://truecharts.org/img/hotlink-ok/chart-icons/esphome.png +keywords: + - esphome +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: esphome +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/esphome + - https://hub.docker.com/esphome/esphome + - https://github.com/esphome/esphome +type: application +version: 13.0.18 +annotations: + truecharts.org/catagories: | + - tools + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/filerun/6.0.17/README.md b/stable/esphome/13.0.18/README.md similarity index 100% rename from stable/filerun/6.0.17/README.md rename to stable/esphome/13.0.18/README.md diff --git a/stable/esphome/13.0.18/app-changelog.md b/stable/esphome/13.0.18/app-changelog.md new file mode 100644 index 00000000000..67d99a44043 --- /dev/null +++ b/stable/esphome/13.0.18/app-changelog.md @@ -0,0 +1,9 @@ + + +## [esphome-13.0.18](https://github.com/truecharts/charts/compare/esphome-13.0.17...esphome-13.0.18) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/esphome/13.0.18/app-readme.md b/stable/esphome/13.0.18/app-readme.md new file mode 100644 index 00000000000..2efae02624d --- /dev/null +++ b/stable/esphome/13.0.18/app-readme.md @@ -0,0 +1,8 @@ +ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/esphome](https://truecharts.org/charts/stable/esphome) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/flashpaper/3.0.4/charts/common-11.1.2.tgz b/stable/esphome/13.0.18/charts/common-11.1.2.tgz similarity index 100% rename from stable/flashpaper/3.0.4/charts/common-11.1.2.tgz rename to stable/esphome/13.0.18/charts/common-11.1.2.tgz diff --git a/stable/esphome/13.0.18/ix_values.yaml b/stable/esphome/13.0.18/ix_values.yaml new file mode 100644 index 00000000000..de4f3c4d006 --- /dev/null +++ b/stable/esphome/13.0.18/ix_values.yaml @@ -0,0 +1,42 @@ +image: + repository: tccr.io/truecharts/esphome + pullPolicy: IfNotPresent + tag: 2022.12.8@sha256:3832c317a498dfa0f84d4a2d36cafb52fdf7d22a57e0dfaf148bf718c96faa2a + +# App needs to run as root because of this: https://github.com/esphome/issues/issues/2752 +securityContext: + runAsNonRoot: false + readOnlyRootFilesystem: false + privileged: true + allowPrivilegeEscalation: true + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +service: + main: + ports: + main: + port: 6052 + targetPort: 6052 + +env: + ESPHOME_DASHBOARD_USE_PING: false + ESPHOME_DASHBOARD_RELATIVE_URL: / + # ESPHOME_QUICKWIZARD: + # ESPHOME_IS_HASSIO: + # DISABLE_HA_AUTHENTICATION: + # USERNAME: + # PASSWORD: + +persistence: + config: + enabled: true + mountPath: /config + platformio: + enabled: true + mountPath: /.platformio + +portal: + enabled: true diff --git a/stable/esphome/13.0.18/questions.yaml b/stable/esphome/13.0.18/questions.yaml new file mode 100644 index 00000000000..77d1ca1c8d4 --- /dev/null +++ b/stable/esphome/13.0.18/questions.yaml @@ -0,0 +1,1954 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: ESPHOME_DASHBOARD_USE_PING + label: Esphome Dasboard Use Ping + description: Check the status of the device + schema: + type: boolean + default: true + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 6052 + required: true + # Configure app volumes + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: platformio + label: Platformio Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: true + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: true + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/fileflows/4.0.9/templates/common.yaml b/stable/esphome/13.0.18/templates/common.yaml similarity index 100% rename from stable/fileflows/4.0.9/templates/common.yaml rename to stable/esphome/13.0.18/templates/common.yaml diff --git a/stable/flashpaper/3.0.4/values.yaml b/stable/esphome/13.0.18/values.yaml similarity index 100% rename from stable/flashpaper/3.0.4/values.yaml rename to stable/esphome/13.0.18/values.yaml diff --git a/stable/filebot/3.0.10/CHANGELOG.md b/stable/filebot/3.0.10/CHANGELOG.md new file mode 100644 index 00000000000..8371bf71e97 --- /dev/null +++ b/stable/filebot/3.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [filebot-3.0.10](https://github.com/truecharts/charts/compare/filebot-3.0.9...filebot-3.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [filebot-3.0.9](https://github.com/truecharts/charts/compare/filebot-3.0.8...filebot-3.0.9) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/filebot to v23.01.3 + + + + +## [filebot-3.0.8](https://github.com/truecharts/charts/compare/filebot-3.0.7...filebot-3.0.8) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/filebot to v23.01.2 + + + + +## [filebot-3.0.7](https://github.com/truecharts/charts/compare/filebot-3.0.6...filebot-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [filebot-3.0.6](https://github.com/truecharts/charts/compare/filebot-3.0.5...filebot-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [filebot-3.0.5](https://github.com/truecharts/charts/compare/filebot-3.0.4...filebot-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [filebot-3.0.4](https://github.com/truecharts/charts/compare/filebot-3.0.3...filebot-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [filebot-3.0.3](https://github.com/truecharts/charts/compare/filebot-3.0.2...filebot-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) + + + + +## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) + + + + +## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) + + + + +## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) + + + + +## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) diff --git a/stable/filebot/3.0.10/Chart.yaml b/stable/filebot/3.0.10/Chart.yaml new file mode 100644 index 00000000000..25506eaf16f --- /dev/null +++ b/stable/filebot/3.0.10/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "23.01.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: FileBot is the ultimate tool for organizing and renaming your movies, tv shows or anime, and music well as downloading subtitles and artwork. It's smart and just works. +home: https://truecharts.org/charts/stable/filebot +icon: https://truecharts.org/img/hotlink-ok/chart-icons/filebot.png +keywords: + - media + - filebot +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: filebot +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/filebot + - https://hub.docker.com/jlesage/filebot + - https://github.com/jlesage/docker-filebot +type: application +version: 3.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/flashpaper/3.0.4/README.md b/stable/filebot/3.0.10/README.md similarity index 100% rename from stable/flashpaper/3.0.4/README.md rename to stable/filebot/3.0.10/README.md diff --git a/stable/filebot/3.0.10/app-changelog.md b/stable/filebot/3.0.10/app-changelog.md new file mode 100644 index 00000000000..2a95b14eb30 --- /dev/null +++ b/stable/filebot/3.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [filebot-3.0.10](https://github.com/truecharts/charts/compare/filebot-3.0.9...filebot-3.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/filebot/3.0.9/app-readme.md b/stable/filebot/3.0.10/app-readme.md similarity index 100% rename from stable/filebot/3.0.9/app-readme.md rename to stable/filebot/3.0.10/app-readme.md diff --git a/stable/flexget/4.0.18/charts/common-11.1.2.tgz b/stable/filebot/3.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/flexget/4.0.18/charts/common-11.1.2.tgz rename to stable/filebot/3.0.10/charts/common-11.1.2.tgz diff --git a/stable/filebot/3.0.9/ix_values.yaml b/stable/filebot/3.0.10/ix_values.yaml similarity index 100% rename from stable/filebot/3.0.9/ix_values.yaml rename to stable/filebot/3.0.10/ix_values.yaml diff --git a/stable/filebot/3.0.10/questions.yaml b/stable/filebot/3.0.10/questions.yaml new file mode 100644 index 00000000000..8b882c8344b --- /dev/null +++ b/stable/filebot/3.0.10/questions.yaml @@ -0,0 +1,2351 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + # Portal + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: filebot + group: "App Configuration" + label: "FileBot Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: general + label: "General FileBot Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: OPENSUBTITLES_USERNAME + label: "OPENSUBTITLES_USERNAME" + description: "Username of your OpenSubtitles account. Required to download subtitles." + schema: + type: string + default: "" + - variable: OPENSUBTITLES_PASSWORD + label: "OPENSUBTITLES_PASSWORD" + description: "Password of your OpenSubtitles account. Required to download subtitles." + schema: + type: string + default: "" + - variable: FILEBOT_CUSTOM_OPTIONS + label: "FILEBOT_CUSTOM_OPTIONS" + description: "Custom arguments to pass to FileBot. This applies to the UI only." + schema: + type: string + default: "" + - variable: USE_FILEBOT_BETA + label: "USE_FILEBOT_BETA" + description: "When set to true, FileBot installed under /config/beta (container path) is used." + schema: + type: boolean + default: false + - variable: amc + label: "Automated Media Center Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: AMC_INTERVAL + label: "AMC_INTERVAL" + description: "Time (in seconds) between each invocation of the AMC script." + schema: + type: int + default: 1800 + - variable: AMC_INPUT_STABLE_TIME + label: "AMC_INPUT_STABLE_TIME" + description: "Time (in seconds) during which properties (e.g. size, time, etc) of files in the watch folder need to remain the same before invoking the AMC script." + schema: + type: int + default: 1800 + - variable: AMC_ACTION + label: "AMC_ACTION" + description: "Action performed by the AMC script on files." + schema: + type: string + default: "test" + enum: + - value: "test" + description: "test" + - value: "copy" + description: "copy" + - value: "move" + description: "move" + - value: "symlink" + description: "symlink" + - value: "hardlink" + description: "hardlink" + - value: "keeplink" + description: "keeplink" + - value: "duplicate" + description: "duplicate" + - value: "clone" + description: "clone" + - variable: AMC_CONFLICT + label: "AMC_CONFLICT" + description: "Conflict resolution strategy used by the AMC script" + schema: + type: string + default: "auto" + enum: + - value: "auto" + description: "auto" + - value: "skip" + description: "skip" + - variable: AMC_MATCH_MODE + label: "AMC_MATCH_MODE" + description: "Match mode used by the AMC script" + schema: + type: string + default: "opportunistic" + enum: + - value: "opportunistic" + description: "opportunistic" + - value: "strict" + description: "strict" + - variable: AMC_ARTWORK + label: "AMC_ARTWORK" + description: "When set to true, artwork is fetched and NFO file is generated by the AMC script." + schema: + type: boolean + default: false + - variable: AMC_LANG + label: "AMC_LANG" + description: "Language used by the AMC script to rename files. Two-characters language code or value like English, French." + schema: + type: string + default: "English" + - variable: AMC_MUSIC_FORMAT + label: "AMC_MUSIC_FORMAT" + description: "Define how music files are renamed by the AMC script." + schema: + type: string + default: "{plex}" + - variable: AMC_MOVIE_FORMAT + label: "AMC_MOVIE_FORMAT" + description: "Define how movie files are renamed by the AMC script." + schema: + type: string + default: "{plex}" + - variable: AMC_SERIES_FORMAT + label: "AMC_SERIES_FORMAT" + description: "Define how TV series files are renamed by the AMC script." + schema: + type: string + default: "{plex}" + - variable: AMC_ANIME_FORMAT + label: "AMC_ANIME_FORMAT" + description: "Define how anime files are renamed by the AMC script." + schema: + type: string + default: "{plex}" + - variable: AMC_PROCESS_MUSIC + label: "AMC_PROCESS_MUSIC" + description: "When set to true, music files are processed by the AMC script." + schema: + type: boolean + default: true + - variable: AMC_SUBTITLE_LANG + label: "AMC_SUBTITLE_LANG" + description: "Comma-separated list of subtitle languages to download. Example: en,de,fr." + schema: + type: string + default: "" + - variable: AMC_CUSTOM_OPTIONS + label: "AMC_CUSTOM_OPTIONS" + description: "Custom arguments to pass to the AMC script." + schema: + type: string + default: "" + - variable: AMC_INSTALL_PKGS + label: "AMC_INSTALL_PKGS" + description: "Space-separated list of Alpine Linux packages to install." + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10268 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10269 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage Storage" + description: "Stores the Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: watch + label: "App Watch Storage" + description: "Stores the Application Watch." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: output + label: "App Output Storage" + description: "Stores the Application Output." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/filerun/6.0.17/templates/common.yaml b/stable/filebot/3.0.10/templates/common.yaml similarity index 100% rename from stable/filerun/6.0.17/templates/common.yaml rename to stable/filebot/3.0.10/templates/common.yaml diff --git a/stable/flexget/4.0.18/values.yaml b/stable/filebot/3.0.10/values.yaml similarity index 100% rename from stable/flexget/4.0.18/values.yaml rename to stable/filebot/3.0.10/values.yaml diff --git a/stable/filebot/3.0.9/CHANGELOG.md b/stable/filebot/3.0.9/CHANGELOG.md deleted file mode 100644 index 2caecd8d58d..00000000000 --- a/stable/filebot/3.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [filebot-3.0.9](https://github.com/truecharts/charts/compare/filebot-3.0.8...filebot-3.0.9) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/filebot to v23.01.3 - - - - -## [filebot-3.0.8](https://github.com/truecharts/charts/compare/filebot-3.0.7...filebot-3.0.8) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/filebot to v23.01.2 - - - - -## [filebot-3.0.7](https://github.com/truecharts/charts/compare/filebot-3.0.6...filebot-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [filebot-3.0.6](https://github.com/truecharts/charts/compare/filebot-3.0.5...filebot-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [filebot-3.0.5](https://github.com/truecharts/charts/compare/filebot-3.0.4...filebot-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [filebot-3.0.4](https://github.com/truecharts/charts/compare/filebot-3.0.3...filebot-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [filebot-3.0.3](https://github.com/truecharts/charts/compare/filebot-3.0.2...filebot-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) - - - - -## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) - - - - -## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) - - - - -## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) - - - - -## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) - - - - -## [filebot-3.0.2](https://github.com/truecharts/charts/compare/filebot-3.0.1...filebot-3.0.2) (2022-11-30) - - - - diff --git a/stable/filebot/3.0.9/Chart.yaml b/stable/filebot/3.0.9/Chart.yaml deleted file mode 100644 index 5ba63a9a055..00000000000 --- a/stable/filebot/3.0.9/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "23.01.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: FileBot is the ultimate tool for organizing and renaming your movies, tv shows or anime, and music well as downloading subtitles and artwork. It's smart and just works. -home: https://truecharts.org/charts/stable/filebot -icon: https://truecharts.org/img/hotlink-ok/chart-icons/filebot.png -keywords: - - media - - filebot -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: filebot -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/filebot - - https://github.com/jlesage/docker-filebot - - https://hub.docker.com/r/jlesage/filebot/ -type: application -version: 3.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/filebot/3.0.9/app-changelog.md b/stable/filebot/3.0.9/app-changelog.md deleted file mode 100644 index 8073eb7a231..00000000000 --- a/stable/filebot/3.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [filebot-3.0.9](https://github.com/truecharts/charts/compare/filebot-3.0.8...filebot-3.0.9) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/filebot to v23.01.3 - - \ No newline at end of file diff --git a/stable/filebot/3.0.9/questions.yaml b/stable/filebot/3.0.9/questions.yaml deleted file mode 100644 index d9f61586fac..00000000000 --- a/stable/filebot/3.0.9/questions.yaml +++ /dev/null @@ -1,2310 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - # Portal - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: filebot - group: "App Configuration" - label: "FileBot Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: general - label: "General FileBot Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: OPENSUBTITLES_USERNAME - label: "OPENSUBTITLES_USERNAME" - description: "Username of your OpenSubtitles account. Required to download subtitles." - schema: - type: string - default: "" - - variable: OPENSUBTITLES_PASSWORD - label: "OPENSUBTITLES_PASSWORD" - description: "Password of your OpenSubtitles account. Required to download subtitles." - schema: - type: string - default: "" - - variable: FILEBOT_CUSTOM_OPTIONS - label: "FILEBOT_CUSTOM_OPTIONS" - description: "Custom arguments to pass to FileBot. This applies to the UI only." - schema: - type: string - default: "" - - variable: USE_FILEBOT_BETA - label: "USE_FILEBOT_BETA" - description: "When set to true, FileBot installed under /config/beta (container path) is used." - schema: - type: boolean - default: false - - variable: amc - label: "Automated Media Center Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: AMC_INTERVAL - label: "AMC_INTERVAL" - description: "Time (in seconds) between each invocation of the AMC script." - schema: - type: int - default: 1800 - - variable: AMC_INPUT_STABLE_TIME - label: "AMC_INPUT_STABLE_TIME" - description: "Time (in seconds) during which properties (e.g. size, time, etc) of files in the watch folder need to remain the same before invoking the AMC script." - schema: - type: int - default: 1800 - - variable: AMC_ACTION - label: "AMC_ACTION" - description: "Action performed by the AMC script on files." - schema: - type: string - default: "test" - enum: - - value: "test" - description: "test" - - value: "copy" - description: "copy" - - value: "move" - description: "move" - - value: "symlink" - description: "symlink" - - value: "hardlink" - description: "hardlink" - - value: "keeplink" - description: "keeplink" - - value: "duplicate" - description: "duplicate" - - value: "clone" - description: "clone" - - variable: AMC_CONFLICT - label: "AMC_CONFLICT" - description: "Conflict resolution strategy used by the AMC script" - schema: - type: string - default: "auto" - enum: - - value: "auto" - description: "auto" - - value: "skip" - description: "skip" - - variable: AMC_MATCH_MODE - label: "AMC_MATCH_MODE" - description: "Match mode used by the AMC script" - schema: - type: string - default: "opportunistic" - enum: - - value: "opportunistic" - description: "opportunistic" - - value: "strict" - description: "strict" - - variable: AMC_ARTWORK - label: "AMC_ARTWORK" - description: "When set to true, artwork is fetched and NFO file is generated by the AMC script." - schema: - type: boolean - default: false - - variable: AMC_LANG - label: "AMC_LANG" - description: "Language used by the AMC script to rename files. Two-characters language code or value like English, French." - schema: - type: string - default: "English" - - variable: AMC_MUSIC_FORMAT - label: "AMC_MUSIC_FORMAT" - description: "Define how music files are renamed by the AMC script." - schema: - type: string - default: "{plex}" - - variable: AMC_MOVIE_FORMAT - label: "AMC_MOVIE_FORMAT" - description: "Define how movie files are renamed by the AMC script." - schema: - type: string - default: "{plex}" - - variable: AMC_SERIES_FORMAT - label: "AMC_SERIES_FORMAT" - description: "Define how TV series files are renamed by the AMC script." - schema: - type: string - default: "{plex}" - - variable: AMC_ANIME_FORMAT - label: "AMC_ANIME_FORMAT" - description: "Define how anime files are renamed by the AMC script." - schema: - type: string - default: "{plex}" - - variable: AMC_PROCESS_MUSIC - label: "AMC_PROCESS_MUSIC" - description: "When set to true, music files are processed by the AMC script." - schema: - type: boolean - default: true - - variable: AMC_SUBTITLE_LANG - label: "AMC_SUBTITLE_LANG" - description: "Comma-separated list of subtitle languages to download. Example: en,de,fr." - schema: - type: string - default: "" - - variable: AMC_CUSTOM_OPTIONS - label: "AMC_CUSTOM_OPTIONS" - description: "Custom arguments to pass to the AMC script." - schema: - type: string - default: "" - - variable: AMC_INSTALL_PKGS - label: "AMC_INSTALL_PKGS" - description: "Space-separated list of Alpine Linux packages to install." - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10268 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10269 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage Storage" - description: "Stores the Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: watch - label: "App Watch Storage" - description: "Stores the Application Watch." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: output - label: "App Output Storage" - description: "Stores the Application Output." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/fileflows/4.0.10/CHANGELOG.md b/stable/fileflows/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..ecc17257876 --- /dev/null +++ b/stable/fileflows/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [fileflows-4.0.10](https://github.com/truecharts/charts/compare/fileflows-4.0.9...fileflows-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [fileflows-4.0.9](https://github.com/truecharts/charts/compare/fileflows-4.0.8...fileflows-4.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [fileflows-4.0.8](https://github.com/truecharts/charts/compare/fileflows-4.0.7...fileflows-4.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [fileflows-4.0.7](https://github.com/truecharts/charts/compare/fileflows-4.0.6...fileflows-4.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [fileflows-4.0.6](https://github.com/truecharts/charts/compare/fileflows-4.0.5...fileflows-4.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [fileflows-4.0.5](https://github.com/truecharts/charts/compare/fileflows-4.0.4...fileflows-4.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) + + + + +## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) + + + + +## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) + + + + +## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) + + + + +## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) + + + + +## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) + + + + +## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) + + + + +## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) + + + diff --git a/stable/fileflows/4.0.10/Chart.yaml b/stable/fileflows/4.0.10/Chart.yaml new file mode 100644 index 00000000000..b43f7d5bf8f --- /dev/null +++ b/stable/fileflows/4.0.10/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.0.8" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: An application that lets you automatically process files through a simple rule flow. +home: https://truecharts.org/charts/stable/fileflows +icon: https://truecharts.org/img/hotlink-ok/chart-icons/fileflows.png +keywords: + - fileflows +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fileflows +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/fileflows + - https://hub.docker.com/revenz/fileflows + - https://github.com/revenz/FileFlows +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/flexget/4.0.18/README.md b/stable/fileflows/4.0.10/README.md similarity index 100% rename from stable/flexget/4.0.18/README.md rename to stable/fileflows/4.0.10/README.md diff --git a/stable/fileflows/4.0.10/app-changelog.md b/stable/fileflows/4.0.10/app-changelog.md new file mode 100644 index 00000000000..e42a618bef7 --- /dev/null +++ b/stable/fileflows/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [fileflows-4.0.10](https://github.com/truecharts/charts/compare/fileflows-4.0.9...fileflows-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/fileflows/4.0.10/app-readme.md b/stable/fileflows/4.0.10/app-readme.md new file mode 100644 index 00000000000..416964ace30 --- /dev/null +++ b/stable/fileflows/4.0.10/app-readme.md @@ -0,0 +1,8 @@ +An application that lets you automatically process files through a simple rule flow. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/fileflows](https://truecharts.org/charts/stable/fileflows) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/fluidd/4.0.11/charts/common-11.1.2.tgz b/stable/fileflows/4.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/fluidd/4.0.11/charts/common-11.1.2.tgz rename to stable/fileflows/4.0.10/charts/common-11.1.2.tgz diff --git a/stable/fileflows/4.0.9/ix_values.yaml b/stable/fileflows/4.0.10/ix_values.yaml similarity index 100% rename from stable/fileflows/4.0.9/ix_values.yaml rename to stable/fileflows/4.0.10/ix_values.yaml diff --git a/stable/fileflows/4.0.10/questions.yaml b/stable/fileflows/4.0.10/questions.yaml new file mode 100644 index 00000000000..330a1df42aa --- /dev/null +++ b/stable/fileflows/4.0.10/questions.yaml @@ -0,0 +1,2081 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + # Docker specific env + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10242 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: logs + label: "App Logs Storage" + description: "Stores the Application Logs." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: temp + label: "App Temp Storage" + description: "Stores the Application Temp." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: media + label: "App Media Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/flexget/4.0.18/templates/common.yaml b/stable/fileflows/4.0.10/templates/common.yaml similarity index 100% rename from stable/flexget/4.0.18/templates/common.yaml rename to stable/fileflows/4.0.10/templates/common.yaml diff --git a/stable/fluidd/4.0.11/values.yaml b/stable/fileflows/4.0.10/values.yaml similarity index 100% rename from stable/fluidd/4.0.11/values.yaml rename to stable/fileflows/4.0.10/values.yaml diff --git a/stable/fileflows/4.0.9/CHANGELOG.md b/stable/fileflows/4.0.9/CHANGELOG.md deleted file mode 100644 index c0f8bb968cd..00000000000 --- a/stable/fileflows/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [fileflows-4.0.9](https://github.com/truecharts/charts/compare/fileflows-4.0.8...fileflows-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [fileflows-4.0.8](https://github.com/truecharts/charts/compare/fileflows-4.0.7...fileflows-4.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [fileflows-4.0.7](https://github.com/truecharts/charts/compare/fileflows-4.0.6...fileflows-4.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [fileflows-4.0.6](https://github.com/truecharts/charts/compare/fileflows-4.0.5...fileflows-4.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [fileflows-4.0.5](https://github.com/truecharts/charts/compare/fileflows-4.0.4...fileflows-4.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - - - -## [fileflows-4.0.4](https://github.com/truecharts/charts/compare/fileflows-4.0.3...fileflows-4.0.4) (2022-11-30) - - diff --git a/stable/fileflows/4.0.9/Chart.yaml b/stable/fileflows/4.0.9/Chart.yaml deleted file mode 100644 index 5e43f3d5e23..00000000000 --- a/stable/fileflows/4.0.9/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.0.8" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: An application that lets you automatically process files through a simple rule flow. -home: https://truecharts.org/charts/stable/fileflows -icon: https://truecharts.org/img/hotlink-ok/chart-icons/fileflows.png -keywords: - - fileflows -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: fileflows -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/fileflows - - https://github.com/revenz/FileFlows - - https://hub.docker.com/r/revenz/fileflows -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/fileflows/4.0.9/app-changelog.md b/stable/fileflows/4.0.9/app-changelog.md deleted file mode 100644 index d51688ac239..00000000000 --- a/stable/fileflows/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [fileflows-4.0.9](https://github.com/truecharts/charts/compare/fileflows-4.0.8...fileflows-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/fileflows/4.0.9/app-readme.md b/stable/fileflows/4.0.9/app-readme.md deleted file mode 100644 index 16f8abf9ea5..00000000000 --- a/stable/fileflows/4.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -An application that lets you automatically process files through a simple rule flow. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/fileflows](https://truecharts.org/charts/stable/fileflows) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/fileflows/4.0.9/questions.yaml b/stable/fileflows/4.0.9/questions.yaml deleted file mode 100644 index beaf9f38219..00000000000 --- a/stable/fileflows/4.0.9/questions.yaml +++ /dev/null @@ -1,2040 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - # Docker specific env - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10242 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: logs - label: "App Logs Storage" - description: "Stores the Application Logs." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: temp - label: "App Temp Storage" - description: "Stores the Application Temp." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: media - label: "App Media Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/filerun/6.0.17/CHANGELOG.md b/stable/filerun/6.0.17/CHANGELOG.md deleted file mode 100644 index 152b5f8314e..00000000000 --- a/stable/filerun/6.0.17/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [filerun-6.0.17](https://github.com/truecharts/charts/compare/filerun-6.0.16...filerun-6.0.17) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [filerun-6.0.16](https://github.com/truecharts/charts/compare/filerun-6.0.15...filerun-6.0.16) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [filerun-6.0.15](https://github.com/truecharts/charts/compare/filerun-6.0.14...filerun-6.0.15) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [filerun-6.0.14](https://github.com/truecharts/charts/compare/filerun-6.0.13...filerun-6.0.14) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [filerun-6.0.13](https://github.com/truecharts/charts/compare/filerun-6.0.12...filerun-6.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [filerun-6.0.12](https://github.com/truecharts/charts/compare/filerun-6.0.11...filerun-6.0.12) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [filerun-6.0.11](https://github.com/truecharts/charts/compare/filerun-6.0.10...filerun-6.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [filerun-6.0.10](https://github.com/truecharts/charts/compare/filerun-6.0.9...filerun-6.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [filerun-6.0.9](https://github.com/truecharts/charts/compare/filerun-6.0.8...filerun-6.0.9) (2022-12-18) - -### Chore - -- update helm chart mariadb to v5.0.15 ([#5492](https://github.com/truecharts/charts/issues/5492)) - - - - -## [filerun-6.0.8](https://github.com/truecharts/charts/compare/filerun-6.0.7...filerun-6.0.8) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [filerun-6.0.7](https://github.com/truecharts/charts/compare/filerun-6.0.6...filerun-6.0.7) (2022-12-05) - -### Chore diff --git a/stable/filerun/6.0.17/Chart.yaml b/stable/filerun/6.0.17/Chart.yaml deleted file mode 100644 index 10dc686c16c..00000000000 --- a/stable/filerun/6.0.17/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: mariadb.enabled - name: mariadb - repository: https://charts.truecharts.org/ - version: 5.0.25 -description: FileRun is a full featured web based file manager with an easy to use user interface -home: https://truecharts.org/charts/stable/filerun -icon: https://truecharts.org/img/hotlink-ok/chart-icons/filerun.png -keywords: - - filerun - - file -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: filerun -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/filerun - - https://hub.docker.com/r/filerun/filerun - - https://github.com/filerun/docker -version: 6.0.17 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/filerun/6.0.17/app-changelog.md b/stable/filerun/6.0.17/app-changelog.md deleted file mode 100644 index 2a7176612d0..00000000000 --- a/stable/filerun/6.0.17/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [filerun-6.0.17](https://github.com/truecharts/charts/compare/filerun-6.0.16...filerun-6.0.17) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/filerun/6.0.18/CHANGELOG.md b/stable/filerun/6.0.18/CHANGELOG.md new file mode 100644 index 00000000000..0888621d50a --- /dev/null +++ b/stable/filerun/6.0.18/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [filerun-6.0.18](https://github.com/truecharts/charts/compare/filerun-6.0.17...filerun-6.0.18) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [filerun-6.0.17](https://github.com/truecharts/charts/compare/filerun-6.0.16...filerun-6.0.17) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [filerun-6.0.16](https://github.com/truecharts/charts/compare/filerun-6.0.15...filerun-6.0.16) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [filerun-6.0.15](https://github.com/truecharts/charts/compare/filerun-6.0.14...filerun-6.0.15) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [filerun-6.0.14](https://github.com/truecharts/charts/compare/filerun-6.0.13...filerun-6.0.14) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [filerun-6.0.13](https://github.com/truecharts/charts/compare/filerun-6.0.12...filerun-6.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [filerun-6.0.12](https://github.com/truecharts/charts/compare/filerun-6.0.11...filerun-6.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [filerun-6.0.11](https://github.com/truecharts/charts/compare/filerun-6.0.10...filerun-6.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [filerun-6.0.10](https://github.com/truecharts/charts/compare/filerun-6.0.9...filerun-6.0.10) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [filerun-6.0.9](https://github.com/truecharts/charts/compare/filerun-6.0.8...filerun-6.0.9) (2022-12-18) + +### Chore + +- update helm chart mariadb to v5.0.15 ([#5492](https://github.com/truecharts/charts/issues/5492)) + + + + +## [filerun-6.0.8](https://github.com/truecharts/charts/compare/filerun-6.0.7...filerun-6.0.8) (2022-12-13) + +### Chore diff --git a/stable/filerun/6.0.18/Chart.yaml b/stable/filerun/6.0.18/Chart.yaml new file mode 100644 index 00000000000..4141cdb5a40 --- /dev/null +++ b/stable/filerun/6.0.18/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 +description: FileRun is a full featured web based file manager with an easy to use user interface +home: https://truecharts.org/charts/stable/filerun +icon: https://truecharts.org/img/hotlink-ok/chart-icons/filerun.png +keywords: + - filerun + - file +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: filerun +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/filerun + - https://hub.docker.com/filerun/filerun + - https://github.com/filerun/docker +version: 6.0.18 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/fluidd/4.0.11/README.md b/stable/filerun/6.0.18/README.md similarity index 100% rename from stable/fluidd/4.0.11/README.md rename to stable/filerun/6.0.18/README.md diff --git a/stable/filerun/6.0.18/app-changelog.md b/stable/filerun/6.0.18/app-changelog.md new file mode 100644 index 00000000000..6a2405e7e2f --- /dev/null +++ b/stable/filerun/6.0.18/app-changelog.md @@ -0,0 +1,9 @@ + + +## [filerun-6.0.18](https://github.com/truecharts/charts/compare/filerun-6.0.17...filerun-6.0.18) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/filerun/6.0.17/app-readme.md b/stable/filerun/6.0.18/app-readme.md similarity index 100% rename from stable/filerun/6.0.17/app-readme.md rename to stable/filerun/6.0.18/app-readme.md diff --git a/stable/gonic/8.0.9/charts/common-11.1.2.tgz b/stable/filerun/6.0.18/charts/common-11.1.2.tgz similarity index 100% rename from stable/gonic/8.0.9/charts/common-11.1.2.tgz rename to stable/filerun/6.0.18/charts/common-11.1.2.tgz diff --git a/stable/koel/6.0.22/charts/mariadb-5.0.25.tgz b/stable/filerun/6.0.18/charts/mariadb-5.0.25.tgz similarity index 100% rename from stable/koel/6.0.22/charts/mariadb-5.0.25.tgz rename to stable/filerun/6.0.18/charts/mariadb-5.0.25.tgz diff --git a/stable/filerun/6.0.17/ix_values.yaml b/stable/filerun/6.0.18/ix_values.yaml similarity index 100% rename from stable/filerun/6.0.17/ix_values.yaml rename to stable/filerun/6.0.18/ix_values.yaml diff --git a/stable/filerun/6.0.17/questions.yaml b/stable/filerun/6.0.18/questions.yaml similarity index 100% rename from stable/filerun/6.0.17/questions.yaml rename to stable/filerun/6.0.18/questions.yaml diff --git a/stable/fluidd/4.0.11/templates/common.yaml b/stable/filerun/6.0.18/templates/common.yaml similarity index 100% rename from stable/fluidd/4.0.11/templates/common.yaml rename to stable/filerun/6.0.18/templates/common.yaml diff --git a/stable/gonic/8.0.9/values.yaml b/stable/filerun/6.0.18/values.yaml similarity index 100% rename from stable/gonic/8.0.9/values.yaml rename to stable/filerun/6.0.18/values.yaml diff --git a/stable/flashpaper/3.0.4/CHANGELOG.md b/stable/flashpaper/3.0.4/CHANGELOG.md deleted file mode 100644 index ddf2636829a..00000000000 --- a/stable/flashpaper/3.0.4/CHANGELOG.md +++ /dev/null @@ -1,44 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [flashpaper-3.0.4](https://github.com/truecharts/charts/compare/flashpaper-3.0.3...flashpaper-3.0.4) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [flashpaper-3.0.3](https://github.com/truecharts/charts/compare/flashpaper-3.0.2...flashpaper-3.0.3) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [flashpaper-3.0.2](https://github.com/truecharts/charts/compare/flashpaper-3.0.1...flashpaper-3.0.2) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [flashpaper-3.0.1](https://github.com/truecharts/charts/compare/flashpaper-3.0.0...flashpaper-3.0.1) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [flashpaper-3.0.0](https://github.com/truecharts/charts/compare/flashpaper-2.0.3...flashpaper-3.0.0) (2022-12-18) - diff --git a/stable/flashpaper/3.0.4/Chart.yaml b/stable/flashpaper/3.0.4/Chart.yaml deleted file mode 100644 index 5f1ac5da6dc..00000000000 --- a/stable/flashpaper/3.0.4/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: One-time encrypted password/secret sharing -home: https://truecharts.org/charts/stable/flashpaper -icon: https://truecharts.org/img/hotlink-ok/chart-icons/flashpaper.png -keywords: - - flashpaper - - Cloud - - Productivity - - Security - - Tools-Utilities - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: flashpaper -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/flashpaper - - https://github.com/AndrewPaglusch/FlashPaper - - https://hub.docker.com/r/andrewpaglusch/flashpaper -type: application -version: 3.0.4 -annotations: - truecharts.org/catagories: | - - Cloud - - Productivity - - Security - - Tools-Utilities - - Network-Web - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/flashpaper/3.0.4/app-changelog.md b/stable/flashpaper/3.0.4/app-changelog.md deleted file mode 100644 index 9bfcc21944a..00000000000 --- a/stable/flashpaper/3.0.4/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [flashpaper-3.0.4](https://github.com/truecharts/charts/compare/flashpaper-3.0.3...flashpaper-3.0.4) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/flashpaper/3.0.4/app-readme.md b/stable/flashpaper/3.0.4/app-readme.md deleted file mode 100644 index 0221d0168fe..00000000000 --- a/stable/flashpaper/3.0.4/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -One-time encrypted password/secret sharing - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/flashpaper](https://truecharts.org/charts/stable/flashpaper) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/flashpaper/3.0.4/questions.yaml b/stable/flashpaper/3.0.4/questions.yaml deleted file mode 100644 index b92ad151b2d..00000000000 --- a/stable/flashpaper/3.0.4/questions.yaml +++ /dev/null @@ -1,1916 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: SITE_TITLE - label: Site Title - schema: - type: string - default: "FlashPaper - Self-Destructing Message" - - variable: RETURN_FULL_URL - label: Return Full URL - schema: - type: boolean - default: true - - variable: MAX_SECRET_LENGTH - label: max Secret Length - schema: - type: int - default: 3000 - - variable: ANNOUNCEMENT - label: Announcement - schema: - type: string - default: "" - - variable: MESSAGES_ERROR_SECRET_TOO_LONG - label: Messages Error Secret Too Long - schema: - type: string - default: Input length Too long - - variable: MESSAGES_SUBMIT_SECRET_HEADER - label: Messages Submit Secret Header - schema: - type: string - default: Create A Self-Destructing Message - - variable: MESSAGES_SUBMIT_SECRET_SUBHEADER - label: MESSAGES_SUBMIT_SECRET_SUBHEADER - schema: - type: string - default: "" - - variable: MESSAGES_SUBMIT_SECRET_BUTTON - label: Messages Submit Secret Button - schema: - type: string - default: Encrypt Message - - variable: MESSAGES_VIEW_CODE_HEADER - label: Messages View Code Header - schema: - type: string - default: Self-Destructing URL - - variable: MESSAGES_VIEW_CODE_SUBHEADER - label: Messages View Code Subheader - schema: - type: string - default: Share this URL via email, chat, or another messaging service. It will self-destruct after being viewed once. - - variable: MESSAGES_CONFIRM_VIEW_SECRET_HEADER - label: Messages Confirm View Secret Header - schema: - type: string - default: View this secret? - - variable: MESSAGES_CONFIRM_VIEW_SECRET_BUTTON - label: Messages Confirm View Secret Button - schema: - type: string - default: View Secret - - variable: MESSAGES_VIEW_SECRET_HEADER - label: Messages View Secret Header - schema: - type: string - default: This message has been destroyed - - variable: PRUNE_ENABLED - label: Prune Enabled - schema: - type: boolean - default: true - - variable: PRUNE_MIN_DAYS - label: Prune Min Days - schema: - type: int - default: 365 - - variable: PRUNE_MAX_DAYS - label: Prune Max Days - schema: - type: int - default: 730 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 8544 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: App Data Storage - description: Stores the Application Data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/flashpaper/3.0.5/CHANGELOG.md b/stable/flashpaper/3.0.5/CHANGELOG.md new file mode 100644 index 00000000000..da1810b0a77 --- /dev/null +++ b/stable/flashpaper/3.0.5/CHANGELOG.md @@ -0,0 +1,53 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [flashpaper-3.0.5](https://github.com/truecharts/charts/compare/flashpaper-3.0.4...flashpaper-3.0.5) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [flashpaper-3.0.4](https://github.com/truecharts/charts/compare/flashpaper-3.0.3...flashpaper-3.0.4) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [flashpaper-3.0.3](https://github.com/truecharts/charts/compare/flashpaper-3.0.2...flashpaper-3.0.3) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [flashpaper-3.0.2](https://github.com/truecharts/charts/compare/flashpaper-3.0.1...flashpaper-3.0.2) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [flashpaper-3.0.1](https://github.com/truecharts/charts/compare/flashpaper-3.0.0...flashpaper-3.0.1) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [flashpaper-3.0.0](https://github.com/truecharts/charts/compare/flashpaper-2.0.3...flashpaper-3.0.0) (2022-12-18) + diff --git a/stable/flashpaper/3.0.5/Chart.yaml b/stable/flashpaper/3.0.5/Chart.yaml new file mode 100644 index 00000000000..31ff7afabcc --- /dev/null +++ b/stable/flashpaper/3.0.5/Chart.yaml @@ -0,0 +1,38 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: One-time encrypted password/secret sharing +home: https://truecharts.org/charts/stable/flashpaper +icon: https://truecharts.org/img/hotlink-ok/chart-icons/flashpaper.png +keywords: + - flashpaper + - Cloud + - Productivity + - Security + - Tools-Utilities + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: flashpaper +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/flashpaper + - https://hub.docker.com/andrewpaglusch/flashpaper + - https://github.com/AndrewPaglusch/FlashPaper +type: application +version: 3.0.5 +annotations: + truecharts.org/catagories: | + - Cloud + - Productivity + - Security + - Tools-Utilities + - Network-Web + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/gonic/8.0.9/README.md b/stable/flashpaper/3.0.5/README.md similarity index 100% rename from stable/gonic/8.0.9/README.md rename to stable/flashpaper/3.0.5/README.md diff --git a/stable/flashpaper/3.0.5/app-changelog.md b/stable/flashpaper/3.0.5/app-changelog.md new file mode 100644 index 00000000000..974a25afdf6 --- /dev/null +++ b/stable/flashpaper/3.0.5/app-changelog.md @@ -0,0 +1,9 @@ + + +## [flashpaper-3.0.5](https://github.com/truecharts/charts/compare/flashpaper-3.0.4...flashpaper-3.0.5) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/flashpaper/3.0.5/app-readme.md b/stable/flashpaper/3.0.5/app-readme.md new file mode 100644 index 00000000000..4713b03ab58 --- /dev/null +++ b/stable/flashpaper/3.0.5/app-readme.md @@ -0,0 +1,8 @@ +One-time encrypted password/secret sharing + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/flashpaper](https://truecharts.org/charts/stable/flashpaper) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/grist/7.0.22/charts/common-11.1.2.tgz b/stable/flashpaper/3.0.5/charts/common-11.1.2.tgz similarity index 100% rename from stable/grist/7.0.22/charts/common-11.1.2.tgz rename to stable/flashpaper/3.0.5/charts/common-11.1.2.tgz diff --git a/stable/flashpaper/3.0.4/ix_values.yaml b/stable/flashpaper/3.0.5/ix_values.yaml similarity index 100% rename from stable/flashpaper/3.0.4/ix_values.yaml rename to stable/flashpaper/3.0.5/ix_values.yaml diff --git a/stable/flashpaper/3.0.5/questions.yaml b/stable/flashpaper/3.0.5/questions.yaml new file mode 100644 index 00000000000..190889107b0 --- /dev/null +++ b/stable/flashpaper/3.0.5/questions.yaml @@ -0,0 +1,1957 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: SITE_TITLE + label: Site Title + schema: + type: string + default: "FlashPaper - Self-Destructing Message" + - variable: RETURN_FULL_URL + label: Return Full URL + schema: + type: boolean + default: true + - variable: MAX_SECRET_LENGTH + label: max Secret Length + schema: + type: int + default: 3000 + - variable: ANNOUNCEMENT + label: Announcement + schema: + type: string + default: "" + - variable: MESSAGES_ERROR_SECRET_TOO_LONG + label: Messages Error Secret Too Long + schema: + type: string + default: Input length Too long + - variable: MESSAGES_SUBMIT_SECRET_HEADER + label: Messages Submit Secret Header + schema: + type: string + default: Create A Self-Destructing Message + - variable: MESSAGES_SUBMIT_SECRET_SUBHEADER + label: MESSAGES_SUBMIT_SECRET_SUBHEADER + schema: + type: string + default: "" + - variable: MESSAGES_SUBMIT_SECRET_BUTTON + label: Messages Submit Secret Button + schema: + type: string + default: Encrypt Message + - variable: MESSAGES_VIEW_CODE_HEADER + label: Messages View Code Header + schema: + type: string + default: Self-Destructing URL + - variable: MESSAGES_VIEW_CODE_SUBHEADER + label: Messages View Code Subheader + schema: + type: string + default: Share this URL via email, chat, or another messaging service. It will self-destruct after being viewed once. + - variable: MESSAGES_CONFIRM_VIEW_SECRET_HEADER + label: Messages Confirm View Secret Header + schema: + type: string + default: View this secret? + - variable: MESSAGES_CONFIRM_VIEW_SECRET_BUTTON + label: Messages Confirm View Secret Button + schema: + type: string + default: View Secret + - variable: MESSAGES_VIEW_SECRET_HEADER + label: Messages View Secret Header + schema: + type: string + default: This message has been destroyed + - variable: PRUNE_ENABLED + label: Prune Enabled + schema: + type: boolean + default: true + - variable: PRUNE_MIN_DAYS + label: Prune Min Days + schema: + type: int + default: 365 + - variable: PRUNE_MAX_DAYS + label: Prune Max Days + schema: + type: int + default: 730 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 8544 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: App Data Storage + description: Stores the Application Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/flashpaper/3.0.4/templates/common.yaml b/stable/flashpaper/3.0.5/templates/common.yaml similarity index 100% rename from stable/flashpaper/3.0.4/templates/common.yaml rename to stable/flashpaper/3.0.5/templates/common.yaml diff --git a/stable/grist/7.0.22/values.yaml b/stable/flashpaper/3.0.5/values.yaml similarity index 100% rename from stable/grist/7.0.22/values.yaml rename to stable/flashpaper/3.0.5/values.yaml diff --git a/stable/flexget/4.0.18/CHANGELOG.md b/stable/flexget/4.0.18/CHANGELOG.md deleted file mode 100644 index ecdfbe26987..00000000000 --- a/stable/flexget/4.0.18/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [flexget-4.0.18](https://github.com/truecharts/charts/compare/flexget-4.0.17...flexget-4.0.18) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/flexget to v3.5.21 - - - - -## [flexget-4.0.17](https://github.com/truecharts/charts/compare/flexget-4.0.16...flexget-4.0.17) (2023-01-21) - -### Chore - -- update container image tccr.io/truecharts/flexget to v3.5.18 - - - - -## [flexget-4.0.16](https://github.com/truecharts/charts/compare/flexget-4.0.15...flexget-4.0.16) (2023-01-16) - -### Chore - -- update container image tccr.io/truecharts/flexget to 3.5.17 - - - - -## [flexget-4.0.15](https://github.com/truecharts/charts/compare/flexget-4.0.14...flexget-4.0.15) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/flexget to v3.5.17 - - - - -## [flexget-4.0.14](https://github.com/truecharts/charts/compare/flexget-4.0.13...flexget-4.0.14) (2023-01-01) - -### Chore - -- update container image tccr.io/truecharts/flexget to v3.5.15 - - - - -## [flexget-4.0.13](https://github.com/truecharts/charts/compare/flexget-4.0.12...flexget-4.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [flexget-4.0.12](https://github.com/truecharts/charts/compare/flexget-4.0.11...flexget-4.0.12) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [flexget-4.0.11](https://github.com/truecharts/charts/compare/flexget-4.0.10...flexget-4.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [flexget-4.0.10](https://github.com/truecharts/charts/compare/flexget-4.0.9...flexget-4.0.10) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/flexget to v3.5.13 - - - - -## [flexget-4.0.9](https://github.com/truecharts/charts/compare/flexget-4.0.8...flexget-4.0.9) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [flexget-4.0.8](https://github.com/truecharts/charts/compare/flexget-4.0.7...flexget-4.0.8) (2022-12-18) - -### Chore diff --git a/stable/flexget/4.0.18/Chart.yaml b/stable/flexget/4.0.18/Chart.yaml deleted file mode 100644 index c004503e99c..00000000000 --- a/stable/flexget/4.0.18/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "3.5.21" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: FlexGet is a multipurpose automation tool for all of your media -home: https://truecharts.org/charts/stable/flexget -icon: https://truecharts.org/img/hotlink-ok/chart-icons/flexget.png -keywords: - - flexget - - automation -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: flexget -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/flexget - - https://hub.docker.com/r/wiserain/flexget - - https://github.com/wiserain/docker-flexget -type: application -version: 4.0.18 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/flexget/4.0.18/app-changelog.md b/stable/flexget/4.0.18/app-changelog.md deleted file mode 100644 index 900b1d947a3..00000000000 --- a/stable/flexget/4.0.18/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [flexget-4.0.18](https://github.com/truecharts/charts/compare/flexget-4.0.17...flexget-4.0.18) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/flexget to v3.5.21 - - \ No newline at end of file diff --git a/stable/flexget/4.0.19/CHANGELOG.md b/stable/flexget/4.0.19/CHANGELOG.md new file mode 100644 index 00000000000..d3aaf2181e4 --- /dev/null +++ b/stable/flexget/4.0.19/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [flexget-4.0.19](https://github.com/truecharts/charts/compare/flexget-4.0.18...flexget-4.0.19) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [flexget-4.0.18](https://github.com/truecharts/charts/compare/flexget-4.0.17...flexget-4.0.18) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/flexget to v3.5.21 + + + + +## [flexget-4.0.17](https://github.com/truecharts/charts/compare/flexget-4.0.16...flexget-4.0.17) (2023-01-21) + +### Chore + +- update container image tccr.io/truecharts/flexget to v3.5.18 + + + + +## [flexget-4.0.16](https://github.com/truecharts/charts/compare/flexget-4.0.15...flexget-4.0.16) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/flexget to 3.5.17 + + + + +## [flexget-4.0.15](https://github.com/truecharts/charts/compare/flexget-4.0.14...flexget-4.0.15) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/flexget to v3.5.17 + + + + +## [flexget-4.0.14](https://github.com/truecharts/charts/compare/flexget-4.0.13...flexget-4.0.14) (2023-01-01) + +### Chore + +- update container image tccr.io/truecharts/flexget to v3.5.15 + + + + +## [flexget-4.0.13](https://github.com/truecharts/charts/compare/flexget-4.0.12...flexget-4.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [flexget-4.0.12](https://github.com/truecharts/charts/compare/flexget-4.0.11...flexget-4.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [flexget-4.0.11](https://github.com/truecharts/charts/compare/flexget-4.0.10...flexget-4.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [flexget-4.0.10](https://github.com/truecharts/charts/compare/flexget-4.0.9...flexget-4.0.10) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/flexget to v3.5.13 + + + + +## [flexget-4.0.9](https://github.com/truecharts/charts/compare/flexget-4.0.8...flexget-4.0.9) (2022-12-19) + +### Chore diff --git a/stable/flexget/4.0.19/Chart.yaml b/stable/flexget/4.0.19/Chart.yaml new file mode 100644 index 00000000000..95ec6bd9d0f --- /dev/null +++ b/stable/flexget/4.0.19/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "3.5.21" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: FlexGet is a multipurpose automation tool for all of your media +home: https://truecharts.org/charts/stable/flexget +icon: https://truecharts.org/img/hotlink-ok/chart-icons/flexget.png +keywords: + - flexget + - automation +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: flexget +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/flexget + - https://hub.docker.com/wiserain/flexget + - https://github.com/wiserain/docker-flexget +type: application +version: 4.0.19 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/grist/7.0.22/README.md b/stable/flexget/4.0.19/README.md similarity index 100% rename from stable/grist/7.0.22/README.md rename to stable/flexget/4.0.19/README.md diff --git a/stable/flexget/4.0.19/app-changelog.md b/stable/flexget/4.0.19/app-changelog.md new file mode 100644 index 00000000000..ba4e4d4b830 --- /dev/null +++ b/stable/flexget/4.0.19/app-changelog.md @@ -0,0 +1,9 @@ + + +## [flexget-4.0.19](https://github.com/truecharts/charts/compare/flexget-4.0.18...flexget-4.0.19) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/flexget/4.0.18/app-readme.md b/stable/flexget/4.0.19/app-readme.md similarity index 100% rename from stable/flexget/4.0.18/app-readme.md rename to stable/flexget/4.0.19/app-readme.md diff --git a/stable/guacamole-client/7.0.19/charts/common-11.1.2.tgz b/stable/flexget/4.0.19/charts/common-11.1.2.tgz similarity index 100% rename from stable/guacamole-client/7.0.19/charts/common-11.1.2.tgz rename to stable/flexget/4.0.19/charts/common-11.1.2.tgz diff --git a/stable/flexget/4.0.18/ix_values.yaml b/stable/flexget/4.0.19/ix_values.yaml similarity index 100% rename from stable/flexget/4.0.18/ix_values.yaml rename to stable/flexget/4.0.19/ix_values.yaml diff --git a/stable/flexget/4.0.18/questions.yaml b/stable/flexget/4.0.19/questions.yaml similarity index 100% rename from stable/flexget/4.0.18/questions.yaml rename to stable/flexget/4.0.19/questions.yaml diff --git a/stable/gonic/8.0.9/templates/common.yaml b/stable/flexget/4.0.19/templates/common.yaml similarity index 100% rename from stable/gonic/8.0.9/templates/common.yaml rename to stable/flexget/4.0.19/templates/common.yaml diff --git a/stable/guacamole-client/7.0.19/values.yaml b/stable/flexget/4.0.19/values.yaml similarity index 100% rename from stable/guacamole-client/7.0.19/values.yaml rename to stable/flexget/4.0.19/values.yaml diff --git a/stable/fluidd/4.0.11/CHANGELOG.md b/stable/fluidd/4.0.11/CHANGELOG.md deleted file mode 100644 index cdb03ef1764..00000000000 --- a/stable/fluidd/4.0.11/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [fluidd-4.0.11](https://github.com/truecharts/charts/compare/fluidd-4.0.10...fluidd-4.0.11) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/fluidd to v1.23.0 - - - - -## [fluidd-4.0.10](https://github.com/truecharts/charts/compare/fluidd-4.0.9...fluidd-4.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [fluidd-4.0.9](https://github.com/truecharts/charts/compare/fluidd-4.0.8...fluidd-4.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [fluidd-4.0.8](https://github.com/truecharts/charts/compare/fluidd-4.0.7...fluidd-4.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [fluidd-4.0.7](https://github.com/truecharts/charts/compare/fluidd-4.0.6...fluidd-4.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [fluidd-4.0.6](https://github.com/truecharts/charts/compare/fluidd-4.0.5...fluidd-4.0.6) (2022-12-19) - -### Chore - -- update container image tccr.io/truecharts/fluidd to v1.22.2 - - - - -## [fluidd-4.0.5](https://github.com/truecharts/charts/compare/fluidd-4.0.4...fluidd-4.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [fluidd-4.0.4](https://github.com/truecharts/charts/compare/fluidd-4.0.3...fluidd-4.0.4) (2022-12-10) - - - - -## [fluidd-4.0.3](https://github.com/truecharts/charts/compare/fluidd-4.0.2...fluidd-4.0.3) (2022-12-05) - - - - -## [fluidd-4.0.2](https://github.com/truecharts/charts/compare/fluidd-4.0.1...fluidd-4.0.2) (2022-11-30) - - - - -## [fluidd-4.0.2](https://github.com/truecharts/charts/compare/fluidd-4.0.1...fluidd-4.0.2) (2022-11-30) - - - - -## [fluidd-4.0.2](https://github.com/truecharts/charts/compare/fluidd-4.0.1...fluidd-4.0.2) (2022-11-30) - - - - -## [fluidd-4.0.2](https://github.com/truecharts/charts/compare/fluidd-4.0.1...fluidd-4.0.2) (2022-11-30) - - - - diff --git a/stable/fluidd/4.0.11/Chart.yaml b/stable/fluidd/4.0.11/Chart.yaml deleted file mode 100644 index 2232e6d04fe..00000000000 --- a/stable/fluidd/4.0.11/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.23.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Fluidd is a free and open-source Klipper web interface for managing your 3d printer. -home: https://truecharts.org/charts/stable/fluidd -icon: https://truecharts.org/img/hotlink-ok/chart-icons/fluidd.png -keywords: - - fluidd -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: fluidd -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/fluidd - - https://github.com/fluidd-core/fluidd - - https://hub.docker.com/r/cadriel/fluidd -version: 4.0.11 -annotations: - truecharts.org/catagories: | - - utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/fluidd/4.0.11/app-changelog.md b/stable/fluidd/4.0.11/app-changelog.md deleted file mode 100644 index 06105c2979b..00000000000 --- a/stable/fluidd/4.0.11/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [fluidd-4.0.11](https://github.com/truecharts/charts/compare/fluidd-4.0.10...fluidd-4.0.11) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/fluidd to v1.23.0 - - \ No newline at end of file diff --git a/stable/fluidd/4.0.11/app-readme.md b/stable/fluidd/4.0.11/app-readme.md deleted file mode 100644 index 1bd1aa0a423..00000000000 --- a/stable/fluidd/4.0.11/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Fluidd is a free and open-source Klipper web interface for managing your 3d printer. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/fluidd](https://truecharts.org/charts/stable/fluidd) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/fluidd/4.0.11/questions.yaml b/stable/fluidd/4.0.11/questions.yaml deleted file mode 100644 index ec33855bc6c..00000000000 --- a/stable/fluidd/4.0.11/questions.yaml +++ /dev/null @@ -1,1751 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10224 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/fluidd/4.0.12/CHANGELOG.md b/stable/fluidd/4.0.12/CHANGELOG.md new file mode 100644 index 00000000000..371dd7fe78a --- /dev/null +++ b/stable/fluidd/4.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [fluidd-4.0.12](https://github.com/truecharts/charts/compare/fluidd-4.0.11...fluidd-4.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [fluidd-4.0.11](https://github.com/truecharts/charts/compare/fluidd-4.0.10...fluidd-4.0.11) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/fluidd to v1.23.0 + + + + +## [fluidd-4.0.10](https://github.com/truecharts/charts/compare/fluidd-4.0.9...fluidd-4.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [fluidd-4.0.9](https://github.com/truecharts/charts/compare/fluidd-4.0.8...fluidd-4.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [fluidd-4.0.8](https://github.com/truecharts/charts/compare/fluidd-4.0.7...fluidd-4.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [fluidd-4.0.7](https://github.com/truecharts/charts/compare/fluidd-4.0.6...fluidd-4.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [fluidd-4.0.6](https://github.com/truecharts/charts/compare/fluidd-4.0.5...fluidd-4.0.6) (2022-12-19) + +### Chore + +- update container image tccr.io/truecharts/fluidd to v1.22.2 + + + + +## [fluidd-4.0.5](https://github.com/truecharts/charts/compare/fluidd-4.0.4...fluidd-4.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [fluidd-4.0.4](https://github.com/truecharts/charts/compare/fluidd-4.0.3...fluidd-4.0.4) (2022-12-10) + + + + +## [fluidd-4.0.3](https://github.com/truecharts/charts/compare/fluidd-4.0.2...fluidd-4.0.3) (2022-12-05) + + + + +## [fluidd-4.0.2](https://github.com/truecharts/charts/compare/fluidd-4.0.1...fluidd-4.0.2) (2022-11-30) + + + + +## [fluidd-4.0.2](https://github.com/truecharts/charts/compare/fluidd-4.0.1...fluidd-4.0.2) (2022-11-30) + + + + +## [fluidd-4.0.2](https://github.com/truecharts/charts/compare/fluidd-4.0.1...fluidd-4.0.2) (2022-11-30) diff --git a/stable/fluidd/4.0.12/Chart.yaml b/stable/fluidd/4.0.12/Chart.yaml new file mode 100644 index 00000000000..ea1b6c851a9 --- /dev/null +++ b/stable/fluidd/4.0.12/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.23.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Fluidd is a free and open-source Klipper web interface for managing your 3d printer. +home: https://truecharts.org/charts/stable/fluidd +icon: https://truecharts.org/img/hotlink-ok/chart-icons/fluidd.png +keywords: + - fluidd +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: fluidd +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/fluidd + - https://hub.docker.com/cadriel/fluidd + - https://github.com/fluidd-core/fluidd +version: 4.0.12 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/guacamole-client/7.0.19/README.md b/stable/fluidd/4.0.12/README.md similarity index 100% rename from stable/guacamole-client/7.0.19/README.md rename to stable/fluidd/4.0.12/README.md diff --git a/stable/fluidd/4.0.12/app-changelog.md b/stable/fluidd/4.0.12/app-changelog.md new file mode 100644 index 00000000000..3cd185cd8f6 --- /dev/null +++ b/stable/fluidd/4.0.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [fluidd-4.0.12](https://github.com/truecharts/charts/compare/fluidd-4.0.11...fluidd-4.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/fluidd/4.0.12/app-readme.md b/stable/fluidd/4.0.12/app-readme.md new file mode 100644 index 00000000000..a7c85d6fd45 --- /dev/null +++ b/stable/fluidd/4.0.12/app-readme.md @@ -0,0 +1,8 @@ +Fluidd is a free and open-source Klipper web interface for managing your 3d printer. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/fluidd](https://truecharts.org/charts/stable/fluidd) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/hammond/4.0.7/charts/common-11.1.2.tgz b/stable/fluidd/4.0.12/charts/common-11.1.2.tgz similarity index 100% rename from stable/hammond/4.0.7/charts/common-11.1.2.tgz rename to stable/fluidd/4.0.12/charts/common-11.1.2.tgz diff --git a/stable/fluidd/4.0.11/ix_values.yaml b/stable/fluidd/4.0.12/ix_values.yaml similarity index 100% rename from stable/fluidd/4.0.11/ix_values.yaml rename to stable/fluidd/4.0.12/ix_values.yaml diff --git a/stable/fluidd/4.0.12/questions.yaml b/stable/fluidd/4.0.12/questions.yaml new file mode 100644 index 00000000000..8bd8dad0fa5 --- /dev/null +++ b/stable/fluidd/4.0.12/questions.yaml @@ -0,0 +1,1792 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10224 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/impostor-server/3.0.12/templates/common.yaml b/stable/fluidd/4.0.12/templates/common.yaml similarity index 100% rename from stable/impostor-server/3.0.12/templates/common.yaml rename to stable/fluidd/4.0.12/templates/common.yaml diff --git a/stable/hammond/4.0.7/values.yaml b/stable/fluidd/4.0.12/values.yaml similarity index 100% rename from stable/hammond/4.0.7/values.yaml rename to stable/fluidd/4.0.12/values.yaml diff --git a/stable/focalboard/12.0.22/CHANGELOG.md b/stable/focalboard/12.0.22/CHANGELOG.md new file mode 100644 index 00000000000..41ab495abf3 --- /dev/null +++ b/stable/focalboard/12.0.22/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [focalboard-12.0.22](https://github.com/truecharts/charts/compare/focalboard-12.0.21...focalboard-12.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [focalboard-12.0.21](https://github.com/truecharts/charts/compare/focalboard-12.0.20...focalboard-12.0.21) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [focalboard-12.0.20](https://github.com/truecharts/charts/compare/focalboard-12.0.19...focalboard-12.0.20) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [focalboard-12.0.19](https://github.com/truecharts/charts/compare/focalboard-12.0.18...focalboard-12.0.19) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [focalboard-12.0.18](https://github.com/truecharts/charts/compare/focalboard-12.0.17...focalboard-12.0.18) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [focalboard-12.0.17](https://github.com/truecharts/charts/compare/focalboard-12.0.16...focalboard-12.0.17) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [focalboard-12.0.16](https://github.com/truecharts/charts/compare/focalboard-12.0.15...focalboard-12.0.16) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [focalboard-12.0.15](https://github.com/truecharts/charts/compare/focalboard-12.0.14...focalboard-12.0.15) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [focalboard-12.0.14](https://github.com/truecharts/charts/compare/focalboard-12.0.13...focalboard-12.0.14) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [focalboard-12.0.13](https://github.com/truecharts/charts/compare/focalboard-12.0.12...focalboard-12.0.13) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [focalboard-12.0.12](https://github.com/truecharts/charts/compare/focalboard-12.0.11...focalboard-12.0.12) (2022-12-13) + +### Chore diff --git a/stable/focalboard/12.0.22/Chart.yaml b/stable/focalboard/12.0.22/Chart.yaml new file mode 100644 index 00000000000..a0b0bcc2cd5 --- /dev/null +++ b/stable/focalboard/12.0.22/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +appVersion: "7.5.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +description: Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana. +home: https://truecharts.org/charts/stable/focalboard +icon: https://truecharts.org/img/hotlink-ok/chart-icons/focalboard.png +keywords: + - focalboard + - kanban + - project management +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: focalboard +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/focalboard + - https://hub.docker.com/mattermost/focalboard + - https://www.focalboard.com/ + - https://github.com/mattermost/focalboard + - https://github.com/FlipEnergy/container-images/blob/main/focalboard +version: 12.0.22 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/hammond/4.0.7/README.md b/stable/focalboard/12.0.22/README.md similarity index 100% rename from stable/hammond/4.0.7/README.md rename to stable/focalboard/12.0.22/README.md diff --git a/stable/focalboard/12.0.22/app-changelog.md b/stable/focalboard/12.0.22/app-changelog.md new file mode 100644 index 00000000000..5aec4591d45 --- /dev/null +++ b/stable/focalboard/12.0.22/app-changelog.md @@ -0,0 +1,9 @@ + + +## [focalboard-12.0.22](https://github.com/truecharts/charts/compare/focalboard-12.0.21...focalboard-12.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/focalboard/12.0.22/app-readme.md b/stable/focalboard/12.0.22/app-readme.md new file mode 100644 index 00000000000..04f6cf66151 --- /dev/null +++ b/stable/focalboard/12.0.22/app-readme.md @@ -0,0 +1,8 @@ +Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/focalboard](https://truecharts.org/charts/stable/focalboard) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/homelablabelmaker/3.0.7/charts/common-11.1.2.tgz b/stable/focalboard/12.0.22/charts/common-11.1.2.tgz similarity index 100% rename from stable/homelablabelmaker/3.0.7/charts/common-11.1.2.tgz rename to stable/focalboard/12.0.22/charts/common-11.1.2.tgz diff --git a/stable/grist/7.0.22/charts/postgresql-11.0.22.tgz b/stable/focalboard/12.0.22/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/grist/7.0.22/charts/postgresql-11.0.22.tgz rename to stable/focalboard/12.0.22/charts/postgresql-11.0.22.tgz diff --git a/stable/focalboard/12.0.22/ix_values.yaml b/stable/focalboard/12.0.22/ix_values.yaml new file mode 100644 index 00000000000..fbcbd705208 --- /dev/null +++ b/stable/focalboard/12.0.22/ix_values.yaml @@ -0,0 +1,35 @@ +image: + repository: tccr.io/truecharts/focalboard + pullPolicy: IfNotPresent + tag: 7.5.2@sha256:fbae62fe702264956e700001a2c951c10787a0146d8868c21b01bfa27021b648 + +securityContext: + readOnlyRootFilesystem: false + +env: {} + +focalboard: + serverRoot: "http://localhost:10072" + telemetry: false + localOnly: false + enableLocalMode: true + +service: + main: + ports: + main: + port: 10072 + +persistence: + uploads: + enabled: true + mountPath: "/uploads" + +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: focalboard + postgresqlDatabase: focalboard + +portal: + enabled: true diff --git a/stable/focalboard/12.0.22/questions.yaml b/stable/focalboard/12.0.22/questions.yaml new file mode 100644 index 00000000000..cb23372d4e5 --- /dev/null +++ b/stable/focalboard/12.0.22/questions.yaml @@ -0,0 +1,1901 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: focalboard + group: "App Configuration" + label: "Focalboard Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: serverRoot + label: "serverRoot" + description: "Root URL of the server. eg. https://focal.mydomain.com" + schema: + type: string + default: "http://localhost:10072" + - variable: telemetry + label: "telemetry" + description: "Enable health diagnostics telemetry " + schema: + type: boolean + default: false + - variable: localOnly + label: "localOnly" + description: "Only allow connections from localhost" + schema: + type: boolean + default: false + - variable: enableLocalMode + label: "enableLocalMode" + description: "Enable admin APIs on local Unix port" + schema: + type: boolean + default: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10072 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: uploads + label: "App Uploads Storage" + description: "Stores the Application Uploads." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/focalboard/12.0.22/templates/_configmap.tpl b/stable/focalboard/12.0.22/templates/_configmap.tpl new file mode 100644 index 00000000000..d00a7d80753 --- /dev/null +++ b/stable/focalboard/12.0.22/templates/_configmap.tpl @@ -0,0 +1,31 @@ +{{- define "focalboard.configmap" -}} + +{{- $pgPass := .Values.postgresql.postgresqlPassword | trimAll "\"" }} +{{- $pgUser := .Values.postgresql.postgresqlUsername }} +{{- $pgDB := .Values.postgresql.postgresqlDatabase }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "tc.common.names.fullname" . }}-install + labels: + {{- include "tc.common.labels" . | nindent 4 }} +data: + focalboard-config: |- + { + "serverRoot": "{{ .Values.focalboard.serverRoot }}", + "port": {{ .Values.service.main.ports.main.port }}, + "dbtype": "postgres", + "dbconfig": "{{ printf "postgresql://%v:%v@%v-postgresql:5432/%v?sslmode=disable" $pgUser $pgPass .Release.Name $pgDB }}", + "postgres_dbconfig": "dbname=$pgDB sslmode=disable", + "useSSL": false, + "webpath": "./pack", + "filespath": "/uploads", + "telemetry": {{ .Values.focalboard.telemetry }}, + "session_expire_time": 2592000, + "session_refresh_time": 18000, + "localOnly": {{ .Values.focalboard.localOnly }}, + "enableLocalMode": {{ .Values.focalboard.enableLocalMode }}, + "localModeSocketLocation": "/var/tmp/focalboard_local.socket" + } +{{- end -}} diff --git a/stable/focalboard/12.0.22/templates/common.yaml b/stable/focalboard/12.0.22/templates/common.yaml new file mode 100644 index 00000000000..9faa9d03b3b --- /dev/null +++ b/stable/focalboard/12.0.22/templates/common.yaml @@ -0,0 +1,20 @@ +{{- include "tc.common.loader.init" . }} + +{{/* Append the hardcoded settings */}} +{{- define "focalboard.harcodedValues" -}} +persistence: + focalboard-config: + enabled: "true" + mountPath: "/opt/focalboard/config.json" + subPath: "focalboard-config" + type: "custom" + volumeSpec: + configMap: + name: {{ printf "%v-install" (include "tc.common.names.fullname" .) }} +{{- end -}} +{{- $_ := mergeOverwrite .Values (include "focalboard.harcodedValues" . | fromYaml) -}} + +{{- include "focalboard.configmap" . }} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/stable/homelablabelmaker/3.0.7/values.yaml b/stable/focalboard/12.0.22/values.yaml similarity index 100% rename from stable/homelablabelmaker/3.0.7/values.yaml rename to stable/focalboard/12.0.22/values.yaml diff --git a/stable/gaps/13.0.8/CHANGELOG.md b/stable/gaps/13.0.8/CHANGELOG.md new file mode 100644 index 00000000000..b3ebe93305c --- /dev/null +++ b/stable/gaps/13.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [gaps-13.0.8](https://github.com/truecharts/charts/compare/gaps-13.0.7...gaps-13.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [gaps-13.0.7](https://github.com/truecharts/charts/compare/gaps-13.0.6...gaps-13.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [gaps-13.0.6](https://github.com/truecharts/charts/compare/gaps-13.0.5...gaps-13.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [gaps-13.0.5](https://github.com/truecharts/charts/compare/gaps-13.0.4...gaps-13.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [gaps-13.0.4](https://github.com/truecharts/charts/compare/gaps-13.0.3...gaps-13.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [gaps-13.0.3](https://github.com/truecharts/charts/compare/gaps-13.0.2...gaps-13.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [gaps-13.0.2](https://github.com/truecharts/charts/compare/gaps-13.0.1...gaps-13.0.2) (2022-11-30) + + + + +## [gaps-13.0.2](https://github.com/truecharts/charts/compare/gaps-13.0.1...gaps-13.0.2) (2022-11-30) + + + + +## [gaps-13.0.2](https://github.com/truecharts/charts/compare/gaps-13.0.1...gaps-13.0.2) (2022-11-30) + + + + +## [gaps-13.0.2](https://github.com/truecharts/charts/compare/gaps-13.0.1...gaps-13.0.2) (2022-11-30) + + + + +## [gaps-13.0.2](https://github.com/truecharts/charts/compare/gaps-13.0.1...gaps-13.0.2) (2022-11-30) + + + + +## [gaps-13.0.2](https://github.com/truecharts/charts/compare/gaps-13.0.1...gaps-13.0.2) (2022-11-30) + + + + +## [gaps-13.0.2](https://github.com/truecharts/charts/compare/gaps-13.0.1...gaps-13.0.2) (2022-11-30) + + + + +## [gaps-13.0.2](https://github.com/truecharts/charts/compare/gaps-13.0.1...gaps-13.0.2) (2022-11-30) + + + diff --git a/stable/gaps/13.0.8/Chart.yaml b/stable/gaps/13.0.8/Chart.yaml new file mode 100644 index 00000000000..5f0ceab92c8 --- /dev/null +++ b/stable/gaps/13.0.8/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "0.10.4" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. +home: https://truecharts.org/charts/stable/gaps +icon: https://truecharts.org/img/hotlink-ok/chart-icons/gaps.png +keywords: + - gaps + - plex + - plex-media-server +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: gaps +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/gaps + - https://hub.docker.com/housewrecker/gaps + - https://github.com/JasonHHouse/gaps +type: application +version: 13.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/homelablabelmaker/3.0.7/README.md b/stable/gaps/13.0.8/README.md similarity index 100% rename from stable/homelablabelmaker/3.0.7/README.md rename to stable/gaps/13.0.8/README.md diff --git a/stable/gaps/13.0.8/app-changelog.md b/stable/gaps/13.0.8/app-changelog.md new file mode 100644 index 00000000000..5d1708122a0 --- /dev/null +++ b/stable/gaps/13.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [gaps-13.0.8](https://github.com/truecharts/charts/compare/gaps-13.0.7...gaps-13.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/gaps/13.0.8/app-readme.md b/stable/gaps/13.0.8/app-readme.md new file mode 100644 index 00000000000..ac58a5bf8b0 --- /dev/null +++ b/stable/gaps/13.0.8/app-readme.md @@ -0,0 +1,8 @@ +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 visit the manual: [https://truecharts.org/charts/stable/gaps](https://truecharts.org/charts/stable/gaps) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/charts/common-11.1.2.tgz b/stable/gaps/13.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/icantbelieveitsnotvaletudo/6.0.7/charts/common-11.1.2.tgz rename to stable/gaps/13.0.8/charts/common-11.1.2.tgz diff --git a/stable/gaps/13.0.8/ix_values.yaml b/stable/gaps/13.0.8/ix_values.yaml new file mode 100644 index 00000000000..1f5fd723ddc --- /dev/null +++ b/stable/gaps/13.0.8/ix_values.yaml @@ -0,0 +1,24 @@ +image: + repository: tccr.io/truecharts/gaps + pullPolicy: IfNotPresent + tag: 0.10.4@sha256:42bf1abedb87bdb969ecb36e217502b32a531cfc03d97bee3997b72b2939723b + +securityContext: + readOnlyRootFilesystem: false + +service: + main: + ports: + main: + port: 8484 + targetPort: 8484 + +env: {} + +persistence: + data: + enabled: true + mountPath: "/usr/data" + +portal: + enabled: true diff --git a/stable/gaps/13.0.8/questions.yaml b/stable/gaps/13.0.8/questions.yaml new file mode 100644 index 00000000000..a7b44b25f1b --- /dev/null +++ b/stable/gaps/13.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8484 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/ispy-agent-dvr/4.0.13/templates/common.yaml b/stable/gaps/13.0.8/templates/common.yaml similarity index 100% rename from stable/ispy-agent-dvr/4.0.13/templates/common.yaml rename to stable/gaps/13.0.8/templates/common.yaml diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/values.yaml b/stable/gaps/13.0.8/values.yaml similarity index 100% rename from stable/icantbelieveitsnotvaletudo/6.0.7/values.yaml rename to stable/gaps/13.0.8/values.yaml diff --git a/stable/gitea/12.0.26/CHANGELOG.md b/stable/gitea/12.0.26/CHANGELOG.md new file mode 100644 index 00000000000..86acc0c520b --- /dev/null +++ b/stable/gitea/12.0.26/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [gitea-12.0.26](https://github.com/truecharts/charts/compare/gitea-12.0.25...gitea-12.0.26) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [gitea-12.0.25](https://github.com/truecharts/charts/compare/gitea-12.0.24...gitea-12.0.25) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/gitea to v1.18.3 + + + + +## [gitea-12.0.24](https://github.com/truecharts/charts/compare/gitea-12.0.23...gitea-12.0.24) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [gitea-12.0.23](https://github.com/truecharts/charts/compare/gitea-12.0.22...gitea-12.0.23) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [gitea-12.0.22](https://github.com/truecharts/charts/compare/gitea-12.0.21...gitea-12.0.22) (2023-01-20) + +### Chore + +- update container image tccr.io/truecharts/gitea to v1.18.2 + + + + +## [gitea-12.0.21](https://github.com/truecharts/charts/compare/gitea-12.0.20...gitea-12.0.21) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/gitea to v1.18.1 + + + + +## [gitea-12.0.20](https://github.com/truecharts/charts/compare/gitea-12.0.19...gitea-12.0.20) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [gitea-12.0.19](https://github.com/truecharts/charts/compare/gitea-12.0.18...gitea-12.0.19) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [gitea-12.0.18](https://github.com/truecharts/charts/compare/gitea-12.0.17...gitea-12.0.18) (2022-12-30) + +### Chore + +- update container image tccr.io/truecharts/gitea to v1.18.0 + + + + +## [gitea-12.0.17](https://github.com/truecharts/charts/compare/gitea-12.0.16...gitea-12.0.17) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [gitea-12.0.16](https://github.com/truecharts/charts/compare/gitea-12.0.15...gitea-12.0.16) (2022-12-26) + +### Chore diff --git a/stable/gitea/12.0.26/Chart.yaml b/stable/gitea/12.0.26/Chart.yaml new file mode 100644 index 00000000000..e5ed0a444ca --- /dev/null +++ b/stable/gitea/12.0.26/Chart.yaml @@ -0,0 +1,43 @@ +apiVersion: v2 +appVersion: "1.18.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: memcached.enabled + name: memcached + repository: https://charts.truecharts.org/ + version: 5.0.24 +deprecated: false +description: Self hosted GIT repositories +home: https://truecharts.org/charts/stable/gitea +icon: https://truecharts.org/img/hotlink-ok/chart-icons/gitea.png +keywords: + - git + - issue tracker + - code review + - wiki + - gitea + - gogs +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: gitea +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/gitea + - https://hub.docker.com/gitea/gitea + - https://gitea.com/gitea/helm-chart + - https://github.com/go-gitea/gitea +type: application +version: 12.0.26 +annotations: + truecharts.org/catagories: | + - GIT + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/README.md b/stable/gitea/12.0.26/README.md similarity index 100% rename from stable/icantbelieveitsnotvaletudo/6.0.7/README.md rename to stable/gitea/12.0.26/README.md diff --git a/stable/gitea/12.0.26/app-changelog.md b/stable/gitea/12.0.26/app-changelog.md new file mode 100644 index 00000000000..4e3d7468813 --- /dev/null +++ b/stable/gitea/12.0.26/app-changelog.md @@ -0,0 +1,9 @@ + + +## [gitea-12.0.26](https://github.com/truecharts/charts/compare/gitea-12.0.25...gitea-12.0.26) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/gitea/12.0.26/app-readme.md b/stable/gitea/12.0.26/app-readme.md new file mode 100644 index 00000000000..e8603ada352 --- /dev/null +++ b/stable/gitea/12.0.26/app-readme.md @@ -0,0 +1,8 @@ +Self hosted GIT repositories + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gitea](https://truecharts.org/charts/stable/gitea) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/impostor-server/3.0.12/charts/common-11.1.2.tgz b/stable/gitea/12.0.26/charts/common-11.1.2.tgz similarity index 100% rename from stable/impostor-server/3.0.12/charts/common-11.1.2.tgz rename to stable/gitea/12.0.26/charts/common-11.1.2.tgz diff --git a/stable/gitea/12.0.26/charts/memcached-5.0.24.tgz b/stable/gitea/12.0.26/charts/memcached-5.0.24.tgz new file mode 100644 index 0000000000000000000000000000000000000000..13c1ca7325ec2cd69d5cd80fc9b78c2621327e8e GIT binary patch literal 187003 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≷Ie!k%)CWTH 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

QB{S}Xb#wFn)!7zRmHJ5KL zH7``2X0f=`%yh_|Y;0SvSBdYTaKRcSnKHwhc}Vdh znTalzDCD!lg713jhw6IOU&-x|vpt>tQC~oxcZqK?9AXr(cfQ}2Dp>DJ(AN(>T=LS< z9{wa_-_M1r7KGq(@tOZgrpqN|eg7uYQ$|d#hqRzEz^sQ)Up~I{vUw7Jc5YtOetzB- zvP^x~eV!jvOMKn8cec-d%6b-jzbBq^_C!sU6w=rD^`NqFIrtmdMCMX< zuZJPwyo5<^olf0-FH)=i*sG8y3-yIyQk@aAWG04uC4M^?#>M*LF`$7deI1}Ss)1Oh|iumTykyIL6 zWRggjQtf(_j93x-2we*rqPP%;+VmvOES3Zu!Oa+bn+n4!RZtZa*D_oop+FztkJPEG z_<;bGq5|eaq5zjYeyTlgCCwm5mzO&!5%jhn-YMsnX(zaboL2V(Ik13RxDDfYco&pU zMnBBM@g%N0ST*~@w6x+<Z%vq zZ;V%egct@pFei-VZYL`$7>_s6IhqXUON}}4S(dgs8BYC&LO7fOs9kphjXkE97e=8L z9<%)p7=dfb!@%$=247BDjjP69m}01cy#|N`V|bKm6C01Ak5xhjLvitUUl@N;ajd>T z-2OpKdB?A<@Jk|tcC7f?r@P->kY<|tWWB06twD!xr6I^i6__YRqE*C6N&0UpngA~( zgR*T^g0jtvw5`AHLm%r)_~jQb$5je6gE^!2c?6t81x+?RobV4o?eHv9Fa8Aw0t zv!$Wop|a;|qWtqEwL9_0rf7@i?uL!(4jwG*9zoPDqSOO-RaKmDGCVh03pX#UmL@i+ zLQ&tnBmn1BAf`CTKhBP1>pv ztv!t_&NI0WK15iw+_RL{m*wkwXPDu;!v{tR z{%7>x1@Yhs@n|IAj3p6%6sBHLLCwHJ z69Z1Rub7(+qNd`r`9C}2eeg7GH%hN(~vg7QEWEEs4lTX#oIL`#qP# z%CJ?8tVc3b$+~_ePb*?C!|~@^4d*u4PbKM5)SYUM&8_NhF;91H{G*^=ChVGA-2RzF zSX}@=cei^xw*@owlK47aS-A|!KM({@CVGFR?QdCvB5QIIA-umbK_YAD(@3LyjmeM6 zafsfN-7>>|Vn?;V`oyx|M|N5~H@JS>9&c^waCyD#9}c+RQ^oXtj^da6olx-0PKC)% z<}SCP(#;*=??*mwZ@#X4Kf885uJB^Jc{krYdtM&#VsX1(e^0c3p7gqTKV!2@>E68$ zNCQZ*A?G7Kdq}tLrn&@A731EoZ)m0RYY4)-??LKn)J9_wKE_QUjrGV-e2wGC9^>KB z-_bOmztLRH{qFVRjHM_TH=_?@g3j9MK$uR~G&Y0Z=jjvG|&%ly9gsATkD^ zFxSq14@yW$Qpwyva7V#p=XJGky;_{c%s=j`+f0Qd0SgW$$<@%2d1`c?uGHAm1||u% zi2g?hO(SGj>Y{EOsFoj_xp#GM$bX_#2>o zS)ZM*d3@K>@u@)zFuS&kQ(Xlh4(%3*&LE z3on~6izl}YL@VYu>wu1DXVbu%=xaMhSl#l3*Ua*KZqO7Z^ezU0Z{Pj1X8vj#kFx zw&2*Uk@tZ*NrU4EnXI8Q%YmPMtBXOLgyM*Q;-yeHhQh6O%Jz)}1N^j$Bra)Us>jB| z^d((6O+}62;tsGq^|7&j2@8SJ=XGaexC4fn-2(m77Yt@2a07>#F`4rxa$&8({&YU) z<^h7SZ%SnhbVb|O?A1oVZPbJJ)|JSBy#cN%#TC7C2BM^^l$Woe1=Cta&ou1Cj84L& zG}O%#qMyvU?URCoh%}mW1r_?Pj^GwW;%o{>!9A%pJrc+r&hX3k3IF9l>xvS zR$t<92sl=6^yf8jDDS>r!Gbw(#~!q(r4R6|U4ve;9JN$siuo7x^=<_=Zbf?Tn$-?; zc?t$@u$Kp*d2aXqMP(n7Ocd}DACg1{SFB0txxZ-_g1EN@5J5rONOeP} z5_O9mq-aQ`Y~%FajNZi|sX+lFQ}(KS0T`pN0a$t;qw=;D$%AYXZ!6^_JQ*mUK@)L* zJ()qk2Pr)ry&Iy#pW&9h8HQd8U@`CFe6i~eytmCLVo4?(IABrpChDim1Cv&<3YBY~ z{09VY@Yj*&+zwd_gS!D5ZCw^B61qZ^Q}sB<29<}Ilg(zLdxgs1bfI^S*KC98a*(|) z9Tzf2K5vN|PeXR2TJ6$~!@DSCB6sF-SUJevwjF2gW+8uq)%r6**wV)_jdKLvN;=@AUGr0x4 zc0I&n$Gp0?&6C$R4Y^IBTE6~AwQ`e+%`s#I@NlReQf(Y;~+%UMD?Gv&EE z3lt+$?g2_XYvG;$n#^C{=oWGOr1NiB(W_m2ul}CSF^o!fhwu?Qlpe>jOh# z{qk%^Z3|Bu6WSl_yJj}U=HR>FtrV662O7i!QYyez51Ab^0W_`#eWHIm&HetM2ELJu z^z_4`2e}8_*Kj9*e&B)nFkMoKmib53ZcG>=rP#%*M1Xl&{OPA6F2FDay*<`oVN+pQ z1Vw56qwhuC$V~<|Hb}4#HLDDUHMa8FCV~)RTiWR8r!DK5$7}iCZ0V-xrz=pbcIZdo z9ptpLGqX6XZTvmjj{ZKhv$nviy&PTE^l^^d4zjjXQ+wG~FF-Haxq2_a?9Yp!?;8Ft z{ys-jpzps=z<~kAoKV0WyWwu(^jz89_}p&%j`q#u3UAbb{?a?AAL{uM1lGaNSE62K z;i_KePy_T;E0#YH=QW(=rU_{#O0a>Z3QaSM zvCy(WIfRndbx1SP>5o5znfE!`zqg2{Z)$neK#b!WZ2d=69!lKSZZW!|Cd)SxwU*YP zlhB063(N)bl60Fg969VlhTT`VE?5f~X8@ZpU z3p@2U(a~dy<>c`^QjN4;?i}k!I3UU zmy70>fheKVuM%EN0_wKk0!j9Cj`K0dv3nSUA?LRVzdzFo+6Ei*ij63gfh6fFDX3-O zRI!=Gk=-f?G2|@m6~OObdu{2JF|Xkuk3hf&Th_m5zakWIQ%n0L2j5Fk8Qnd}3zz`Ye8rv&4#1gOU1zyp4*v zu?*VZL}95Qcubz-rM;kpmsVPE^!4_1T0`>-4VPm-26l2}3fDeKRN^dYYFn~T(-@b< zTL9}~3~PR;BL=Z5N|!=r=vId5!}`-Aj11+3$xWz4cr;p9QDTan&01|3hh%lUhqNxQxsJn`(|wos-%QK&#y-HEfte7>H@Nrg@y}F&8?! z8IDUAK0iabtbuA&vy)n_?aYB{$JHx+gk87nef^k|xv9I2-+2MvbA{t_#pn3K-|T4* zj|2Pb!Q_5PHCCM?lFMB}QK??${<<1DA=YIY|7Qnr%1l^@%_ks<6jM+(r|^jVwh7eB zet25QG;;!%=~grACOUd#-FnM;(!O+D+V%VGO1m7ZE&pq_w&{P&cGRinIN?0eZuvDE zW$M@LByZWd&i|Ud;`~2mJ7)cwt*y45>6qnMeewS=JM-f5|1!JU@qe2=(FUh`0~VGZ zrO>uNB6oqT9KzoJ7pWV-JMt{elGybID%B|on?BDUcFC@d;Mdh!*o?|&wj{VY zMGzV)I7}=AGPtyALO)LLm5&=*D5`5-hl!bOB2sdgt}h+8a{Yp!A zI^FmSuI5=xSN{Q5>R%70bj>v||6g#G-uNGIoo@UES0-zB$LYr3A^uNrdQUM;*=hWvEu+puBM{ht9+pDK5Hs*xRu{CYjzAs>6G@-aKTRIo zl1RD%WKWArM2I5_D&e-sSke>{`&|(SHA|3KEj>PZN4+D6Votgu!mvc*5H|$XZUr!U zp>du}!c-}09S#{QvH@&5o+u=Lw{CcDAAVjhW}5zdYyMpLV(0$2{&A{+Ht{f{X=+e4 zRA3faaSmKVg0c>fnU5jR zJ-3ybR6o@YohdCHe<Lz- z{Iz+AL8eSkc}~}*djlBtTLl7>cna#rAi9Dhvfs11d{kovok;d@1)j=&ujls_WRC=; zN|=Ys$&ZX9!L%HRV1Ft^+jK=A0g(!~<-s?kB_x4>zn+nACS`TR-sc}%3X%=Sb7T9} z-1NZzZapyr+RO+y@Cq81fbW(&2IdEt&;45(LO9->LebU2Er|G63l|bEOa`$)%Hann z$yE_xK|}CAJL|_bGIE!&R~V8?GI6#;VG*jbuGOh2!EcV z&V)>YZ)XmqJODyZz%j)V0OofE;OoLKK%=$>rvyKM03LWGQM!G-VMAGKWCBQ{YY;h@ z;nTUfHChH0&5tWsv5UNVDBsO4EzAD$DB!Dsl>o-_p9dbdYJjp4;#!vC@&N5zBA{-( zhowe}IQK!;L-c<~>AZYXew3sc@_sq-ZKvKNb9pl=;3hNj=o_g2k64ge*K6B`s>9BT zS*kE=M$8+P88O{&tw*!PGjXV7Y0^^}aaPk|YdU#z<5W^lOWi@f!0! zu_tTZpaE?9RI2tY0oL7HSajMtd29#&H1TH17?fycnOB6)wSSoCDk@k2IS@}bb0D?6 zed2^W5??P%Xs-x54tQHQTxSjv<1Yl)QMw(Zt#0S(`oQTxnz`z>XeAMKQ-Ru=_Nx+w zk5af=rZ3oY{83xR;(fTvc~zZBSxT@KQCLwouqQ4p=0G|WmtV$#v=9%7nrIq41pD~w znGH(}F)??gZpKxXhrGSoKaXgCS@~yr{qI^Pr94{+lv8={CP)vTN-mLo^HhB6)X9l> zCXxO0y28SW23KZN0s8|Nkrjufn7L!QXo&^&&9!p$#gqn@)jJoGlcA#nv02yeTPy!8 zZC$4}6&#Ovouelc|15qMFDBY_xEdZV~S|^2wz{X0z0^lxcKl5Z%LSmbX|K)W`h}NC%4Ubky%B= zYN@WY&~e((0kKfBUYEyI1NMNch_NYMO;m5)EvGy*Q)Ae~#yto3|4FC;{JD3{t{Av(NWx`!I9N+vpS6bL|^=>Wc&Zd7? zDdomSt+-klwX~%)(NRw^oVIDPhN2cwQp}-UKU@Shz(Q4V^{?kY13#>EO1o%z>J&6s z)Ou{xuPz_&q9HepH=F2ybtphuU97D;WU3n1U?+7pQ@dKb@4FaRTRX42993c4<)ax_ z{efS<0*JA-<2F#e65ey^}v$ zaz0+DUvB7MY*T)?JRe)cehk#bw8U~bz1YeDV1yh|h5@bAlovwK)a&$`g@*z%)emxD zA?v_Qq*$#WL$YohdE#q{;jbV9(_kG;+vl%e(`*jeG#>6S7@crZ(3WdBpyek2gQh zO)W-#xZfWspCdiI?;8a*XTF~s1!C}c-(N3@sRa!KzPrDXJzSE#qW78__@5ZKpTCfY za|JyrRDbTP{IuBjc?3Nzoaq2cBy>oY8jHxEqv`ZGqdOd5lBh4YwbnL0H*7E}#zW{U zMLi=Gs9$e5RU46Uxew%`Q-{9uH=+5yv0r*(DbjZ@WDAi*<~AW!8ePa1`#^_|JQ_bo zSUSjhc%=e%qd-#&>+I^571 z-7$-9Wtu)nHKDRitV%~TIf9)tyEDkHL3osEvb?wwWir@mod^nMG%r9*Z;=N`dkh#YRWQmTLqHFmq&RtV3w8iyG;~tQUF)V``8CpnC44k{s!B6Yrex zHx*c_DVXg zORi^c#fqefTWO6My-sEBe2nH*dUd=pYh*cS)9b3aU1sum9E}Nuefy8iM5=k8%G!M# z?6Z)D&U`>j(>4ZHrq*LFqw6?Y_dZ(Jo=f*`S^@We5`TU`tr&!{!ai3+m(P9Sh(m)t zPk%M`-NWi^Z~Hav_jZEjeNSE_g9S zorp-o4$Lp|Y_9O~abRbnR{FC2o4VlldGT_b_XP>~y(3ASjt_8^`oqOwaM5_vdx>}H zdd+^U9u%xIbDiNWeB^YErGMpL#9o38JKWav|PV%K-h9 zfGZyzE&P`1GO_sCO2B5P$^e(wdC-_Lv2v}fO2E{wjuruqy0Wl#N92JE|0-jXxI)^6 zT`+yI%>Y{YZ^+Ph0P60{A#}siW;h=r8eC)CJTYK(jDk4)qkEPZoO3>cHgvrBix5}A z6mi1NujDk!je!AOwnS0j=xMff59ctcgcRQ7)EM9x zVqtjMp#vafYnPls_o1y$t$Qe<^K)+T;r60bRi3QNmJ_+Ogzu5Z9 z;5M3|O_}YOnVC6eW@e_C*^Zep=9rn8nVH#+S!QNth?$+!d*4-EUDf@Nv>NT!O!sPL zd%FAShY0R~O_r+NPpMi7#0eH}fxDLt^=Gm zwvFYg-`;bZ<+K*MOv(60+dUs*Z~ndJytrhsW~jn_(9=oU3yp6wx@qe0oo90DTzi_e zD647e^q7Io=8DM1FUP#p*48pZ=jw=o4Ww7|9al|;KS%8XGFq4za6MWb@Rs-7Y-fGkLyy)v z{KY8x$R5z779jLGtcIK~uzv7-u19Do;p)4Hlj9^Wm)2yQgeW5uN;(qc|I%>W4S7j< zB$=2~bad_l3$4CnYEx`y&W{v$3)OjcDiN?QN}AEse4}T&CwGXz1b!UKjkZ2})Qtsb zH)-fBi)kDd$X%|HB##L5W}2s03*wV@UU$i2<|y@RRF?m&Rh7`~XL50uaY>z%Y3 z*g)|JdUgKFV~A*o0(E?O4o<2egbmxln+hMY2!s+nKL+9V)&-E7ode^|O}m80mJFCs z8oS%zLq1r*NkLto`_-!cX#@=iBm^H$e+3u<1RsYm*e;>TNDf|pHxI{u6Ro+6)`FWu zcx_b?v3`BB0&K#EkE1`X0NN2G?>Zsk9!Sbf7W-?OT{?|qF0G2f&a^7^gs=-b4R*r- zknmXPprP&Da{lqTrqgJb#jL?))~X=eS<{a)PKb;#}8cTBIttsWUd0;X%MQgx-7d^R~4ZcaH z6|V_ov4zflyip<>+h=w6&K-6a{t8;}R;_xkMgP~ZxrnMG=cCv=ttLZu0eVzBp;E&C z&>I=R?dd!A_(T76x^M@|-CJcQyZqKVrTMR`i{n!-0A*<|`jtpo*nVP4f?bDx&(Tl_ZF-^%{ zRaxB9I<{JBWi;^dnz7296WnqqWk4%^VBC6z*~+~%8VB~%YPGm~-Ng(XV@-&19EPBU zBLPjyUA>~4^|~|0h_6aT6Pu|;xUXKRMWeR&I?h+nHtawnUgQ9lwaxG5W}$7K+e3>( zNsJlga4U@?)cZC1rV&4Y6St@_fv|y#F(V>Q3aBzGyc|9oZ{qqpwaA&cqo^;w7S%=a zcuaSUt$-H*g^#6TPQtKi8r5a(Os*tZ$UPrhy4!cONG` zOxti#Rz>}pGOgW?03B|yYg!F1UIv6mT8-DG<+biRZ_X8+TWjT#7j;I8$wj__r5Jw; zJfs0<7?u#^5BAe3x~q|@8r+6&q|e2MuqIO&{4KVKbdJpx19SQ8RX-VLQ2{LURxKs? zNE9hNh*&$0{#@xg=vabw!1Jip)F_4b(lC=(5iz<=*Pc7~?g}R&ZM!U#>k(>CwPuT< zNT960`hl*pAV<~jGQX%Vg@7y1R!u(p1G!O?W|1Q`F&LYah>YkV97B?cpP#IZ?sW#L zjQ}IfwN(KbN$k>U(GqC>`?-`ai!;?s-~{P^IuGOoC6l!DWx)Y1)oVM-C| zTF8uwX~9B-gz%wE<$Jn0UbR!m()>o}1HPcgVqU{;T^au~Kl&%b5SNB12T^{;T}8ou z#qarw4Diy3#&ONLMd|TH(NUA8R>{bc*5T&gjD39Gv$!^v_UYYr+eoQ;FTSwJr1L?WNs$< zv&mG|I)IYk8=RQ>92oiY?Q5}EZvx$v9*2j}NZc5j==9AvKDHWVO6ap}^L$uVHKb51 zBLxS2x%$UI{F;DuY)&nk#zG#=x>}Ar3vagrTr++1KBE_SydMMxT=FWq9^Oc0F&}$8 za3Rggio0|XnGx{?T^m8dc?JDK8&E+k^Dy6 zkY=4YBN!t7dE(J(;UHG$<`IB(eU&1NF$^U8VzM^>;FD5)ia{|LPs_@0c9tvMbD`dv zuXHd{hyJGKyK9Axofi^@+oY5sy_65$;4TQObI0+l0JvOiiSXC zS0a`%mMkOg+E`sq;mR445|x67woN)&f5R+e59Yt!6A9%O4UaNcKR_654EK?wW(8f# zkr{>asI2(~T0qMg^M%?xuBA~zs6CrrtqkvqTQBEtTm609Zj&%DGXftUuv@0E?Ae$| zJo(izlDi)Q4J^e3S&5A9S*5E~2_WJ{5qH^982sxXo=hRaaz=RYJ_-y%BlnK+2%p)k zJ*%IM&f0`sacd>xy~c>AzK-22*|D>0hwf%j#q^LI2O8c8ErioBqxgGUDhjF?_}v%R zy_IGPIlF{eB0rmF-JGA(l4`FL6-%#pyl8S2IAvqd5@B6b4W)-fVeLU!{ixVdaO5^` zOtsCbF8Jjn)qDh^^wvl${JxRv5cAn}XNStl<#BzvhW1B+!30AApsra}=g0;z!rC>W z=}CfBP#Jaoyx01%nJbngy6Fldw!JUHbu%kZb0n&bD)f~5j(Sstfh+pURpB9 zMM-c?L5LrbvhS%T>qY+4C~hx?iSy5Wj3ID(yEy#ilmQne9T+OKUo_vcZJg#3ISR++ zdGt$cA^bOhj-~l3(itB(ytXbw4w%xN- zxO}>Rwwd)c9M7S2nXJv6yReJ@kY0_Hg&eUbB#&a#21rPJ{HdP`df!{-Fu6 zEnnu_x@NwE(Q+!ak;?(XnN=6uSf)CilKq?*z4Ud-B;SAWrT6DDkFkaO^KV*Ga63<~ zQ>)nd7w}$~eZ(tBs#@1dEe>a4yC0-Y%g3)>)?BeNAXFG|)8f|{>BU%!;SjIT&g#E~ z_PdI(X%zExCyZN#1D9(Dam`B)XU8^dt|F?ZWAe| z)WUe^9dNt?igwMY?EA*7$ZFPrC)ZvR#1ucP6eoNCFmVYP|HD%w^Q$7-pC0+A?fL172WA$HVGptB zoXXg_y){_t9>_Jh%m8WW=B)5(a5?C#DP`RZ#id)ggkx538*_C8tUlsWf7@m{^u%nB zFv0fO5&g)JxIAjyGK@4K=I&VI&X@Rp)Y$TrZH;5paT^ZovCsT%SgTl{z=pWGDnMZ; z^npJ|mCeRAkcwR{5q{Fx(km7-D414LKwkaRZp%2zuuc20$1z5uh8#v`Df4$U(?-p_ z)J4Gj((5nuyVY#}ZhC%Wh+WyJ4*?fR#bxKl)LRH@n-V+piE)%1Q{*deA{jD4va~T# zQLFSZ%3GF5dkPM4z$x#DCZ&EPu(V%pt^4w(;SGqa$m5bv~?{?#IRw1oLH-r>TEE&#{;FqQmue4WY<(%IMV@R$Wal2D2t9jI*R(FMjX6l9c z#CJT`moekPCb!21k0Tm0I{ac7Te#T$(Sfk_ZL6#P4p0VRFlNp?r?VaPBM$wJ-H%6r zF2)y+-y;`8i{#VM_nwB{k0}m;xK|diZ{>=CMp9P%XrPHjdWZJ2I@?9>mZ6oBJGGo`J=OCb;&w1_$gO z#Fz6+=^F#4ka_!-USj1(!#>OisgmZh&M${uf_*?N1iP?PfPi+R$Rkz+FT6Mcx@N1s zo34U`5s{2*(WJZyvGbt^awox__eEIiUDx_^iqQOBFQre@dQm$+8&a*359Qj~x)v)> zP#*k`+4a>A!^GRh0Km)4KkwO#N20_1F+em+=P^xUM`Ih4zqxKYe};old~c>8dju5ckJ+t%F_a0cTwiYm%195UQ*Z;Ubhk48`7wc0NXS6e z3#+zf1BfkD;q^cm7A&k~`Yz>)CWY#*`*Vc}W`xIqOQdPeN8F4?{-~ zh&Z5{>NTT5GvJrMlLd;UK3bG);5Ki`29R!*&zvDk*nzYr`_E0pAv;jIM?sZQ9J^>Zo5r=fh3H2SXLS+U*H%zxr+x17F6UE+<;k=8ayfhh z4v&{o_dtq~Zc17Un*C-ZeKqcX54B(i_33fk-Kq#*YCB)S2C^M7ffg%{BJSG_7x@a# zSDdh8+O@9s&sg`<;OlZfhZp{R>?4ebD==Kox=~d>GSQx%Wa$$Zm5=W|2gvE=*_|3T^ zDUY;tHmx+RYbH5{RNAJr+3bAcdhK41C)JHSla=`Mu^tb1wOK%t`YwP?<1aw2ZWnA> z$ap10O1s_tov_|8;UwRWSokv_QD$PFY;8Hlfy z#c05tx3ZON+qa4iXxX)fUI@RTB%wI!e~+U#OG3Gdy`KlqeVvU*0e>{4H-&S!*YmON ziLgo9+htTEuFx9=kX9!U0--BADeudt20?Rc7OGJda z?EOyh8-@X2IX_S-4O&>tYWl$W8MZP$$9=al-mM~EZK~ljwr_*iYl6f}7?+Zwi((DN zo-#SvVqN+XO#r{NCy-)er7^H5_)nFDxpB3{lGd*z-HNfeAp6NU#P76C=KT?3(^D#_ z*Ks^uIy&J~Z~-tiQnTKWHKRz~`H!pCA{Px?LCdC)HDPxM7lx~{;shs$*`*CsJYWlME>p5Z&H0-1N<@;4b zlLdpp4Mb=4<_{ZkOcVz6_lrxkUBp6H~zUEnsmY9y@1O^Y--!a6+T8pKIF(-49FBU;Tw!>^ZO8m-%&RMwbg8Y7gf zNFA#BXAf1L>c0`Apb>tqv4bdgg#DK0rv4L(8?tyET=mM>^(kr$m-nQ1w7LyvSF~O( z5dg41n`7kaoR>(q$3M~7rzft=V-(Yos8Zx-0JDDrw!pMN4YunK*25J2-f9PK)#q?} zyrloCi+(@UHo5=e7HqzW`lU4WKG%a?G+uR_Ud-13^CR^o@3Qbc$KjRA%<_}~fHJit zgd4aN0e9MK=A!4^!O)SNQf)7*2}4qTs;&ByU%;*&RgFJ5B7nU!z60If|8~ij}P9DId(*}w($v5y~c4d z2ACF%Rq>_^!~FfaWm$SkJ-V@ocMCZtbKSZfN{|wkRWxtzhUnu_?sEdTh^78kx3;mw zD7+tFKT~cT_q=9E#;&Co$5uGX+j&)C8@=Nseywfd&Ol$?e7?=8;zA;S&+VPa6&hgg z8jWun2jaQ1y=Qgz{qcY|-L3JF*D$>tZHC`ZAcKG%aiZGH4 z_jj{NS{<%(-Dvtzvn}BUWTO+JwgzH~@am$qW~I0IU6Jx342nh|TPq^k7Ich5uw;9n z$)>Q1eLgpraxp&pG9um;bgT!2RQG`C_O6P<-*zs~Lwx=xM50gVIR9X&ey@52WsGbk z0s?+CBn}{tQszXaxEEq^qtb%|#`s>)w@MSePXBd%vFhmzzpl@b9s27Tc1-L`NJQ z&EM(4XUWT^yc5C}^KyuAWq~z%`2z{BTF`DGC#ez6wE>Q4BoT*Yr`*4$Psr{c?Mbo| zot8~mmp;-bkCZ=G*)=z*UhgQbL9*0LzAmE!YLpni&&|KiC!S|7 zd$=yrS!Pm~g$XT_ahr*C`Q!BwG2&a-nJYVf%}BUe0$W~o9Cc(Kd9*!|J&|DfDYR?M z9B?5D(yMd)fe7*%6z&;~d>R=ajgaIjr;o8m3CrxHo~@DOs&`T7;| zg-e0b+jC-!(hIZuwH8nZr_Yen3t(IcWzGwp4OKr2DCW@LDO2;{^5f?rt@$gT5r8U3fYmLwv_cSNjg4%X%XE`me$(`{(-{c zLg?$?2aoD3$ii5G9LqI5ZX$CDr)TnnE*#2n6LS8NzLz!P8b$)X_>0QZ;%x`an$!4K5VudG%!1 zt?Od`iW~MR+Z@P!SDQ_h3g^=`hV5JA9|US%sj(Ba5z^* zdTBk~xWTiV67Dt?;Qm!cb%*;lX6Z9U`E8l;`&2}vVKF}1j6fH7y7n6sWdWnGV*1B7)ReYbzpti5>uJ^TA*SN9|ne?F^! z9@K$s@?X{e4us-ji3HxRMxS@`@_N5=Ky;vt^z(9`hQ!35k_P{fAe~(wa)AH5w!GgX z>vR=NJbYh%vLl^bT3?B`J7~Z^+w~a>L*-2o(dVlG?%EVE2qmB$4%JSK1BsJ;3IaB| z64^Z@c>`C3U7G8~LR-0(Nsi>|GmdK25eu!~oiJB7lpT^t>ad=S+4S3O_Pb%_|JWAaQF&it zPGaF}vtTS79o(X%9*^4rtcfaurgKLEyKZ@;C0kH30i8$LQxr|SDUb;i;S?eixZI*B zGV9-mB#iAvC>q*G64kF3Fl4gz(Yz&C$%bhyv4bC2n7p8}0Wef$n;Kt&v&&N~3f~l` z)3U=U<*Jhcj~7D;1E6N4)}Y4Vwxu{7ub`y1Bt>^eM4O^?<0!0Vz?^AZZ%O%aVR(g zDgTVqC+;pqi!(&kz_@I}Q&VR*zAT4fN?f`4Zg4S3f9pe6{1=fov%#mF_&3>tZf5wI zKY4055=i1Y#`ajf9tg zJ7+5Wo*CyeoneOR;;B7s78@nrD}F* z8v+V9Xngr?wi4jW5}{YV(>f2im>C)mVCN`KA1Q9@g~PJaCJJ?6L-E*a4KKM( zgPqm~6G%U&^0YOl&5Ln;QHJqMg{~nXy`-AIpVKzOSEx#Z@a}TKXhX&HI;~LCMb* zzWmiqExHTUK)L0rY6;VB3>RMP>T8p=i76ME+)Y-3(ru`Td``)?&k9c9}?K{a%cFyNwZs(QBUtUq4&&O zdH32gAH|)`2(xvor$kJWyF931JNcXDFpy?ceK#s3yPkbih0AV(Cd}+;Wz0qJl zSMM*edIrxGYa+g$KBAlGV);Zvo|MCA@el*Iv%@Q^8QeJO4-c$5iwC8<*wSXPP+R%s zxUZRoxb@kOm7UT);$K>8*~FhOx1XaoLLlML^ivRmh< zTE1~%M+Mh+KGC!$?&tgJ+J@mY33G5Zy6(1b)#6^n-D&^HXaDK5_U5tv)@JojpWxSt z7r?%-I9%ojY2>7Ffp(rs0R*`%J4t*iKBs5N169>4A&MZBR z@1iWPtwy&22?ARQmNU;a^#->m#%*BJpD<85%X}M%3b{#+r(%Y)WWkK7@EJxhyl^m25P0~-|M~N zlBa=QMke}JQd$W*K_`HyA1TIBSd69q8jH>$WCFil05*k-fKh#WR#>Rd8@Avsw8yf% zd#+ij=}wXc8v24r9F6OeBysh}|92f1WvK_&lCFeYV>>H=mL+Eeb;iTY@*iUy4GY&! z3_fEVa~$rVFI)77nWxu;&I-On9aN$$-(C7Z!`lK~tc*}ijDWEShz$(JGlJL!gF6sG zoZSk-BLOXD>&Aj?L3sH#m-*1E*Ps;-G!OB1@0B4y((_#ji@ks@ua6lbgaUnDgG9^l z0V%<*y#OcuA0()$w;$Ax&*+9P$iacYfB|vA=n4A$s&;_2=pAZu>PdTmRjtJ+qvA*X z)Mc|z^($g(Mr}i|xkZ;&{gmr7QfkJ`5Gy)JqhO&XMxS7yOE*Ajy?_RF1UklNED%k+ zB#i33yI!-RGLGVU`?mF3-4!_rDd4+$I~u}xe8x0_{-8AAezw@?45!y^stWv9O6Q9Sc9_mS4S7|00mUJ%V=QXVn+#n935tXaPoi0^fFN zcA^tuJm-LqeE)kTt#yKM9xB_tvgGAjJJP(EiH0&<}bm_=u+6B{DZ4 zITA=G3D%rtV1b?W1a#}!xD!&!lsJ1AZ8|6`9~$nSt;r?7h!fPYT?wPk#^ug;w8($? zm1!9|X|LN1HIS`Vy7_>{ARbq@_Q#&3-cfx>WeZo3U`bQ$go*$gbhaMo?84EK%9{61 zefO3bH;n-vdNeYF8%^77sFki(GG;Ur7etp@JH-AUFP`zOwL}ANMHL8+N;%to-v;?` zqJD9pk1#Piy1qtI=)WNy8iZr)WY;s$aZ_iEqaC((c3j%g_RcM>BC@mihD?O6B7P~# z78Zf=qDdg!tnMq6b=5-AQPU`{BLiuCfm2e^JqM+WfcMkFpiFXET8aa zEF7F>8l=T;hN4b^t=p)tt3dkj~8Q+_J_rr#$; z#?Q5Bh53moxG9p&?yhKTTWNhy$$W{Q9gMt`kzqvJ#X7K+^BVJKlj6GXTD#zbz&ikV z>Imv-nh5Lw@DG`JfE6sz%ROAm&{GvC~t?`p-r)%|=*}5fqlhCn9Z?O1$OHJqWBuCj>)eKep%RkWw@)E++ z*_hjva+kldH`I+i$`K$KgSM}pwIwHm(E`lL6q9$krK34ct@coqQH+BB7V4rH33=cJ zz}0(V#Mp|DRG<*0YmsdBcY`AWGO+iYF`gvYQas|On5@6x_gsb}RQL<|v_?3zn~5^^ zicWU2n^_O>cl+k2qXNz#!vfu=N4vKsiVv?OPDhIJwngG!dOon70wN-)x_Clu5oSzR zG|-zBiRbU;4NIyBs5%svwp~n$M>}$N8x~y^)UMcQj6LD z91zD+K3V>7`H#*~X6Y`t1;xwW0&x>Iolpj>G)QgALS}@SAz;TSkDoBogq7Lx?dGgF zu{5)#d*68Yh7!ArXbJV`{&@9X_YA4MYWw~Yo97=m=4$b&fYjIP!5Ji}pJ4qc(no-s zpVH*>w5IaV@&#igqJ~%2XTiovjW-n}i1jOh`e_Hz{k({$_dU3D*TDK)P%F)>u;W1W z50cGyiS|G*C_GrEbVhEGj6SHp+d?$gVenLYLycGQEN z{i&nO(KSDskfmblv(zEa=rn5Z7jnFTt%a5VkKR+mqKa z%AY^S_kHxnzvWfV%LuV4os5FT5T(L`Yw#zSy(-_2HavuQYWBgQ##BvVNye_h2&xXG z{8;&H_L9;&ZNXgd<<8&r-oNvCe=`=X`u{r_9beCXJnbtxC-xV3yFNAjB>v~+`fxhu zAk_Qs>*L|^=Hc|fK_|iB{NLNlDc9Yb2T6QU(T%)iwbp<*3@{BtL3}kecpYmpE?YX$ z4Zh67WVnSj@7ogYXH&2p$Eo0(kdn~3%GcY*!*kJ1WsK*;!RRw_-#^c<+sDxb^0%!y z5C3O^T+GC5XVx-8lYpx(_q+XgD?%h1iXUP7&$LuOnBx?<86Ac9nuTxQ)s>>!05RxA zUXu!6E+e{7)j%^Sk_w&!A#60}F&;VC(bPAfu#!f>CKI|XPp;1f7phY>x(mB%(ee9T z1-EB{oYKhYrHA7wU9c$3IG#>k3c{4Fc!tLRSoT@9DGj-K9sk+jMhNazwR%c<-#*6C zET6m&V#WHSEyWt`74{k%=E)N)kCm`JcY1N0VYfz9@XE3%kg zxipU~ii>BLCs4_|M9NKU0Yu0zCPekm|6+!4BWL*Wu=$BI(2JxIQ%#ZES=G8{S87i971 zRsOh148p#N-M(Yw&1J#RWaEP#JocamPvVKi8tQ>@S2@C5+-J?0C~GXXz6I$8-pGFj zbT@O|hK`d{qyk*O-aLeiONX}vBFy-&Y&A5sEII65E7-R(dg#TUYQKMI1iCLlG*@4b z9xB{X%D{2)cy&I1MN&%0Dx%3RxL~HOr_`Y$A+@lwi@ekC0Hkv>N(;|5;bL1+otmizt8(8Aj?Q;;oZ zx$yiaW;)KC@i+RcnzYl#t?tvsBVgMWxQ;KD+1{KE4hPK!FivNHonZr!LGg{e82>w7 zlfA$gYH0(mIZ2zOWtUgY4PeSw{H1dM3Sx`ow(z1CDQ3?7{&2AO-tA|4>juimRZsBy zKF82urL4beq7kXyT$J6SF!~De$K6~POg*_N{12yR>r9%OK(U;o#R5FO01Ya8&RCZ> z_`N~AJUDHEcR4sfe@!FUNTvmD(yGa=9q$wO<3S?oJZkJSKEF00lI+^~yq8};?>BIN zN{E?gcB5@}r{p2QnJjEUS9R0TgBR{|W0xXq40*yE49ZU70mxmcr9d=} zO-B--+;DhsAmJqN!4XJDk@M(@z~MhAxCOE;8Sxwpu$Mh>e8@x zTupM$h`SqvI*c2hYcKAyO!Rv1WEWCdvM3CwZl7R$;oLa&vILQFGnrYZ}j=G0Crm#I-nEa*3sKj(KT3eR-o^j-9!ovdKuL&iz zn{=6YNj~>7;An`Ev3&W_tymw={^m1S2qMMXY+pmkaATS#tQ{wbARpCJO&bI_H;~RA zg-U9CJJt7o|9Qjw>Yd+jMwP8xfr0-;9BuqTLjTFj; z#?v(~wpqD6p`i81sm~O)aKya^0OFrcYx$8W8*cmtW0cX8nD-+-SomGXto!CI=Ty~)%Nk!&TqSL zwh<#>vq@Jo%*_JE*kw!3rNo(#g}%UuaUU5p?!eu8X7p95%O0mupW8 zj>?(a_6#*7XB%M5@5#G|rIPhSsH<4*kYhGoT;kooyeyUjV4w3wauO-Fm2Pn@?+)GX z8=o|-x<2f^MW1Og7k0tAogGMxU#Y1At9#0JE+f>*Q)T4Yw9@63E)(V@3{=1rB2QHQ z7Atim5&cm_nuqe-lB97}OGY2v-DKCz}2D9R^em?4Z31-uX>G)rPF^P|I@}Zl&!_b zp(zp3xC{0DFHthj0osO}blW>L0=VCj_i?Y*%$r(Em5-&@gJJ1XUb4FFM@@{GVJZ(O zvzJrefV*6`R}s%Y4STbAu;9kx7`Snk)^f6(|6UL2II~TLINhV=G)^&zbVG;-O1U-X zk-l*=)iYod3}U_64f4BD_^_GQdCl?)503c<=J^?o2L{QYdjx|KZXQ?r$?!M#>Dd6< zQhOKJ`TBd;mi*-68619cjp&aJoG;^vpu3B3{6MGI#^h)95eVu#BN4K)Drywlv-Xa) zKLcn;yKwjC`Nr?)yvkiJ_5G;x@hSTjp`L)hux};C@a2dz$Y7e?s@_L>OYohqP>I_T zejpd7Tq^ve^HEUDz&P*X_zbp6*U)1XSmz^uXV5-!&Y2ioZSO}~bm3n0fl8p<8MBj9 zFXjJwt86BUyc^%xaB3hYxmSa^{bL$=P`AonjJu5FBU18^J5oDg9E2?dFhkCWGfBwH zw5Bb>!X{*82hnZXa!U7PF?H{r;P?ggSX?F{fV)BuBtu_v2jO4zeRFSM9UT=bci4;k z1>&gTqK2nCgpE~BG~;eE_#*jEUd&&k@!GbVSh6x*aCReS_hAwr>d!!o=JNOxnI_Gw zgos>hj{ua}I}+-R45<`bO6Ztt=7tj8hXgESAj^(#6C&;pG&GW_z5NSMdLo}#juGGr zSLP^v{S*(I&^`TE!UTIR0KQxdT#7bIWq_A3I4&|J-ptdRUVCwuMz4g|Ze#~vmE&32 zK3Mc`8RD*2CVW4QGn44I4bbACz@acaF2}L24$;RSCSm3hsqDvqZ6ar&shh@ z@eRYjUgwg37b}JlZU;lN_a(SU0OO>8O)+u7Q`2Lg+q?gf+Q$V`!YygJah z?GGvQ_|Ib!cbo#g2mtTs0cTs3mCt`5L+ZeV?$a(`>;0Pdzej>NR z@diDfWY@s&eO_rX_|IQ8v5l{r?+0A+aJ|VnW+wWCd zV$?}jv|glg$=ZG1130W7lZ7OCYWKJ`sBsMx=rV-c!dT9-5hz$n1SijzqDO?`ebl&f zei2N`c1+>+Ht5va>7$N?8xkT!d2*9WhcBzOU|UnUQ8O zrLt&}fk-|*q;A&M%^+dWIQhZ}-IVu~({F$K$ACkW*4{4hpY~5%yJ$?E#;mHEjVVhjxb8hCeNnJKc-= zGsjz=zfih774i?`E!dOfP3gpndCY}LhvDQ#YONWfa#4lTVwA)ZOU!O9v)aVvhD(vI zAcARDDkr(fC~YbpIkZ7)_(TP{b5I#%H1yhl6){7B96vtBHlBUR73|h{ZlGadwR9rP z5=2!uwkla#F-o^|c)I3wHoLC;|B0+1pX0f%M-aPt%#+ygH&DQjWW8I=<5@SVFo@KR zSl?ghB%CfW#Vy1U3iTF=-e~7y5K!~E%<8t7>3NmfM$g!+23bUr4fwtvz`#a?rzFpL zVkWce)l>y>RA^qGXM|!f%B-Ja>L@mXqE~&sJR2`fXI~tYVBa_8yD)nZ2)m+CGPfD{ zprC<+L1Y0eN3n@Vf9dZpHoc^fCvHpUi4P8u6~(7nMZQoH(?V?2jk!tbzOnzhQam- zwi(k60v^Zl1p$`{5Q1W)by_JGZT)aU@Yov1a@TwM1WW$M=lq+TMvj)6Wn7l_&qP&$ zrgQ)z+SHxY19#{KQ9-JdHW*#kl2e`EET;k^-ni*2C`FkNTWsM1-s!5n8RFHhC78NT z6y^HI|Knt?$|iFtA8)~^?`7n6uLFaH;wgt|USp~R1H+~NK0#P*REh#{dr^Z{*{c&; zK#A60z(roY%^*30 zUe_nmYTcNNavyTOpYR-oxl=;=7Qbt7*>KQL4j!HOER}~Ckasac;1QKSAnFiD`H0|~ zLPah~Nu5Xr`ie)tgXi7J?P1^7OV8Wr!g!ni$CsAYys8pqC4F2jQ%uo+u0_P8szXRV2V?1VXrOVmyG?y1!Zfo zky7%iS<;a)alrr4trrv#+>@y#gy;IkmT924V2Nn2sHns??o`+N+UO+)^Z7=>&F}|_ zwj$88)SaV%q~2=2Z$Zx<#i~VdNwS*kp=%?5VIE48gqEEWIh+@VxE0@8AIi^Ck?~^i3Kiwf~)r1oeI)>t9r-S zHacf1th1)u`*a@u1$Z(T8+TZnT}*RXsLcX>p z=$mG`gQCrT4baDY6|0OxacZ*HSIcJwo+4QsZ3`V?H&gHgcPswH?BhxE;wgpjfRU5U z%iODg6{e#TW*7a)VKM_T9`YEjJsyGe+so5W(U8^AZjagT`gI-&H*T`37_x%PHl&=_ zuMB%$v!nOGuZIZnR|x1^$xvMXf-RA)nDn^1N}n#$pX5uN>O5#S;`SMFZo6^-0kc}@ z!RJ>0$wl^;JIWmx9dcMdsFVkLF$vG)96!%2$tmxL2(}j`j;WpcEbjqO`4Gsmt^)%h{f9UDLseujr2!P!hM>}j@mSB$~_4?;!QJ`Jzi@gz(K00~Kq-@@9-oYYV?>-fy@00mwzoYrL+e7cT zLZ%ijLp`n|6%YQ&O#Zz(M?-fGc`x=_IyQoHKlj`HoVwg^_b-;w@BtndPh+K`uDOP6 zEbDlu?)=}ajo3UdlU`l0Hh0wRH@+XMXM22G3BZe(yM-%H4EWv30(cVjNk`7H>-2NK z{`=O(Z_1rGVwv}mRMq4%sEoALzY5`TcZMO6xA4H)LCPr))LijHb%Z*Vk-Z6IHKAYClmhjy(;2<^q)rd_`K3)A_?~|61BXP18jIc-zc*OLyPzk$NW#x7HCi# zBRg!lnjg@yUORRkJ`-N>P)W5T9(^$tX6O8evdh+r=tc8Ct4l#64Xw*-mu`D7Q{Y?H zaj)c`KHh6-VeQC;DRr$*zF4%W4isEn|51#tMHT<{EF>g9w;M(Jzvk@9){^WxtT1dF z)BDaIE@mx=#}}tLse63Nw3_Xo(O{)B0+iVoVa1_`*1sybU=y^*D`bYk`zjjrod^#( zQ2fODlDhDOsWm9NB`Bp$OJ6|LQ0@ntM4|w$>)8sf~R!}&L z5hCgC$PT6TZDT)Ea4m<&KKF{)$w{`61Ui38bw~m3t;cGAv>pz|BE8D=4&O(I8_Zm4 zSZ!2yW`K-EgO$zkBJQ4-v`k|A+D1PkVByC?Ev?<~pqu(Tq)s*7p6lZK%sau+D-y}e zKwZj5yQYpGc*)j+xJ3#7BWIWV0gXcHlT@H2n?o=;sNV2rWY0>Vq>;Tapk%3t4#eFC zxQQ?k4O1RxMmRLqxk70_)ZHI{2kz&c!0f=CQx;06VCUOWZWezm zjG;tca`q=i(e*}BK)`AYT|wqo_PyF$`w&9Pwzp<8Ox}V?uk6{D-}Zl|>{QZJ!0i;s zdSjA(Y+jonM;0*HVPs32ObuH}G`Km42p15tj$HKKH?e<8LM!z{nqAfW&MSt}X(?!c zPny@>cr%|P9aC*cTTpu(r&jksUYfS4s4A3qK}eL3FpD=9R>waiEA)!LOMs+5Bp1#V zPZ@t~P+(uSHjIa#(THtOj6y&6I$?S;$ zv8_PFxuHVt^Ory@;^|)q--OYsXIUT&${@> zxhukYlUn)nMvZ{}F3Y|A2Wv+a4E=v%?JxlJ+(~6v$x=?n?S|w22yx#?_NK zm=;n;TpgkZA&0NoHZO-2$58x``ePc8I4WEHr~dypfkSB`8{MjM?Ykg#0`f6zb-u8*zMVHwN$ShKQhTC$`#TJV**IsNTifwo=N&@g!!t9n?YI+i5Bb=6~!0F2T4|7mf z`N20@;jyl&Z#=qZepz8K1KYui8wvG08kD0U89K9()Qn{!DA*+09s`ww3ia3*yDe|wEfjj(>LAi42 zxxCa!bYuTQ?*7fS{U!W=b8W4v|BY)~4AHt6*Jnygd1gz@xMJMinTcziVM~Lb$RpTP z56-3$kSP;w_R?PkeoyFgD?ZqiJ@;O|f@Z9upIrOU9As;mE^I$6*rMU;xm@jjZ+}i~ zK)IreirRw5NH zIN=}Kw!QM0$$Pyv88woi7~<#xCxRocjH-(N4D(SnhgYk(r+FH(Vhvd#IsIn*euP{4 zWl6iZhZ}RlVf~JXTE*}L5j}*^PZe?j(>HX3e>R026k~T(s#uX>$_3J3kVFiwG^ypU zZ2iyaidREx?1}tVOGTPjv?_+duILouL~fs?Y?#6TwyB%BUm)c3f;MF6=AC5(V4OJz zW!r2%Zb#xCRmvAqVx)XaaX~LCOn}El%X{u{Ny)2ePB+P`x>W|iQd^+u9}?Z+gYUEQ)v3NVm`E zs{n|pIVoE8wjjD^D6%79<0d3&C3dV&9HY zO3lSY`i@sUTiZ4~Q`|PiL~N4j_G4zC%1td1kx_4v=E&s4w7ep)-|3O`;bYo_V#;tI zTygiK+&c53;Lx~-bcsf!vL=yY>4`PGRZjs%*9y0WDQXp@vKfefw@ARpMl7zm+h^6! z89!}X5^QT;hQa}wP1JeeZ$58E_ZU7Fw^uw2fJ3EoukAhdE~OJNZ9f~Z6^$ZTGqJw3 zj(mhsqUBTEQ9d!eyZjVZTkn4fW+Nw2SpfvF+WY5+W80 zQ)tid;(6JCj{1G}{1M9Fz83+i`nef>R!NwD3HtcMozePxM9WCLOhR_6bwLEbf}}KC zIF>8#vrhA;^$+)vf5spCrA7bt-6BT9GE*|V5RxJF`#fs>0lC=^1*o$CBDyL25aSQNb!n;y3#1H!ZeHnrXBJ)>s= zQVaJ1V_1w#h@TGVOzJ;-%9h*p5Y)hD=a%OHEr zlevo@*cpF_32n}=zT#W+zsK(0RAovrWBo-$OAIUd){0ir)?S$RnplgTuhOKDl?YyR zm>Y|YS|M>4noTBxz_`7p;iDo*-{X;6BF`*KaP2OPU!nRbIRL zl8W=^q;{2Gdi9phZJ%S>ripY1iG4eYEpGWw-D>-sJCvCqh4<z~7_NpC}2*^AMH7F(|VitXtCW;rA$BZk5~rUI69jS;Iy z`o;zv<^4YEXu$r0Dl_+^gNABW{aVd1e2B2-a^iS2NJZI}@$h+*2dF{xFNi}DMv;o> zVBk(iW*#zku+-xKyPNP6`X0)(_YbIGOa9+bhA?Q~MxiGi{Ovb8xvE108RPo*zvF&0 z#RCI=Nmq8lTz;M<5VRQUH>e01?1ifALs@{WJMH_O4A6zN5$46ms(r_*={FmzU}Q5XdI2odM#WHZX>>$;t0WGI)D`W zW)@5fW6N!4Ylpvu@QC{p5}?Ll_VvL|FRuk3-zX z+fG}C(VLj)Ze?%LIyi>VRa7T=L((q|ZJtq7X_6=o;+O5;WunG;#)GwDgM=Ao2_D4p z2)Mg@l1|DIHRg5avC0KL<>4t7yYQCm!EN#U(#B&fYO!1O4)52n-1{&5hJapee&Smj zf!etai-{mj{FMF*kMSth^kc;_^5I7g3$?y@JXi1!GVA6jSk2#s?n><@JTePLoTEJ5 zm;b2z3+y}*kuZtSb9mekJAR!2PBR ze*yG2K%bF)h&=r5iXaO=*{^?Jopm3ZZ1ny=O8o;mb9SAXe@}2^SUH{Z9S4RrWMlT7 z)0J8XQ#o7VTr2TkCvT=_;jgy+y`DU!YSGhvgCcnP@%EaH5CLA|P5)iy=ZUdsM6z7> z7F87zY^>>9qx;$*?kpRCq#rrI8<{HZr=a1&lMsbo`jZoHKZb_*AYzy`WhSY>YvlGLUbnowWEIC+eM%+e55>H;yFMp+0}Hr=S7R)=Rd(Kt>-O;b!yX z)PS2ZzHT%c0nUUG#&ue?18wf(KO%l^o84X!QSjLSUsa$e7~klk$&lwxl9AP23oOp_ zY@I)*Yi06urYw53>#cYclW3~K<^|ulEStSs31RCbY6=CGHK8aAgn9T;av~7Ive$mZ zip?xzp3)EUjcAsYG~e^&YTAfjfWF%oW5N8_{%XVFE1apjsb7U{{-yBVl^o_DU6sg zUDn;SXW0EApdlHT=kXDXu5QsD-riO! zP{Gd%+wxMF=QL8W>_hdd{JM!aOJ^|d9lxIQXDlzE^dLc93$Ni)ks01pc-R&33#P796@>xyEio?#U|07RS&-mf5^VXS6ICbaba-zHKA! z0Ht__6nH=+{7~kdw7wakkx7E$X5{mwz)neG+mI*d7^&`^xzE z1xkfvj#DUR`BFr(IZD>TfnGYTt+!IiOI}~zgG)Mqg?9rJ=ZlJ5>wP7@CCXj^h12d9 z$mEzz5m(x_^O~aP9og>%obN8BSuz_5zy`bn0RyxZ=%H}ue035Ua!Wgvtd-nQHQ!CltKvh)S#m`dIp#%FX>tW^mq^8?;EOz3QD_-*@ z{FFRIqUVWacy||9hv1$6FBN}WyXJpV@k?*YOohp{*+&9LHczmBOCywHiah6n>spWL7_2TP`>GzF^lU*p6sA z-rVO#^7ph8I>=wY!S{*jwOmNGt<^nQ;@wp1RZ6OVV0}sQ&NQtN%~772h?<3XhN+4n zVO>PFU^g&Bh5KgpPrC=-Ywg_%p$l0u)Y+nTes{|~J#(7L;%3M9ZSAlwM#RGoyQop? z0SU!D5}nEOj&Q#*9tJ;lbjRvTA*iZsB}#vAe2;^5s!Ws zo`%Nw9j%^B^*ShToIJ?&x-sQhbM#(igap^A9c`t*hRbVR{M66=WVdxyKL!RJO#JoZ z5r%AwU59`toV{cD%}(*61DbvJCy9gVt4gKRCohyKQ%xlPP^)e(bbK*ycG3zY&nq z59^SoE52eh^{&mKS{D%|A zssA;gEXd%+)dJTPV>7t@^%3gh3yh3Ybf`WOk2y%R04m@5F8I4sQ>bXzj_Xer%(gHD zoo^(V+|rs+D07GS-jLQapm$okI~PG>lYZ8c{cSC-v?Vm%*}l_wc9FQ8MtCTHRlpl^ zI5NXq8ITSXFbc=Hx14PUp*aonb5E2_T=9~g##jbnJ~~u+?w41Ib^^e}QK$x#-vAt1 zXm{(&fm~Y%Ejk~?U6|`1(6}4t^_HgMWdEQ{_eG+Sxz6fwVPSRlaL|P;{ab6EG3yey zoi~FRYZ@@WRu0_zOT?eLri+mpOKn{WyHEc$ai4DVoj>lpl~`MCGPZ5>vXP&V3u?2l zH$7N*l=iq8WRmgf7g>S`wsV^2lkYFj-G0G$X$^__7%|BJUrZ*}lr5>gzlo*_6r_6DQ(|ul1MGD!1uTTA`x9^Y-t55Id6J2jt_V1S`{VDo>k4;rsf?jVo zLRo@-cUz0o@81;e*|saxkisAR_(}NZ?sm?kyuPH#lGeYFV2snX!~>LhRtr31p|FJ_BSX=nF3+ik)T>P0^Q1k{ls!A?eFn!vahm z9)00YFW^E^N$?(vk{Vz*NIFiu&4rGK+S!w*f_P$~{uBDq&Yz{$kk(cUf1G5`pX_MQ z?LRAgrHkW)+}>VdP*$lFP+}53u5c6;EapmnS$}9h^C)oCdASX2}O!>CdJG^sYfK(}92lOkUPCcy9Lj(vq z%=~T>b1`mHR1tY}N^Dx5HIC5dw0Q^yJ=DPH9U8s4dk|fJpgBmVMs6i9ZdY9XG||TE zj`r&ysLx_tv-BtJE<2%W4o*m;L(}Ijb1-@O*rH5*A{!n{Hh;M0j3Sz;LaCo%i>Ki0 z9kO{y{^FLD=^38FTWyE6AOCYM^g0t#x_1~CSN;n7Y8jYkENm^->Rw96*13hqNlJ{) z!GYpPZVA(CglUu>!$9kt1XD&0;Mnq2Jy@nsst*_99|&NIGqIY4lc8u7+chIox#}K7 zGG~>(L~#Vh1V)s@E9}#N-74+^N77Rg@nqwbT0C+BZky#!u0Y3Ye z=NU7bs!px@+fbtp_}#!M8~Nt7zMnS7H)uyfxxpYCuSYS*cpzQ+OtoY!9k0>{wM=p* zarvp`51AW@02+Q*u7sCp}@;qBEbD>)RR?UZwp#H_9iIrk@` zhLO3ZHccV|Wu;CXUv42GpR?5SGPU_9zJQT;?<*Zc;u^;3yRQM2B|5pN#JZqy#!Z~a z)y(WuQ$F(-!s}GCNT8ZQh;!)LiFdWIK<%4xxVO&%Z(PLymE#zHnMazr;k-aUHVux* zsugx*0&gD<$%aE`Lk*f>LzKU=nn{H3s2KgePqd{6tYkX5jp9l9eb)<=Jrh=hgIaA3 za7cL|ZCej8%CW#r3O^=S)N?x>~f%(0Bmg*3H|#60I^2$|xQ1a#%)N!VSa zBn7*XJ19;Y)G%>r=nB&?(Wck=Y_%-G1f^n-$XCR<81PUBSqb z0kU{Lx{r0QaOld^?zV#Pr>+_|MRypnj)D_q6k}BN=D`pXZ?xnlc%wPL_`BA2ogCQa zIBE*C(N~NKsWh#kVp5f!1pCBACLLR;&eBHt2uds%uWg|CTM;6tl=9-mtvR!pW|nj) zUvh5hmuj~nSav=?E=Hr_Jcs`Nu20tK`t(D&O9vkD00x&aOG+_y^-|~~%5*U)jI!^P z@T~@yM>V`Ei$@mur!^Yz7Sxg|4s31tk1WB{9-%mn37O~K)yV;7b?&y072Z>aer~{Y zxjv~&IUoBl5JRN}MI{a5;RNraK$-C08SkI=-n(Y8Jx0Qtf z>5b8muK8<~^k&Hp-{^Db*l6fwxug37jl#qR*H01{!&FLAQe5>B=wx=Z$g_UpjMHhU z{W3Sp=ja?NnD0RAw-KQ;-FNHR_fb(5h!Klx~AAghPp3i^4_bdLa-=sijPis@LNRFD*=}p;CC5H1Q;( zj4bh_>6eK;H?nBknhPZA(h+1{1eU_BsqAaeHospzRFK<8Qz5kVjNgxv!K4H;*r&&Q z*KW+$@x+13HB3@iNDpCh#Eqot1jJ&DecEQ-q&fg6@N5DiOHa>$?19k{Odr)Nf9H4a zM0TK_V~nK)PoU7Z)lX!g`u;sS*04vzMV@Wama0^1>O517PqC?fnXWs$9>;>y`6h5B z8taXET+}?^IJHaPV)<^#>&EZf`H5EjEMu$(?BbYLoAgOq&%hJB6pd`{GFDlRP(O

_y#I@hn+IiaB#Dh$%1IjlwSf6U9q6qG+8x2EO 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 J=hXn*8vsas+kgN7 literal 0 HcmV?d00001 diff --git a/stable/guacamole-client/7.0.19/charts/postgresql-11.0.22.tgz b/stable/gitea/12.0.26/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/guacamole-client/7.0.19/charts/postgresql-11.0.22.tgz rename to stable/gitea/12.0.26/charts/postgresql-11.0.22.tgz diff --git a/stable/gitea/12.0.26/ix_values.yaml b/stable/gitea/12.0.26/ix_values.yaml new file mode 100644 index 00000000000..e4a8e41e65c --- /dev/null +++ b/stable/gitea/12.0.26/ix_values.yaml @@ -0,0 +1,145 @@ +image: + repository: tccr.io/truecharts/gitea + tag: 1.18.3@sha256:c62e6af12fea14091c950919c7d8531584360e9d2903e243e49e14445d6dfd97 + pullPolicy: IfNotPresent + +podSecurityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + +service: + main: + ports: + main: + port: 10037 + targetPort: 3000 + ssh: + enabled: true + ports: + ssh: + enabled: true + port: 2222 + targetPort: 2222 + +envFrom: + - configMapRef: + name: gitea-env + +initContainers: + 1-init-directories: + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + command: ["/usr/sbin/init_directory_structure.sh"] + securityContext: + runAsUser: 0 + runAsNonRoot: false + envFrom: + - configMapRef: + name: gitea-env + volumeMounts: + - name: init + mountPath: "/usr/sbin" + - name: temp + mountPath: "/tmp" + - name: config + mountPath: "/etc/gitea/conf" + - name: data + mountPath: "/data" + 2-configure-gitea: + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + command: ["/usr/sbin/configure_gitea.sh"] + envFrom: + - configMapRef: + name: gitea-env + volumeMounts: + - name: init + mountPath: "/usr/sbin" + - name: temp + mountPath: "/tmp" + - name: data + mountPath: "/data" + +persistence: + data: + enabled: true + mountPath: "/data" + temp: + enabled: true + mountPath: "/tmp" + type: emptyDir + varlib: + enabled: true + mountPath: "/var/lib/gitea" + type: emptyDir + +# Configure commit/action signing prerequisites +signing: + enabled: true + gpgHome: /data/git/.gnupg + +admin: + username: giteaadmin + password: r8sA8CPHD9!bt6d + email: "gitea@local.domain" + +metrics: + enabled: false + serviceMonitor: + enabled: false + # additionalLabels: + # prometheus-release: prom1 + +ldap: + enabled: false + # name: + # securityProtocol: + # host: + # port: + # userSearchBase: + # userFilter: + # adminFilter: + # emailAttribute: + # bindDn: + # bindPassword: + # usernameAttribute: + # sshPublicKeyAttribute: + +oauth: + enabled: false + # name: + # provider: + # key: + # secret: + # autoDiscoverUrl: + # useCustomUrls: + # customAuthUrl: + # customTokenUrl: + # customProfileUrl: + # customEmailUrl: + +config: + APP_NAME: "Gitea: Git with a cup of tea" + RUN_MODE: dev + ALLOWED_HOST_LIST: "127.0.0.1" + nodeIP: 127.0.0.1 + +customConfig: + [] + # - name: test + # keys: + # - name: testkey + # value: testvalue + +# Enabled postgres +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: gitea + postgresqlDatabase: gitea + +# -- memcached dependency settings +memcached: + enabled: true + +portal: + enabled: true diff --git a/stable/gitea/12.0.26/questions.yaml b/stable/gitea/12.0.26/questions.yaml new file mode 100644 index 00000000000..c392fa75cf1 --- /dev/null +++ b/stable/gitea/12.0.26/questions.yaml @@ -0,0 +1,2025 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: admin + group: "App Configuration" + label: "Admin Credentials" + schema: + additional_attrs: true + type: dict + attrs: + - variable: username + label: "username" + schema: + type: string + valid_chars: '^(?!^admin$).*$' + required: true + - variable: password + label: "password" + schema: + type: string + required: true + private: true + - variable: email + label: "email" + schema: + type: string + required: true + - variable: config + group: "App Configuration" + label: "Admin Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: APP_NAME + label: "APP_NAME" + schema: + type: string + default: "Gitea" + required: true + - variable: RUN_MODE + label: "RUN_MODE" + schema: + type: string + default: "prod" + enum: + - value: "prod" + description: "Production" + - value: "dev" + description: "Development" + - value: "test" + description: "Testing" + - variable: ALLOWED_HOST_LIST + label: "ALLOWED_HOST_LIST" + schema: + type: string + default: "127.0.0.1" + required: true + - variable: nodeIP + label: Node IP + description: Used to generate configuration, when installed without ingress + schema: + type: string + required: true + $ref: + - "definitions/nodeIP" + - variable: customConfig + group: "App Configuration" + label: "Custom Configuration parameters" + schema: + type: list + default: [] + items: + - variable: catagoryItem + label: "Catagory" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Config Catagory Name" + schema: + type: string + required: true + - variable: keys + label: "Configuration Parameters" + schema: + type: list + default: [] + items: + - variable: configItem + label: "parameter" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Parameter Name" + schema: + type: string + required: true + - variable: value + label: "Parameter Value" + schema: + type: string + required: true + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10037 + required: true + - variable: ssh + label: "SSH Service" + description: "The SSH service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ssh + label: "SSH Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 2222 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App data Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 1000 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 1000 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 1000 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/gitea/12.0.26/templates/_configmap.tpl b/stable/gitea/12.0.26/templates/_configmap.tpl new file mode 100644 index 00000000000..b306a6046a6 --- /dev/null +++ b/stable/gitea/12.0.26/templates/_configmap.tpl @@ -0,0 +1,20 @@ +{{/* Define the configmap */}} +{{- define "gitea.configmap" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: gitea-env +data: + GITEA_APP_INI: "/data/gitea/conf/app.ini" + GITEA_CUSTOM: "/data/gitea" + GITEA_WORK_DIR: "/data" + GITEA_TEMP: "/tmp/gitea" + GITEA_ADMIN_USERNAME: {{ .Values.admin.username }} + GITEA_ADMIN_PASSWORD: {{ .Values.admin.password }} + SSH_PORT: {{ .Values.service.ssh.ports.ssh.port | quote }} + SSH_LISTEN_PORT: {{ .Values.service.ssh.ports.ssh.targetPort | quote }} + TMPDIR: "/tmp/gitea" + GNUPGHOME: "/data/git/.gnupg" + +{{- end -}} diff --git a/stable/gitea/12.0.26/templates/_secrets.tpl b/stable/gitea/12.0.26/templates/_secrets.tpl new file mode 100644 index 00000000000..335581abe78 --- /dev/null +++ b/stable/gitea/12.0.26/templates/_secrets.tpl @@ -0,0 +1,246 @@ +{{/* Define the secrets */}} +{{- define "gitea.secrets" -}} + +--- +{{ $DOMAIN := .Values.config.nodeIP | quote -}} +{{ $URL := (printf "http://%s/" .Values.config.nodeIP) }} + +{{- if and (.Values.ingress.main.enabled) (gt (len .Values.ingress.main.hosts) 0) -}} + {{- $DOMAIN = (index .Values.ingress.main.hosts 0).host -}} + {{- $URL = (printf "https://%s/" (index .Values.ingress.main.hosts 0).host) -}} +{{- end -}} + +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "tc.common.names.fullname" . }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +type: Opaque +stringData: + app.ini: |- + APP_NAME = {{ .Values.config.APP_NAME }} + RUN_MODE = {{ .Values.config.RUN_MODE }} + + [cache] + ADAPTER = memcache + ENABLED = true + HOST = {{ printf "%v-%v:%v" .Release.Name "memcached" "11211" }} + {{- range $catindex, $catvalue := .Values.customConfig }} + {{- if eq $catvalue.name "cache" }} + {{- range $index, $value := $catvalue.keys }} + {{ $value.name }} = {{ $value.value }} + {{- end }} + {{- end }} + {{- end }} + + [database] + DB_TYPE = postgres + HOST = {{ printf "%v-%v:%v" .Release.Name "postgresql" "5432" }} + NAME = {{ .Values.postgresql.postgresqlDatabase }} + PASSWD = {{ .Values.postgresql.postgresqlPassword }} + USER = {{ .Values.postgresql.postgresqlUsername }} + {{- range $catindex, $catvalue := .Values.customConfig }} + {{- if eq $catvalue.name "database" }} + {{- range $index, $value := $catvalue.keys }} + {{ $value.name }} = {{ $value.value }} + {{- end }} + {{- end }} + {{- end }} + + [metrics] + ENABLED = {{ .Values.metrics.enabled }} + {{- range $catindex, $catvalue := .Values.customConfig }} + {{- if eq $catvalue.name "metrics" }} + {{- range $index, $value := $catvalue.keys }} + {{ $value.name }} = {{ $value.value }} + {{- end }} + {{- end }} + {{- end }} + + [repository] + ROOT = /data/git/gitea-repositories + {{- range $catindex, $catvalue := .Values.customConfig }} + {{- if eq $catvalue.name "repository" }} + {{- range $index, $value := $catvalue.keys }} + {{ $value.name }} = {{ $value.value }} + {{- end }} + {{- end }} + {{- end }} + + + [security] + INSTALL_LOCK = true + {{- range $catindex, $catvalue := .Values.customConfig }} + {{- if eq $catvalue.name "security" }} + {{- range $index, $value := $catvalue.keys }} + {{ $value.name }} = {{ $value.value }} + {{- end }} + {{- end }} + {{- end }} + + [webhook] + ALLOWED_HOST_LIST = {{ .Values.config.ALLOWED_HOST_LIST }} + + [server] + APP_DATA_PATH = /data + DOMAIN = {{ $DOMAIN }} + ENABLE_PPROF = false + HTTP_PORT = {{ .Values.service.main.ports.main.targetPort }} + PROTOCOL = http + ROOT_URL = {{ $URL }} + SSH_DOMAIN = {{ $DOMAIN }} + SSH_LISTEN_PORT = {{ .Values.service.ssh.ports.ssh.targetPort }} + SSH_PORT = {{ .Values.service.ssh.ports.ssh.port }} + START_SSH_SERVER = true + {{- range $catindex, $catvalue := .Values.customConfig }} + {{- if eq $catvalue.name "server" }} + {{- range $index, $value := $catvalue.keys }} + {{ $value.name }} = {{ $value.value }} + {{- end }} + {{- end }} + {{- end }} + + {{- range $catindex, $catvalue := .Values.customConfig }} + {{- if not ( or ( eq $catvalue.name "server" ) ( eq $catvalue.name "server" ) ( eq $catvalue.name "security" ) ( eq $catvalue.name "repository" ) ( eq $catvalue.name "metrics" ) ( eq $catvalue.name "database" ) ( eq $catvalue.name "cache" ) ) }} + [{{ $catvalue.name }}] + {{- range $index, $value := $catvalue.keys }} + {{ $value.name }} = {{ $value.value }} + {{- end }} + {{- end }} + {{- end }} + +--- + +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "tc.common.names.fullname" . }}-init + labels: + {{- include "tc.common.labels" . | nindent 4 }} +type: Opaque +stringData: + init_directory_structure.sh: |- + #!/usr/bin/env bash + + set -euo pipefail + + {{- if .Values.initPreScript }} + # BEGIN: initPreScript + {{- with .Values.initPreScript -}} + {{ . | nindent 4}} + {{- end -}} + # END: initPreScript + {{- end }} + + set -x + + mkdir -p /data/git/.ssh + chmod -R 700 /data/git/.ssh + [ ! -d /data/gitea ] && mkdir -p /data/gitea/conf + + # prepare temp directory structure + mkdir -p "${GITEA_TEMP}" + chown -Rf {{ .Values.podSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} "${GITEA_TEMP}" + chmod ug+rwx "${GITEA_TEMP}" + + # Copy config file to writable volume + cp /etc/gitea/conf/app.ini /data/gitea/conf/app.ini + chown -Rf {{ .Values.podSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} "/data" + chmod a+rwx /data/gitea/conf/app.ini + + # Patch dockercontainer for dynamic users + chown -Rf {{ .Values.podSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} "/var/lib/gitea" + + configure_gitea.sh: |- + #!/usr/bin/env bash + + set -euo pipefail + + + # Connection retry inspired by https://gist.github.com/dublx/e99ea94858c07d2ca6de + function test_db_connection() { + local RETRY=0 + local MAX=30 + + echo 'Wait for database to become avialable...' + until [ "${RETRY}" -ge "${MAX}" ]; do + nc -vz -w2 {{ printf "%v-%v" .Release.Name "postgresql" }} 5432 && break + RETRY=$[${RETRY}+1] + echo "...not ready yet (${RETRY}/${MAX})" + done + + if [ "${RETRY}" -ge "${MAX}" ]; then + echo "Database not reachable after '${MAX}' attempts!" + exit 1 + fi + } + + test_db_connection + + + echo '==== BEGIN GITEA MIGRATION ====' + + gitea migrate + + echo '==== BEGIN GITEA CONFIGURATION ====' + + {{- if or .Values.admin.existingSecret (and .Values.admin.username .Values.admin.password) }} + function configure_admin_user() { + local ACCOUNT_ID=$(gitea admin user list --admin | grep -e "\s\+${GITEA_ADMIN_USERNAME}\|{{ .Values.admin.email }}\s\+" | awk -F " " "{printf \$1}") + if [[ -z "${ACCOUNT_ID}" ]]; then + echo "No admin user '${GITEA_ADMIN_USERNAME}' found, neither email '{{ .Values.admin.email }}' is assigned to an admin. Creating now..." + gitea admin user create --admin --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" --email {{ .Values.admin.email | quote }} --must-change-password=false + echo '...created.' + else + echo "Admin account '${GITEA_ADMIN_USERNAME}' or email {{ .Values.admin.email }} already exist. Running update to sync password..." + gitea admin user change-password --username "${GITEA_ADMIN_USERNAME}" --password "${GITEA_ADMIN_PASSWORD}" + echo '...password sync done.' + fi + } + + configure_admin_user + {{- end }} + + {{- if .Values.ldap.enabled }} + function configure_ldap() { + local LDAP_NAME={{ (printf "%s" .Values.ldap.name) | squote }} + local GITEA_AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${LDAP_NAME}\s+\|" | grep -iE '\|LDAP \(via BindDN\)\s+\|' | awk -F " " "{print \$1}") + + if [[ -z "${GITEA_AUTH_ID}" ]]; then + echo "No ldap configuration found with name '${LDAP_NAME}'. Installing it now..." + gitea admin auth add-ldap {{- include "gitea.ldap_settings" . | indent 1 }} + echo '...installed.' + else + echo "Existing ldap configuration with name '${LDAP_NAME}': '${GITEA_AUTH_ID}'. Running update to sync settings..." + gitea admin auth update-ldap --id "${GITEA_AUTH_ID}" {{- include "gitea.ldap_settings" . | indent 1 }} + echo '...sync settings done.' + fi + } + + configure_ldap + {{- end }} + + {{- if .Values.oauth.enabled }} + function configure_oauth() { + local OAUTH_NAME={{ (printf "%s" .Values.oauth.name) | squote }} + local AUTH_ID=$(gitea admin auth list --vertical-bars | grep -E "\|${OAUTH_NAME}\s+\|" | grep -iE '\|OAuth2\s+\|' | awk -F " " "{print \$1}") + + if [[ -z "${AUTH_ID}" ]]; then + echo "No oauth configuration found with name '${OAUTH_NAME}'. Installing it now..." + gitea admin auth add-oauth {{- include "gitea.oauth_settings" . | indent 1 }} + echo '...installed.' + else + echo "Existing oauth configuration with name '${OAUTH_NAME}': '${AUTH_ID}'. Running update to sync settings..." + gitea admin auth update-oauth --id "${AUTH_ID}" {{- include "gitea.oauth_settings" . | indent 1 }} + echo '...sync settings done.' + fi + } + + configure_oauth + {{- end }} + + echo '==== END GITEA CONFIGURATION ====' + + +{{- end -}} diff --git a/stable/gitea/12.0.26/templates/common.yaml b/stable/gitea/12.0.26/templates/common.yaml new file mode 100644 index 00000000000..eb5106bfa7b --- /dev/null +++ b/stable/gitea/12.0.26/templates/common.yaml @@ -0,0 +1,38 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{/* Render secrets for gitea */}} +{{- include "gitea.secrets" . }} + +{{/* Render configmap for gitea */}} +{{- include "gitea.configmap" . }} + +{{/* Append the general secret volumes to the volumes */}} +{{- define "gitea.initvolume" -}} +enabled: "true" +mountPath: "/secrets/ini" +readOnly: true +type: "custom" +volumeSpec: + secret: + secretName: {{ include "tc.common.names.fullname" . }}-init + defaultMode: 0777 +{{- end -}} + +{{/* Append the general secret volumes to the volumes */}} +{{- define "gitea.configvolume" -}} +enabled: "true" +mountPath: "/secrets/config" +readOnly: true +type: "custom" +volumeSpec: + secret: + secretName: {{ include "tc.common.names.fullname" . }} +{{- end -}} + +{{- $_ := set .Values.persistence "init" (include "gitea.initvolume" . | fromYaml) -}} +{{- $_ := set .Values.persistence "config" (include "gitea.configvolume" . | fromYaml) -}} + + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/stable/impostor-server/3.0.12/values.yaml b/stable/gitea/12.0.26/values.yaml similarity index 100% rename from stable/impostor-server/3.0.12/values.yaml rename to stable/gitea/12.0.26/values.yaml diff --git a/stable/gonic/8.0.10/CHANGELOG.md b/stable/gonic/8.0.10/CHANGELOG.md new file mode 100644 index 00000000000..18ae6368355 --- /dev/null +++ b/stable/gonic/8.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [gonic-8.0.10](https://github.com/truecharts/charts/compare/gonic-8.0.9...gonic-8.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [gonic-8.0.9](https://github.com/truecharts/charts/compare/gonic-8.0.8...gonic-8.0.9) (2022-12-30) + +### Chore + +- update container image tccr.io/truecharts/gonic to v0.15.2 + + + + +## [gonic-8.0.8](https://github.com/truecharts/charts/compare/gonic-8.0.7...gonic-8.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [gonic-8.0.7](https://github.com/truecharts/charts/compare/gonic-8.0.6...gonic-8.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [gonic-8.0.6](https://github.com/truecharts/charts/compare/gonic-8.0.5...gonic-8.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [gonic-8.0.5](https://github.com/truecharts/charts/compare/gonic-8.0.4...gonic-8.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [gonic-8.0.4](https://github.com/truecharts/charts/compare/gonic-8.0.3...gonic-8.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) + + + + +## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) + + + + +## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) + + + + +## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) + + + + +## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) + + + + +## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) + + + + diff --git a/stable/gonic/8.0.10/Chart.yaml b/stable/gonic/8.0.10/Chart.yaml new file mode 100644 index 00000000000..d3770c01fb9 --- /dev/null +++ b/stable/gonic/8.0.10/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "0.15.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Music streaming server / subsonic server API implementation +home: https://truecharts.org/charts/stable/gonic +icon: https://truecharts.org/img/hotlink-ok/chart-icons/gonic.png +keywords: + - music + - subsonic +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: gonic +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/gonic + - https://hub.docker.com/sentriz/gonic + - https://github.com/sentriz/gonic +version: 8.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/impostor-server/3.0.12/README.md b/stable/gonic/8.0.10/README.md similarity index 100% rename from stable/impostor-server/3.0.12/README.md rename to stable/gonic/8.0.10/README.md diff --git a/stable/gonic/8.0.10/app-changelog.md b/stable/gonic/8.0.10/app-changelog.md new file mode 100644 index 00000000000..4572a61815d --- /dev/null +++ b/stable/gonic/8.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [gonic-8.0.10](https://github.com/truecharts/charts/compare/gonic-8.0.9...gonic-8.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/gonic/8.0.10/app-readme.md b/stable/gonic/8.0.10/app-readme.md new file mode 100644 index 00000000000..ab427b57e21 --- /dev/null +++ b/stable/gonic/8.0.10/app-readme.md @@ -0,0 +1,8 @@ +Music streaming server / subsonic server API implementation + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gonic](https://truecharts.org/charts/stable/gonic) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/inventree/7.0.27/charts/common-11.1.2.tgz b/stable/gonic/8.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/inventree/7.0.27/charts/common-11.1.2.tgz rename to stable/gonic/8.0.10/charts/common-11.1.2.tgz diff --git a/stable/gonic/8.0.9/ix_values.yaml b/stable/gonic/8.0.10/ix_values.yaml similarity index 100% rename from stable/gonic/8.0.9/ix_values.yaml rename to stable/gonic/8.0.10/ix_values.yaml diff --git a/stable/gonic/8.0.10/questions.yaml b/stable/gonic/8.0.10/questions.yaml new file mode 100644 index 00000000000..5bddb797135 --- /dev/null +++ b/stable/gonic/8.0.10/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10023 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/jellyseerr/4.0.9/templates/common.yaml b/stable/gonic/8.0.10/templates/common.yaml similarity index 100% rename from stable/jellyseerr/4.0.9/templates/common.yaml rename to stable/gonic/8.0.10/templates/common.yaml diff --git a/stable/inventree/7.0.27/values.yaml b/stable/gonic/8.0.10/values.yaml similarity index 100% rename from stable/inventree/7.0.27/values.yaml rename to stable/gonic/8.0.10/values.yaml diff --git a/stable/gonic/8.0.9/CHANGELOG.md b/stable/gonic/8.0.9/CHANGELOG.md deleted file mode 100644 index fcf4d3e52e4..00000000000 --- a/stable/gonic/8.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [gonic-8.0.9](https://github.com/truecharts/charts/compare/gonic-8.0.8...gonic-8.0.9) (2022-12-30) - -### Chore - -- update container image tccr.io/truecharts/gonic to v0.15.2 - - - - -## [gonic-8.0.8](https://github.com/truecharts/charts/compare/gonic-8.0.7...gonic-8.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [gonic-8.0.7](https://github.com/truecharts/charts/compare/gonic-8.0.6...gonic-8.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [gonic-8.0.6](https://github.com/truecharts/charts/compare/gonic-8.0.5...gonic-8.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [gonic-8.0.5](https://github.com/truecharts/charts/compare/gonic-8.0.4...gonic-8.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [gonic-8.0.4](https://github.com/truecharts/charts/compare/gonic-8.0.3...gonic-8.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) - - - - -## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) - - - - -## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) - - - - -## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) - - - - -## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) - - - - -## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) - - - - -## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) - - - - -## [gonic-8.0.3](https://github.com/truecharts/charts/compare/gonic-8.0.2...gonic-8.0.3) (2022-11-30) - - - diff --git a/stable/gonic/8.0.9/Chart.yaml b/stable/gonic/8.0.9/Chart.yaml deleted file mode 100644 index b1bd54e416f..00000000000 --- a/stable/gonic/8.0.9/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "0.15.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Music streaming server / subsonic server API implementation -home: https://truecharts.org/charts/stable/gonic -icon: https://truecharts.org/img/hotlink-ok/chart-icons/gonic.png -keywords: - - music - - subsonic -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: gonic -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/gonic - - https://github.com/sentriz/gonic - - https://hub.docker.com/r/sentriz/gonic -version: 8.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/gonic/8.0.9/app-changelog.md b/stable/gonic/8.0.9/app-changelog.md deleted file mode 100644 index eadb9023a1b..00000000000 --- a/stable/gonic/8.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [gonic-8.0.9](https://github.com/truecharts/charts/compare/gonic-8.0.8...gonic-8.0.9) (2022-12-30) - -### Chore - -- update container image tccr.io/truecharts/gonic to v0.15.2 - - \ No newline at end of file diff --git a/stable/gonic/8.0.9/app-readme.md b/stable/gonic/8.0.9/app-readme.md deleted file mode 100644 index 4860acd563d..00000000000 --- a/stable/gonic/8.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Music streaming server / subsonic server API implementation - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/gonic](https://truecharts.org/charts/stable/gonic) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/gonic/8.0.9/questions.yaml b/stable/gonic/8.0.9/questions.yaml deleted file mode 100644 index 2e0a372f6c3..00000000000 --- a/stable/gonic/8.0.9/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10023 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/grist/7.0.22/CHANGELOG.md b/stable/grist/7.0.22/CHANGELOG.md deleted file mode 100644 index adb34b939e6..00000000000 --- a/stable/grist/7.0.22/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [grist-7.0.22](https://github.com/truecharts/charts/compare/grist-7.0.21...grist-7.0.22) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [grist-7.0.21](https://github.com/truecharts/charts/compare/grist-7.0.20...grist-7.0.21) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [grist-7.0.20](https://github.com/truecharts/charts/compare/grist-7.0.19...grist-7.0.20) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [grist-7.0.19](https://github.com/truecharts/charts/compare/grist-7.0.18...grist-7.0.19) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/grist to v1.0.6 - - - - -## [grist-7.0.18](https://github.com/truecharts/charts/compare/grist-7.0.17...grist-7.0.18) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [grist-7.0.17](https://github.com/truecharts/charts/compare/grist-7.0.16...grist-7.0.17) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [grist-7.0.16](https://github.com/truecharts/charts/compare/grist-7.0.15...grist-7.0.16) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [grist-7.0.15](https://github.com/truecharts/charts/compare/grist-7.0.14...grist-7.0.15) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [grist-7.0.14](https://github.com/truecharts/charts/compare/grist-7.0.13...grist-7.0.14) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [grist-7.0.13](https://github.com/truecharts/charts/compare/grist-7.0.12...grist-7.0.13) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [grist-7.0.12](https://github.com/truecharts/charts/compare/grist-7.0.11...grist-7.0.12) (2022-12-18) - -### Chore diff --git a/stable/grist/7.0.22/Chart.yaml b/stable/grist/7.0.22/Chart.yaml deleted file mode 100644 index ab4a8f589ee..00000000000 --- a/stable/grist/7.0.22/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: v2 -appVersion: "1.0.6" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -description: Grist is a modern relational spreadsheet. It combine the flexibility of a spreadsheet with the robustness of a database to organize your data. -home: https://truecharts.org/charts/stable/grist -icon: https://truecharts.org/img/hotlink-ok/chart-icons/grist.png -keywords: - - grist - - spreadsheet - - database -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: grist -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/grist - - https://hub.docker.com/r/gristlabs/grist - - https://github.com/gristlabs/grist-core - - https://support.getgrist.com/ -version: 7.0.22 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/grist/7.0.22/app-changelog.md b/stable/grist/7.0.22/app-changelog.md deleted file mode 100644 index c340ccf83fb..00000000000 --- a/stable/grist/7.0.22/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [grist-7.0.22](https://github.com/truecharts/charts/compare/grist-7.0.21...grist-7.0.22) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/grist/7.0.23/CHANGELOG.md b/stable/grist/7.0.23/CHANGELOG.md new file mode 100644 index 00000000000..f62066427b0 --- /dev/null +++ b/stable/grist/7.0.23/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [grist-7.0.23](https://github.com/truecharts/charts/compare/grist-7.0.22...grist-7.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [grist-7.0.22](https://github.com/truecharts/charts/compare/grist-7.0.21...grist-7.0.22) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [grist-7.0.21](https://github.com/truecharts/charts/compare/grist-7.0.20...grist-7.0.21) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [grist-7.0.20](https://github.com/truecharts/charts/compare/grist-7.0.19...grist-7.0.20) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [grist-7.0.19](https://github.com/truecharts/charts/compare/grist-7.0.18...grist-7.0.19) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/grist to v1.0.6 + + + + +## [grist-7.0.18](https://github.com/truecharts/charts/compare/grist-7.0.17...grist-7.0.18) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [grist-7.0.17](https://github.com/truecharts/charts/compare/grist-7.0.16...grist-7.0.17) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [grist-7.0.16](https://github.com/truecharts/charts/compare/grist-7.0.15...grist-7.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [grist-7.0.15](https://github.com/truecharts/charts/compare/grist-7.0.14...grist-7.0.15) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [grist-7.0.14](https://github.com/truecharts/charts/compare/grist-7.0.13...grist-7.0.14) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [grist-7.0.13](https://github.com/truecharts/charts/compare/grist-7.0.12...grist-7.0.13) (2022-12-19) + +### Chore diff --git a/stable/grist/7.0.23/Chart.yaml b/stable/grist/7.0.23/Chart.yaml new file mode 100644 index 00000000000..4bbc42d8fbf --- /dev/null +++ b/stable/grist/7.0.23/Chart.yaml @@ -0,0 +1,38 @@ +apiVersion: v2 +appVersion: "1.0.6" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: Grist is a modern relational spreadsheet. It combine the flexibility of a spreadsheet with the robustness of a database to organize your data. +home: https://truecharts.org/charts/stable/grist +icon: https://truecharts.org/img/hotlink-ok/chart-icons/grist.png +keywords: + - grist + - spreadsheet + - database +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: grist +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/grist + - https://hub.docker.com/gristlabs/grist + - https://github.com/gristlabs/grist-core + - https://support.getgrist.com/ +version: 7.0.23 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/inventree/7.0.27/README.md b/stable/grist/7.0.23/README.md similarity index 100% rename from stable/inventree/7.0.27/README.md rename to stable/grist/7.0.23/README.md diff --git a/stable/grist/7.0.23/app-changelog.md b/stable/grist/7.0.23/app-changelog.md new file mode 100644 index 00000000000..48b2e100d2d --- /dev/null +++ b/stable/grist/7.0.23/app-changelog.md @@ -0,0 +1,9 @@ + + +## [grist-7.0.23](https://github.com/truecharts/charts/compare/grist-7.0.22...grist-7.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/grist/7.0.22/app-readme.md b/stable/grist/7.0.23/app-readme.md similarity index 100% rename from stable/grist/7.0.22/app-readme.md rename to stable/grist/7.0.23/app-readme.md diff --git a/stable/ipfs/5.0.12/charts/common-11.1.2.tgz b/stable/grist/7.0.23/charts/common-11.1.2.tgz similarity index 100% rename from stable/ipfs/5.0.12/charts/common-11.1.2.tgz rename to stable/grist/7.0.23/charts/common-11.1.2.tgz diff --git a/stable/inventree/7.0.27/charts/postgresql-11.0.22.tgz b/stable/grist/7.0.23/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/inventree/7.0.27/charts/postgresql-11.0.22.tgz rename to stable/grist/7.0.23/charts/postgresql-11.0.22.tgz diff --git a/stable/inventree/7.0.27/charts/redis-5.0.29.tgz b/stable/grist/7.0.23/charts/redis-5.0.29.tgz similarity index 100% rename from stable/inventree/7.0.27/charts/redis-5.0.29.tgz rename to stable/grist/7.0.23/charts/redis-5.0.29.tgz diff --git a/stable/grist/7.0.22/ix_values.yaml b/stable/grist/7.0.23/ix_values.yaml similarity index 100% rename from stable/grist/7.0.22/ix_values.yaml rename to stable/grist/7.0.23/ix_values.yaml diff --git a/stable/grist/7.0.22/questions.yaml b/stable/grist/7.0.23/questions.yaml similarity index 100% rename from stable/grist/7.0.22/questions.yaml rename to stable/grist/7.0.23/questions.yaml diff --git a/stable/grist/7.0.22/templates/_config.tpl b/stable/grist/7.0.23/templates/_config.tpl similarity index 100% rename from stable/grist/7.0.22/templates/_config.tpl rename to stable/grist/7.0.23/templates/_config.tpl diff --git a/stable/grist/7.0.22/templates/_secret.tpl b/stable/grist/7.0.23/templates/_secret.tpl similarity index 100% rename from stable/grist/7.0.22/templates/_secret.tpl rename to stable/grist/7.0.23/templates/_secret.tpl diff --git a/stable/grist/7.0.22/templates/common.yaml b/stable/grist/7.0.23/templates/common.yaml similarity index 100% rename from stable/grist/7.0.22/templates/common.yaml rename to stable/grist/7.0.23/templates/common.yaml diff --git a/stable/ipfs/5.0.12/values.yaml b/stable/grist/7.0.23/values.yaml similarity index 100% rename from stable/ipfs/5.0.12/values.yaml rename to stable/grist/7.0.23/values.yaml diff --git a/stable/guacamole-client/7.0.19/CHANGELOG.md b/stable/guacamole-client/7.0.19/CHANGELOG.md deleted file mode 100644 index 8b2de9606b5..00000000000 --- a/stable/guacamole-client/7.0.19/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [guacamole-client-7.0.19](https://github.com/truecharts/charts/compare/guacamole-client-7.0.18...guacamole-client-7.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [guacamole-client-7.0.18](https://github.com/truecharts/charts/compare/guacamole-client-7.0.17...guacamole-client-7.0.18) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [guacamole-client-7.0.17](https://github.com/truecharts/charts/compare/guacamole-client-7.0.16...guacamole-client-7.0.17) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [guacamole-client-7.0.16](https://github.com/truecharts/charts/compare/guacamole-client-7.0.15...guacamole-client-7.0.16) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [guacamole-client-7.0.15](https://github.com/truecharts/charts/compare/guacamole-client-7.0.14...guacamole-client-7.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [guacamole-client-7.0.14](https://github.com/truecharts/charts/compare/guacamole-client-7.0.13...guacamole-client-7.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [guacamole-client-7.0.13](https://github.com/truecharts/charts/compare/guacamole-client-7.0.12...guacamole-client-7.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [guacamole-client-7.0.12](https://github.com/truecharts/charts/compare/guacamole-client-7.0.11...guacamole-client-7.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [guacamole-client-7.0.11](https://github.com/truecharts/charts/compare/guacamole-client-7.0.10...guacamole-client-7.0.11) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - - - -## [guacamole-client-7.0.10](https://github.com/truecharts/charts/compare/guacamole-client-7.0.9...guacamole-client-7.0.10) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [guacamole-client-7.0.9](https://github.com/truecharts/charts/compare/guacamole-client-7.0.8...guacamole-client-7.0.9) (2022-12-05) - -### Chore diff --git a/stable/guacamole-client/7.0.19/Chart.yaml b/stable/guacamole-client/7.0.19/Chart.yaml deleted file mode 100644 index daba6f8f7a5..00000000000 --- a/stable/guacamole-client/7.0.19/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -appVersion: "1.4.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -description: Apache Guacamole is a clientless remote desktop gateway. -home: https://truecharts.org/charts/stable/guacamole-client -icon: https://truecharts.org/img/hotlink-ok/chart-icons/guacamole-client.png -keywords: - - guacamole - - remote -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: guacamole-client -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/guacamole-client - - https://github.com/apache/guacamole-client - - https://hub.docker.com/r/guacamole/guacamole - - http://guacamole.incubator.apache.org/doc/gug/introduction.html -type: application -version: 7.0.19 -annotations: - truecharts.org/catagories: | - - utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/guacamole-client/7.0.19/app-changelog.md b/stable/guacamole-client/7.0.19/app-changelog.md deleted file mode 100644 index bc876467c11..00000000000 --- a/stable/guacamole-client/7.0.19/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [guacamole-client-7.0.19](https://github.com/truecharts/charts/compare/guacamole-client-7.0.18...guacamole-client-7.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/guacamole-client/7.0.20/CHANGELOG.md b/stable/guacamole-client/7.0.20/CHANGELOG.md new file mode 100644 index 00000000000..147e1a9ed37 --- /dev/null +++ b/stable/guacamole-client/7.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [guacamole-client-7.0.20](https://github.com/truecharts/charts/compare/guacamole-client-7.0.19...guacamole-client-7.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [guacamole-client-7.0.19](https://github.com/truecharts/charts/compare/guacamole-client-7.0.18...guacamole-client-7.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [guacamole-client-7.0.18](https://github.com/truecharts/charts/compare/guacamole-client-7.0.17...guacamole-client-7.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [guacamole-client-7.0.17](https://github.com/truecharts/charts/compare/guacamole-client-7.0.16...guacamole-client-7.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [guacamole-client-7.0.16](https://github.com/truecharts/charts/compare/guacamole-client-7.0.15...guacamole-client-7.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [guacamole-client-7.0.15](https://github.com/truecharts/charts/compare/guacamole-client-7.0.14...guacamole-client-7.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [guacamole-client-7.0.14](https://github.com/truecharts/charts/compare/guacamole-client-7.0.13...guacamole-client-7.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [guacamole-client-7.0.13](https://github.com/truecharts/charts/compare/guacamole-client-7.0.12...guacamole-client-7.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [guacamole-client-7.0.12](https://github.com/truecharts/charts/compare/guacamole-client-7.0.11...guacamole-client-7.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [guacamole-client-7.0.11](https://github.com/truecharts/charts/compare/guacamole-client-7.0.10...guacamole-client-7.0.11) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [guacamole-client-7.0.10](https://github.com/truecharts/charts/compare/guacamole-client-7.0.9...guacamole-client-7.0.10) (2022-12-13) + +### Chore diff --git a/stable/guacamole-client/7.0.20/Chart.yaml b/stable/guacamole-client/7.0.20/Chart.yaml new file mode 100644 index 00000000000..5c81bff71a0 --- /dev/null +++ b/stable/guacamole-client/7.0.20/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "1.4.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +description: Apache Guacamole is a clientless remote desktop gateway. +home: https://truecharts.org/charts/stable/guacamole-client +icon: https://truecharts.org/img/hotlink-ok/chart-icons/guacamole-client.png +keywords: + - guacamole + - remote +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: guacamole-client +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/guacamole-client + - https://hub.docker.com/guacamole/guacamole + - https://github.com/apache/guacamole-client + - http://guacamole.incubator.apache.org/doc/gug/introduction.html +type: application +version: 7.0.20 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/ipfs/5.0.12/README.md b/stable/guacamole-client/7.0.20/README.md similarity index 100% rename from stable/ipfs/5.0.12/README.md rename to stable/guacamole-client/7.0.20/README.md diff --git a/stable/guacamole-client/7.0.20/app-changelog.md b/stable/guacamole-client/7.0.20/app-changelog.md new file mode 100644 index 00000000000..524d51e5a8b --- /dev/null +++ b/stable/guacamole-client/7.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [guacamole-client-7.0.20](https://github.com/truecharts/charts/compare/guacamole-client-7.0.19...guacamole-client-7.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/guacamole-client/7.0.19/app-readme.md b/stable/guacamole-client/7.0.20/app-readme.md similarity index 100% rename from stable/guacamole-client/7.0.19/app-readme.md rename to stable/guacamole-client/7.0.20/app-readme.md diff --git a/stable/ispy-agent-dvr/4.0.13/charts/common-11.1.2.tgz b/stable/guacamole-client/7.0.20/charts/common-11.1.2.tgz similarity index 100% rename from stable/ispy-agent-dvr/4.0.13/charts/common-11.1.2.tgz rename to stable/guacamole-client/7.0.20/charts/common-11.1.2.tgz diff --git a/stable/kutt/6.0.20/charts/postgresql-11.0.22.tgz b/stable/guacamole-client/7.0.20/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/kutt/6.0.20/charts/postgresql-11.0.22.tgz rename to stable/guacamole-client/7.0.20/charts/postgresql-11.0.22.tgz diff --git a/stable/guacamole-client/7.0.19/ix_values.yaml b/stable/guacamole-client/7.0.20/ix_values.yaml similarity index 100% rename from stable/guacamole-client/7.0.19/ix_values.yaml rename to stable/guacamole-client/7.0.20/ix_values.yaml diff --git a/stable/guacamole-client/7.0.19/questions.yaml b/stable/guacamole-client/7.0.20/questions.yaml similarity index 100% rename from stable/guacamole-client/7.0.19/questions.yaml rename to stable/guacamole-client/7.0.20/questions.yaml diff --git a/stable/guacamole-client/7.0.19/templates/_configmap.tpl b/stable/guacamole-client/7.0.20/templates/_configmap.tpl similarity index 100% rename from stable/guacamole-client/7.0.19/templates/_configmap.tpl rename to stable/guacamole-client/7.0.20/templates/_configmap.tpl diff --git a/stable/guacamole-client/7.0.19/templates/common.yaml b/stable/guacamole-client/7.0.20/templates/common.yaml similarity index 100% rename from stable/guacamole-client/7.0.19/templates/common.yaml rename to stable/guacamole-client/7.0.20/templates/common.yaml diff --git a/stable/ispy-agent-dvr/4.0.13/values.yaml b/stable/guacamole-client/7.0.20/values.yaml similarity index 100% rename from stable/ispy-agent-dvr/4.0.13/values.yaml rename to stable/guacamole-client/7.0.20/values.yaml diff --git a/stable/hammond/4.0.7/CHANGELOG.md b/stable/hammond/4.0.7/CHANGELOG.md deleted file mode 100644 index 6634040c00d..00000000000 --- a/stable/hammond/4.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [hammond-4.0.7](https://github.com/truecharts/charts/compare/hammond-4.0.6...hammond-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [hammond-4.0.6](https://github.com/truecharts/charts/compare/hammond-4.0.5...hammond-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [hammond-4.0.5](https://github.com/truecharts/charts/compare/hammond-4.0.4...hammond-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [hammond-4.0.4](https://github.com/truecharts/charts/compare/hammond-4.0.3...hammond-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [hammond-4.0.3](https://github.com/truecharts/charts/compare/hammond-4.0.2...hammond-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - - - -## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) - - diff --git a/stable/hammond/4.0.7/Chart.yaml b/stable/hammond/4.0.7/Chart.yaml deleted file mode 100644 index d66c7a9f3ef..00000000000 --- a/stable/hammond/4.0.7/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.0.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: A self-hosted vehicle expense tracking system with support for multiple users. -home: https://truecharts.org/charts/stable/hammond -icon: https://truecharts.org/img/hotlink-ok/chart-icons/hammond.png -keywords: - - hammond -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: hammond -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/hammond - - https://github.com/akhilrex/hammond - - https://hub.docker.com/r/akhilrex/hammond -version: 4.0.7 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/hammond/4.0.7/app-changelog.md b/stable/hammond/4.0.7/app-changelog.md deleted file mode 100644 index ba224085ee9..00000000000 --- a/stable/hammond/4.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [hammond-4.0.7](https://github.com/truecharts/charts/compare/hammond-4.0.6...hammond-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/hammond/4.0.7/app-readme.md b/stable/hammond/4.0.7/app-readme.md deleted file mode 100644 index 4f1febd6d5f..00000000000 --- a/stable/hammond/4.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A self-hosted vehicle expense tracking system with support for multiple users. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/hammond](https://truecharts.org/charts/stable/hammond) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/hammond/4.0.7/questions.yaml b/stable/hammond/4.0.7/questions.yaml deleted file mode 100644 index 4103a4df8dd..00000000000 --- a/stable/hammond/4.0.7/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10186 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: assets - label: "App Assets Storage" - description: "Stores the Application Assets." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/hammond/4.0.8/CHANGELOG.md b/stable/hammond/4.0.8/CHANGELOG.md new file mode 100644 index 00000000000..f722d52731a --- /dev/null +++ b/stable/hammond/4.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [hammond-4.0.8](https://github.com/truecharts/charts/compare/hammond-4.0.7...hammond-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [hammond-4.0.7](https://github.com/truecharts/charts/compare/hammond-4.0.6...hammond-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [hammond-4.0.6](https://github.com/truecharts/charts/compare/hammond-4.0.5...hammond-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [hammond-4.0.5](https://github.com/truecharts/charts/compare/hammond-4.0.4...hammond-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [hammond-4.0.4](https://github.com/truecharts/charts/compare/hammond-4.0.3...hammond-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [hammond-4.0.3](https://github.com/truecharts/charts/compare/hammond-4.0.2...hammond-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) + + + + +## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) + + + + +## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) + + + + +## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) + + + + +## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) + + + + +## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) + + + + +## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) + + + + +## [hammond-4.0.2](https://github.com/truecharts/charts/compare/hammond-4.0.1...hammond-4.0.2) (2022-11-30) + + + diff --git a/stable/hammond/4.0.8/Chart.yaml b/stable/hammond/4.0.8/Chart.yaml new file mode 100644 index 00000000000..7aa2c05caa6 --- /dev/null +++ b/stable/hammond/4.0.8/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.0.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: A self-hosted vehicle expense tracking system with support for multiple users. +home: https://truecharts.org/charts/stable/hammond +icon: https://truecharts.org/img/hotlink-ok/chart-icons/hammond.png +keywords: + - hammond +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: hammond +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/hammond + - https://hub.docker.com/akhilrex/hammond + - https://github.com/akhilrex/hammond +version: 4.0.8 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/ispy-agent-dvr/4.0.13/README.md b/stable/hammond/4.0.8/README.md similarity index 100% rename from stable/ispy-agent-dvr/4.0.13/README.md rename to stable/hammond/4.0.8/README.md diff --git a/stable/hammond/4.0.8/app-changelog.md b/stable/hammond/4.0.8/app-changelog.md new file mode 100644 index 00000000000..645a9ea2b2d --- /dev/null +++ b/stable/hammond/4.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [hammond-4.0.8](https://github.com/truecharts/charts/compare/hammond-4.0.7...hammond-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/hammond/4.0.8/app-readme.md b/stable/hammond/4.0.8/app-readme.md new file mode 100644 index 00000000000..5c3f2a7a2d6 --- /dev/null +++ b/stable/hammond/4.0.8/app-readme.md @@ -0,0 +1,8 @@ +A self-hosted vehicle expense tracking system with support for multiple users. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/hammond](https://truecharts.org/charts/stable/hammond) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/jellyseerr/4.0.9/charts/common-11.1.2.tgz b/stable/hammond/4.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/jellyseerr/4.0.9/charts/common-11.1.2.tgz rename to stable/hammond/4.0.8/charts/common-11.1.2.tgz diff --git a/stable/hammond/4.0.7/ix_values.yaml b/stable/hammond/4.0.8/ix_values.yaml similarity index 100% rename from stable/hammond/4.0.7/ix_values.yaml rename to stable/hammond/4.0.8/ix_values.yaml diff --git a/stable/hammond/4.0.8/questions.yaml b/stable/hammond/4.0.8/questions.yaml new file mode 100644 index 00000000000..36bac492956 --- /dev/null +++ b/stable/hammond/4.0.8/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10186 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: assets + label: "App Assets Storage" + description: "Stores the Application Assets." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/hammond/4.0.7/templates/_secrets.tpl b/stable/hammond/4.0.8/templates/_secrets.tpl similarity index 100% rename from stable/hammond/4.0.7/templates/_secrets.tpl rename to stable/hammond/4.0.8/templates/_secrets.tpl diff --git a/stable/hammond/4.0.7/templates/common.yaml b/stable/hammond/4.0.8/templates/common.yaml similarity index 100% rename from stable/hammond/4.0.7/templates/common.yaml rename to stable/hammond/4.0.8/templates/common.yaml diff --git a/stable/jellyseerr/4.0.9/values.yaml b/stable/hammond/4.0.8/values.yaml similarity index 100% rename from stable/jellyseerr/4.0.9/values.yaml rename to stable/hammond/4.0.8/values.yaml diff --git a/stable/handbrake/15.0.8/CHANGELOG.md b/stable/handbrake/15.0.8/CHANGELOG.md new file mode 100644 index 00000000000..6c579df35bd --- /dev/null +++ b/stable/handbrake/15.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [handbrake-15.0.8](https://github.com/truecharts/charts/compare/handbrake-15.0.7...handbrake-15.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [handbrake-15.0.7](https://github.com/truecharts/charts/compare/handbrake-15.0.6...handbrake-15.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [handbrake-15.0.6](https://github.com/truecharts/charts/compare/handbrake-15.0.5...handbrake-15.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [handbrake-15.0.5](https://github.com/truecharts/charts/compare/handbrake-15.0.4...handbrake-15.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [handbrake-15.0.4](https://github.com/truecharts/charts/compare/handbrake-15.0.3...handbrake-15.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [handbrake-15.0.3](https://github.com/truecharts/charts/compare/handbrake-15.0.2...handbrake-15.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [handbrake-15.0.2](https://github.com/truecharts/charts/compare/handbrake-15.0.1...handbrake-15.0.2) (2022-11-30) + + + + +## [handbrake-15.0.2](https://github.com/truecharts/charts/compare/handbrake-15.0.1...handbrake-15.0.2) (2022-11-30) + + + + +## [handbrake-15.0.2](https://github.com/truecharts/charts/compare/handbrake-15.0.1...handbrake-15.0.2) (2022-11-30) + + + + +## [handbrake-15.0.2](https://github.com/truecharts/charts/compare/handbrake-15.0.1...handbrake-15.0.2) (2022-11-30) + + + + +## [handbrake-15.0.2](https://github.com/truecharts/charts/compare/handbrake-15.0.1...handbrake-15.0.2) (2022-11-30) + + + + +## [handbrake-15.0.2](https://github.com/truecharts/charts/compare/handbrake-15.0.1...handbrake-15.0.2) (2022-11-30) + + + + +## [handbrake-15.0.2](https://github.com/truecharts/charts/compare/handbrake-15.0.1...handbrake-15.0.2) (2022-11-30) + + + + +## [handbrake-15.0.2](https://github.com/truecharts/charts/compare/handbrake-15.0.1...handbrake-15.0.2) (2022-11-30) + + + diff --git a/stable/handbrake/15.0.8/Chart.yaml b/stable/handbrake/15.0.8/Chart.yaml new file mode 100644 index 00000000000..ec8acfdf00f --- /dev/null +++ b/stable/handbrake/15.0.8/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "1.25.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: HandBrake is a tool for converting video from nearly any format to a selection of modern, widely supported codecs. +home: https://truecharts.org/charts/stable/handbrake +icon: https://truecharts.org/img/hotlink-ok/chart-icons/handbrake.png +keywords: + - handbrake + - encode + - media +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: handbrake +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/handbrake + - https://hub.docker.com/jlesage/handbrake + - https://github.com/jlesage/docker-handbrake + - https://handbrake.fr/ +type: application +version: 15.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/jellyseerr/4.0.9/README.md b/stable/handbrake/15.0.8/README.md similarity index 100% rename from stable/jellyseerr/4.0.9/README.md rename to stable/handbrake/15.0.8/README.md diff --git a/stable/handbrake/15.0.8/app-changelog.md b/stable/handbrake/15.0.8/app-changelog.md new file mode 100644 index 00000000000..d66b66489cd --- /dev/null +++ b/stable/handbrake/15.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [handbrake-15.0.8](https://github.com/truecharts/charts/compare/handbrake-15.0.7...handbrake-15.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/handbrake/15.0.8/app-readme.md b/stable/handbrake/15.0.8/app-readme.md new file mode 100644 index 00000000000..15638c5e056 --- /dev/null +++ b/stable/handbrake/15.0.8/app-readme.md @@ -0,0 +1,8 @@ +HandBrake is a tool for converting video from nearly any format to a selection of modern, widely supported codecs. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/handbrake](https://truecharts.org/charts/stable/handbrake) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/koel/6.0.22/charts/common-11.1.2.tgz b/stable/handbrake/15.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/koel/6.0.22/charts/common-11.1.2.tgz rename to stable/handbrake/15.0.8/charts/common-11.1.2.tgz diff --git a/stable/handbrake/15.0.8/ix_values.yaml b/stable/handbrake/15.0.8/ix_values.yaml new file mode 100644 index 00000000000..e2849c022dd --- /dev/null +++ b/stable/handbrake/15.0.8/ix_values.yaml @@ -0,0 +1,72 @@ +image: + repository: tccr.io/truecharts/handbrake + tag: v1.25.1@sha256:a5261046540181d4f5f66fa1e207669487b58d241903647dd4ee8de997ae10ca + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +service: + main: + ports: + main: + port: 10053 + targetPort: 5800 + vnc: + enabled: true + ports: + vnc: + enabled: true + port: 10055 + targetPort: 5900 + +envFrom: + - configMapRef: + name: '{{ include "tc.common.names.fullname" . }}-handbrake' + +secretEnv: + VNC_PASSWORD: "" + +handbrake: + KEEP_APP_RUNNING: false + DISPLAY_WIDTH: 1280 + DISPLAY_HEIGHT: 768 + SECURE_CONNECTION: false + ENABLE_CJK_FONT: false + AUTOMATED_CONVERSION_PRESET: "General/Very Fast 1080p30" + AUTOMATED_CONVERSION_FORMAT: "mp4" + AUTOMATED_CONVERSION_KEEP_SOURCE: true + AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION: "ignore" + +configmap: + handbrake: + enabled: true + data: + ENABLE_CJK_FONT: '{{ ternary "1" "0" .Values.handbrake.ENABLE_CJK_FONT }}' + KEEP_APP_RUNNING: '{{ ternary "1" "0" .Values.handbrake.KEEP_APP_RUNNING }}' + SECURE_CONNECTION: '{{ ternary "1" "0" .Values.handbrake.SECURE_CONNECTION }}' + DISPLAY_WIDTH: "{{ .Values.handbrake.DISPLAY_WIDTH }}" + DISPLAY_HEIGHT: "{{ .Values.handbrake.DISPLAY_HEIGHT }}" + AUTOMATED_CONVERSION_KEEP_SOURCE: '{{ ternary "1" "0" .Values.handbrake.AUTOMATED_CONVERSION_KEEP_SOURCE }}' + AUTOMATED_CONVERSION_PRESET: "{{ .Values.handbrake.AUTOMATED_CONVERSION_PRESET }}" + AUTOMATED_CONVERSION_FORMAT: "{{ .Values.handbrake.AUTOMATED_CONVERSION_FORMAT }}" + AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION: "{{ .Values.handbrake.AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION }}" + +persistence: + config: + enabled: true + mountPath: "/config" + storage: + enabled: true + mountPath: "/storage" + output: + enabled: true + mountPath: "/output" + +portal: + enabled: true diff --git a/stable/handbrake/15.0.8/questions.yaml b/stable/handbrake/15.0.8/questions.yaml new file mode 100644 index 00000000000..0de48e5aa98 --- /dev/null +++ b/stable/handbrake/15.0.8/questions.yaml @@ -0,0 +1,2159 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + # Portal + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: handbrake + group: "App Configuration" + label: "HandBrake Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: autoconv + label: "Automated Conversion Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: AUTOMATED_CONVERSION_PRESET + label: "AUTOMATED_CONVERSION_PRESET" + description: "HandBrake preset used by the automatic video converter. Identification of a preset must follow the format /" + schema: + type: string + default: "General/Very Fast 1080p30" + required: true + - variable: AUTOMATED_CONVERSION_FORMAT + label: "AUTOMATED_CONVERSION_FORMAT" + description: "Video container format used by the automatic video converter for output files. This is typically the video filename extension." + schema: + type: string + default: "mp4" + required: true + - variable: AUTOMATED_CONVERSION_KEEP_SOURCE + label: "AUTOMATED_CONVERSION_KEEP_SOURCE" + description: "When set to 0, a video that has been successfully converted is removed from the watch folder." + schema: + type: boolean + default: false + - variable: AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION + label: "AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION" + description: "When set to ignore, a non-video file found in the watch folder is ignored. If set to copy, a non-video file is copied as-is to the output folder." + schema: + type: string + default: "ignore" + required: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10053 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10055 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage" + description: "Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: output + label: "App Output Storage" + description: "Stores the Application Output." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/komga/8.0.10/templates/common.yaml b/stable/handbrake/15.0.8/templates/common.yaml similarity index 100% rename from stable/komga/8.0.10/templates/common.yaml rename to stable/handbrake/15.0.8/templates/common.yaml diff --git a/stable/koel/6.0.22/values.yaml b/stable/handbrake/15.0.8/values.yaml similarity index 100% rename from stable/koel/6.0.22/values.yaml rename to stable/handbrake/15.0.8/values.yaml diff --git a/stable/heimdall/14.0.4/CHANGELOG.md b/stable/heimdall/14.0.4/CHANGELOG.md new file mode 100644 index 00000000000..add202c960b --- /dev/null +++ b/stable/heimdall/14.0.4/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [heimdall-14.0.4](https://github.com/truecharts/charts/compare/heimdall-14.0.3...heimdall-14.0.4) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [heimdall-14.0.3](https://github.com/truecharts/charts/compare/heimdall-14.0.2...heimdall-14.0.3) (2023-01-22) + +### Chore + +- update container image tccr.io/truecharts/heimdall to 2.5.5 + + + + +## [heimdall-14.0.2](https://github.com/truecharts/charts/compare/heimdall-14.0.1...heimdall-14.0.2) (2023-01-20) + + + + +## [heimdall-14.0.1](https://github.com/truecharts/charts/compare/heimdall-14.0.0...heimdall-14.0.1) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/heimdall to v2021.11.28 + + + + +## [heimdall-14.0.0](https://github.com/truecharts/charts/compare/heimdall-13.0.9...heimdall-14.0.0) (2023-01-18) + + + + +## [heimdall-13.0.9](https://github.com/truecharts/charts/compare/heimdall-13.0.8...heimdall-13.0.9) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/heimdall to v2021.11.28 + + + + +## [heimdall-13.0.8](https://github.com/truecharts/charts/compare/heimdall-13.0.7...heimdall-13.0.8) (2023-01-15) + +### Chore + +- update container image tccr.io/truecharts/heimdall to v2.5.5 ([#6349](https://github.com/truecharts/charts/issues/6349)) + + + + +## [heimdall-13.0.7](https://github.com/truecharts/charts/compare/heimdall-13.0.6...heimdall-13.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [heimdall-13.0.6](https://github.com/truecharts/charts/compare/heimdall-13.0.5...heimdall-13.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [heimdall-13.0.5](https://github.com/truecharts/charts/compare/heimdall-13.0.4...heimdall-13.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [heimdall-13.0.4](https://github.com/truecharts/charts/compare/heimdall-13.0.3...heimdall-13.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [heimdall-13.0.3](https://github.com/truecharts/charts/compare/heimdall-13.0.2...heimdall-13.0.3) (2022-12-13) + diff --git a/stable/heimdall/14.0.4/Chart.yaml b/stable/heimdall/14.0.4/Chart.yaml new file mode 100644 index 00000000000..d295f194ba3 --- /dev/null +++ b/stable/heimdall/14.0.4/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "2.5.5" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: An Application dashboard and launcher +home: https://truecharts.org/charts/stable/heimdall +icon: https://truecharts.org/img/hotlink-ok/chart-icons/heimdall.png +keywords: + - heimdall +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: heimdall +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/heimdall + - https://hub.docker.com/linuxserver/heimdall + - https://github.com/linuxserver/Heimdall/ +type: application +version: 14.0.4 +annotations: + truecharts.org/catagories: | + - organizers + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/koel/6.0.22/README.md b/stable/heimdall/14.0.4/README.md similarity index 100% rename from stable/koel/6.0.22/README.md rename to stable/heimdall/14.0.4/README.md diff --git a/stable/heimdall/14.0.4/app-changelog.md b/stable/heimdall/14.0.4/app-changelog.md new file mode 100644 index 00000000000..13feea841c5 --- /dev/null +++ b/stable/heimdall/14.0.4/app-changelog.md @@ -0,0 +1,9 @@ + + +## [heimdall-14.0.4](https://github.com/truecharts/charts/compare/heimdall-14.0.3...heimdall-14.0.4) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/heimdall/14.0.4/app-readme.md b/stable/heimdall/14.0.4/app-readme.md new file mode 100644 index 00000000000..07a4cb167bc --- /dev/null +++ b/stable/heimdall/14.0.4/app-readme.md @@ -0,0 +1,8 @@ +An Application dashboard and launcher + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/heimdall](https://truecharts.org/charts/stable/heimdall) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/komga/8.0.10/charts/common-11.1.2.tgz b/stable/heimdall/14.0.4/charts/common-11.1.2.tgz similarity index 100% rename from stable/komga/8.0.10/charts/common-11.1.2.tgz rename to stable/heimdall/14.0.4/charts/common-11.1.2.tgz diff --git a/stable/heimdall/14.0.4/ix_values.yaml b/stable/heimdall/14.0.4/ix_values.yaml new file mode 100644 index 00000000000..8e5dbb6560e --- /dev/null +++ b/stable/heimdall/14.0.4/ix_values.yaml @@ -0,0 +1,31 @@ +image: + repository: tccr.io/truecharts/heimdall + tag: 2.5.5@sha256:55413b57121c82ead3030a9a1bff573126a761d7f72f16aefe1457374fe3151d + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +service: + main: + ports: + main: + port: 10014 + targetPort: 80 + +probes: + startup: + enabled: true + +persistence: + config: + enabled: true + mountPath: "/config" + +portal: + enabled: true diff --git a/stable/heimdall/14.0.4/questions.yaml b/stable/heimdall/14.0.4/questions.yaml new file mode 100644 index 00000000000..93167c71ae1 --- /dev/null +++ b/stable/heimdall/14.0.4/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10014 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/kopia/4.0.7/templates/common.yaml b/stable/heimdall/14.0.4/templates/common.yaml similarity index 100% rename from stable/kopia/4.0.7/templates/common.yaml rename to stable/heimdall/14.0.4/templates/common.yaml diff --git a/stable/komga/8.0.10/values.yaml b/stable/heimdall/14.0.4/values.yaml similarity index 100% rename from stable/komga/8.0.10/values.yaml rename to stable/heimdall/14.0.4/values.yaml diff --git a/stable/homelablabelmaker/3.0.7/CHANGELOG.md b/stable/homelablabelmaker/3.0.7/CHANGELOG.md deleted file mode 100644 index 89c3d34ab8e..00000000000 --- a/stable/homelablabelmaker/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [homelablabelmaker-3.0.7](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.6...homelablabelmaker-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [homelablabelmaker-3.0.6](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.5...homelablabelmaker-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [homelablabelmaker-3.0.5](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.4...homelablabelmaker-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [homelablabelmaker-3.0.4](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.3...homelablabelmaker-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [homelablabelmaker-3.0.3](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.2...homelablabelmaker-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - - - -## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) - - diff --git a/stable/homelablabelmaker/3.0.7/Chart.yaml b/stable/homelablabelmaker/3.0.7/Chart.yaml deleted file mode 100644 index ebb0693bd0d..00000000000 --- a/stable/homelablabelmaker/3.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Tools-Utilities - - Other -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: DIY tool to create and print labels for Dell Poweredge and HP Proliant drive caddies. -home: https://truecharts.org/charts/stable/homelablabelmaker -icon: https://truecharts.org/img/hotlink-ok/chart-icons/homelablabelmaker.png -keywords: - - homelablabelmaker - - Tools-Utilities - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: homelablabelmaker -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/homelablabelmaker - - https://github.com/DavidSpek/homelablabelmaker - - https://hub.docker.com/r/davidspek/homelablabelmaker/ -type: application -version: 3.0.7 diff --git a/stable/homelablabelmaker/3.0.7/app-changelog.md b/stable/homelablabelmaker/3.0.7/app-changelog.md deleted file mode 100644 index ce968f5783c..00000000000 --- a/stable/homelablabelmaker/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [homelablabelmaker-3.0.7](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.6...homelablabelmaker-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/homelablabelmaker/3.0.7/app-readme.md b/stable/homelablabelmaker/3.0.7/app-readme.md deleted file mode 100644 index b5cf067e847..00000000000 --- a/stable/homelablabelmaker/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -DIY tool to create and print labels for Dell Poweredge and HP Proliant drive caddies. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/homelablabelmaker](https://truecharts.org/charts/stable/homelablabelmaker) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/homelablabelmaker/3.0.7/questions.yaml b/stable/homelablabelmaker/3.0.7/questions.yaml deleted file mode 100644 index 9d584026ed9..00000000000 --- a/stable/homelablabelmaker/3.0.7/questions.yaml +++ /dev/null @@ -1,1721 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10581 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/homelablabelmaker/3.0.8/CHANGELOG.md b/stable/homelablabelmaker/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..8b35a387d2b --- /dev/null +++ b/stable/homelablabelmaker/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [homelablabelmaker-3.0.8](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.7...homelablabelmaker-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [homelablabelmaker-3.0.7](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.6...homelablabelmaker-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [homelablabelmaker-3.0.6](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.5...homelablabelmaker-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [homelablabelmaker-3.0.5](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.4...homelablabelmaker-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [homelablabelmaker-3.0.4](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.3...homelablabelmaker-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [homelablabelmaker-3.0.3](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.2...homelablabelmaker-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) + + + + +## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) + + + + +## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) + + + + +## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) + + + + +## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) + + + + +## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) + + + + +## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) + + + + +## [homelablabelmaker-3.0.2](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.1...homelablabelmaker-3.0.2) (2022-11-30) + + + diff --git a/stable/homelablabelmaker/3.0.8/Chart.yaml b/stable/homelablabelmaker/3.0.8/Chart.yaml new file mode 100644 index 00000000000..54355bd33d5 --- /dev/null +++ b/stable/homelablabelmaker/3.0.8/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Tools-Utilities + - Other +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: DIY tool to create and print labels for Dell Poweredge and HP Proliant drive caddies. +home: https://truecharts.org/charts/stable/homelablabelmaker +icon: https://truecharts.org/img/hotlink-ok/chart-icons/homelablabelmaker.png +keywords: + - homelablabelmaker + - Tools-Utilities + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: homelablabelmaker +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/homelablabelmaker + - https://hub.docker.com/davidspek/homelablabelmaker + - https://github.com/DavidSpek/homelablabelmaker +type: application +version: 3.0.8 diff --git a/stable/komga/8.0.10/README.md b/stable/homelablabelmaker/3.0.8/README.md similarity index 100% rename from stable/komga/8.0.10/README.md rename to stable/homelablabelmaker/3.0.8/README.md diff --git a/stable/homelablabelmaker/3.0.8/app-changelog.md b/stable/homelablabelmaker/3.0.8/app-changelog.md new file mode 100644 index 00000000000..2fdcc5ffd31 --- /dev/null +++ b/stable/homelablabelmaker/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [homelablabelmaker-3.0.8](https://github.com/truecharts/charts/compare/homelablabelmaker-3.0.7...homelablabelmaker-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/homelablabelmaker/3.0.8/app-readme.md b/stable/homelablabelmaker/3.0.8/app-readme.md new file mode 100644 index 00000000000..6b5f3041641 --- /dev/null +++ b/stable/homelablabelmaker/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +DIY tool to create and print labels for Dell Poweredge and HP Proliant drive caddies. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/homelablabelmaker](https://truecharts.org/charts/stable/homelablabelmaker) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/kopia/4.0.7/charts/common-11.1.2.tgz b/stable/homelablabelmaker/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/kopia/4.0.7/charts/common-11.1.2.tgz rename to stable/homelablabelmaker/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/homelablabelmaker/3.0.7/ix_values.yaml b/stable/homelablabelmaker/3.0.8/ix_values.yaml similarity index 100% rename from stable/homelablabelmaker/3.0.7/ix_values.yaml rename to stable/homelablabelmaker/3.0.8/ix_values.yaml diff --git a/stable/homelablabelmaker/3.0.8/questions.yaml b/stable/homelablabelmaker/3.0.8/questions.yaml new file mode 100644 index 00000000000..2a9448ac7e7 --- /dev/null +++ b/stable/homelablabelmaker/3.0.8/questions.yaml @@ -0,0 +1,1762 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10581 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/homelablabelmaker/3.0.7/templates/common.yaml b/stable/homelablabelmaker/3.0.8/templates/common.yaml similarity index 100% rename from stable/homelablabelmaker/3.0.7/templates/common.yaml rename to stable/homelablabelmaker/3.0.8/templates/common.yaml diff --git a/stable/kopia/4.0.7/values.yaml b/stable/homelablabelmaker/3.0.8/values.yaml similarity index 100% rename from stable/kopia/4.0.7/values.yaml rename to stable/homelablabelmaker/3.0.8/values.yaml diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/CHANGELOG.md b/stable/icantbelieveitsnotvaletudo/6.0.7/CHANGELOG.md deleted file mode 100644 index c9b49360524..00000000000 --- a/stable/icantbelieveitsnotvaletudo/6.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [icantbelieveitsnotvaletudo-6.0.7](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.6...icantbelieveitsnotvaletudo-6.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [icantbelieveitsnotvaletudo-6.0.6](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.5...icantbelieveitsnotvaletudo-6.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [icantbelieveitsnotvaletudo-6.0.5](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.4...icantbelieveitsnotvaletudo-6.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [icantbelieveitsnotvaletudo-6.0.4](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.3...icantbelieveitsnotvaletudo-6.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [icantbelieveitsnotvaletudo-6.0.3](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.2...icantbelieveitsnotvaletudo-6.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - - - -## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) - - diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/Chart.yaml b/stable/icantbelieveitsnotvaletudo/6.0.7/Chart.yaml deleted file mode 100644 index 0faa5e4a1b3..00000000000 --- a/stable/icantbelieveitsnotvaletudo/6.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "2021.2.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Create live map data from Valetudo powered robots -home: https://truecharts.org/charts/stable/icantbelieveitsnotvaletudo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/icantbelieveitsnotvaletudo.png -keywords: - - icantbelieveitsnotvaletudo - - MQTT - - valetudo - - iot -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: icantbelieveitsnotvaletudo -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/icantbelieveitsnotvaletudo - - https://github.com/Hypfer/ICantBelieveItsNotValetudo -version: 6.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/app-changelog.md b/stable/icantbelieveitsnotvaletudo/6.0.7/app-changelog.md deleted file mode 100644 index 605130e5d7b..00000000000 --- a/stable/icantbelieveitsnotvaletudo/6.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [icantbelieveitsnotvaletudo-6.0.7](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.6...icantbelieveitsnotvaletudo-6.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/app-readme.md b/stable/icantbelieveitsnotvaletudo/6.0.7/app-readme.md deleted file mode 100644 index 996b1478f02..00000000000 --- a/stable/icantbelieveitsnotvaletudo/6.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Create live map data from Valetudo powered robots - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/icantbelieveitsnotvaletudo](https://truecharts.org/charts/stable/icantbelieveitsnotvaletudo) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/questions.yaml b/stable/icantbelieveitsnotvaletudo/6.0.7/questions.yaml deleted file mode 100644 index 04a479a1d87..00000000000 --- a/stable/icantbelieveitsnotvaletudo/6.0.7/questions.yaml +++ /dev/null @@ -1,1914 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: config - group: "App Configuration" - label: "Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: mapsettings - label: "Map Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: drawPath - label: "drawPath" - schema: - type: boolean - default: true - - variable: drawCharger - label: "drawCharger" - schema: - type: boolean - default: true - - variable: drawRobot - label: "drawRobot" - schema: - type: boolean - default: true - - variable: scale - label: "scale" - schema: - type: int - default: 2 - - variable: mqtt - label: "MQTT Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: identifier - label: "identifier" - schema: - type: string - default: "rockrobo" - - variable: topicPrefix - label: "topicPrefix" - schema: - type: string - default: "valetudo" - - variable: autoconfPrefix - label: "autoconfPrefix" - schema: - type: string - default: "homeassistant" - - variable: broker_url - label: "broker_url" - schema: - type: string - default: "mqtt://user:pass@example.com:port" - - variable: mapDataTopic - label: "mapDataTopic" - schema: - type: string - default: "valetudo/rockrobo/map_data" - - variable: minMillisecondsBetweenMapUpdates - label: "minMillisecondsBetweenMapUpdates" - schema: - type: int - default: 10000 - - variable: publishMapImage - label: "publishMapImage" - schema: - type: boolean - default: true - - variable: webserver - label: "Webserver Settings" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: "enabled" - schema: - type: boolean - default: true - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10039 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/icantbelieveitsnotvaletudo/6.0.8/CHANGELOG.md b/stable/icantbelieveitsnotvaletudo/6.0.8/CHANGELOG.md new file mode 100644 index 00000000000..229f186f70a --- /dev/null +++ b/stable/icantbelieveitsnotvaletudo/6.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [icantbelieveitsnotvaletudo-6.0.8](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.7...icantbelieveitsnotvaletudo-6.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [icantbelieveitsnotvaletudo-6.0.7](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.6...icantbelieveitsnotvaletudo-6.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [icantbelieveitsnotvaletudo-6.0.6](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.5...icantbelieveitsnotvaletudo-6.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [icantbelieveitsnotvaletudo-6.0.5](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.4...icantbelieveitsnotvaletudo-6.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [icantbelieveitsnotvaletudo-6.0.4](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.3...icantbelieveitsnotvaletudo-6.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [icantbelieveitsnotvaletudo-6.0.3](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.2...icantbelieveitsnotvaletudo-6.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) + + + + +## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) + + + + +## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) + + + + +## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) + + + + +## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) + + + + +## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) + + + + +## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) + + + + +## [icantbelieveitsnotvaletudo-6.0.2](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.1...icantbelieveitsnotvaletudo-6.0.2) (2022-11-30) + + + diff --git a/stable/icantbelieveitsnotvaletudo/6.0.8/Chart.yaml b/stable/icantbelieveitsnotvaletudo/6.0.8/Chart.yaml new file mode 100644 index 00000000000..867b9ce78d0 --- /dev/null +++ b/stable/icantbelieveitsnotvaletudo/6.0.8/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "2021.2.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Create live map data from Valetudo powered robots +home: https://truecharts.org/charts/stable/icantbelieveitsnotvaletudo +icon: https://truecharts.org/img/hotlink-ok/chart-icons/icantbelieveitsnotvaletudo.png +keywords: + - icantbelieveitsnotvaletudo + - MQTT + - valetudo + - iot +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: icantbelieveitsnotvaletudo +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/icantbelieveitsnotvaletudo + - https://hub.docker.com/pmaksymiuk/icantbelieveitsnotvaletudo + - https://github.com/Hypfer/ICantBelieveItsNotValetudo +version: 6.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/kopia/4.0.7/README.md b/stable/icantbelieveitsnotvaletudo/6.0.8/README.md similarity index 100% rename from stable/kopia/4.0.7/README.md rename to stable/icantbelieveitsnotvaletudo/6.0.8/README.md diff --git a/stable/icantbelieveitsnotvaletudo/6.0.8/app-changelog.md b/stable/icantbelieveitsnotvaletudo/6.0.8/app-changelog.md new file mode 100644 index 00000000000..8df1138a9b8 --- /dev/null +++ b/stable/icantbelieveitsnotvaletudo/6.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [icantbelieveitsnotvaletudo-6.0.8](https://github.com/truecharts/charts/compare/icantbelieveitsnotvaletudo-6.0.7...icantbelieveitsnotvaletudo-6.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/icantbelieveitsnotvaletudo/6.0.8/app-readme.md b/stable/icantbelieveitsnotvaletudo/6.0.8/app-readme.md new file mode 100644 index 00000000000..101da94db89 --- /dev/null +++ b/stable/icantbelieveitsnotvaletudo/6.0.8/app-readme.md @@ -0,0 +1,8 @@ +Create live map data from Valetudo powered robots + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/icantbelieveitsnotvaletudo](https://truecharts.org/charts/stable/icantbelieveitsnotvaletudo) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/kutt/6.0.20/charts/common-11.1.2.tgz b/stable/icantbelieveitsnotvaletudo/6.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/kutt/6.0.20/charts/common-11.1.2.tgz rename to stable/icantbelieveitsnotvaletudo/6.0.8/charts/common-11.1.2.tgz diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/ix_values.yaml b/stable/icantbelieveitsnotvaletudo/6.0.8/ix_values.yaml similarity index 100% rename from stable/icantbelieveitsnotvaletudo/6.0.7/ix_values.yaml rename to stable/icantbelieveitsnotvaletudo/6.0.8/ix_values.yaml diff --git a/stable/icantbelieveitsnotvaletudo/6.0.8/questions.yaml b/stable/icantbelieveitsnotvaletudo/6.0.8/questions.yaml new file mode 100644 index 00000000000..d4edb718dc2 --- /dev/null +++ b/stable/icantbelieveitsnotvaletudo/6.0.8/questions.yaml @@ -0,0 +1,1955 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: config + group: "App Configuration" + label: "Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: mapsettings + label: "Map Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drawPath + label: "drawPath" + schema: + type: boolean + default: true + - variable: drawCharger + label: "drawCharger" + schema: + type: boolean + default: true + - variable: drawRobot + label: "drawRobot" + schema: + type: boolean + default: true + - variable: scale + label: "scale" + schema: + type: int + default: 2 + - variable: mqtt + label: "MQTT Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: identifier + label: "identifier" + schema: + type: string + default: "rockrobo" + - variable: topicPrefix + label: "topicPrefix" + schema: + type: string + default: "valetudo" + - variable: autoconfPrefix + label: "autoconfPrefix" + schema: + type: string + default: "homeassistant" + - variable: broker_url + label: "broker_url" + schema: + type: string + default: "mqtt://user:pass@example.com:port" + - variable: mapDataTopic + label: "mapDataTopic" + schema: + type: string + default: "valetudo/rockrobo/map_data" + - variable: minMillisecondsBetweenMapUpdates + label: "minMillisecondsBetweenMapUpdates" + schema: + type: int + default: 10000 + - variable: publishMapImage + label: "publishMapImage" + schema: + type: boolean + default: true + - variable: webserver + label: "Webserver Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10039 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/icantbelieveitsnotvaletudo/6.0.7/templates/common.yaml b/stable/icantbelieveitsnotvaletudo/6.0.8/templates/common.yaml similarity index 100% rename from stable/icantbelieveitsnotvaletudo/6.0.7/templates/common.yaml rename to stable/icantbelieveitsnotvaletudo/6.0.8/templates/common.yaml diff --git a/stable/kutt/6.0.20/values.yaml b/stable/icantbelieveitsnotvaletudo/6.0.8/values.yaml similarity index 100% rename from stable/kutt/6.0.20/values.yaml rename to stable/icantbelieveitsnotvaletudo/6.0.8/values.yaml diff --git a/stable/impostor-server/3.0.12/CHANGELOG.md b/stable/impostor-server/3.0.12/CHANGELOG.md deleted file mode 100644 index 4c35124d160..00000000000 --- a/stable/impostor-server/3.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [impostor-server-3.0.12](https://github.com/truecharts/charts/compare/impostor-server-3.0.11...impostor-server-3.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/impostor-server-nightly to vnightly - - - - -## [impostor-server-3.0.11](https://github.com/truecharts/charts/compare/impostor-server-3.0.10...impostor-server-3.0.11) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/impostor-server-nightly to vnightly - - - - -## [impostor-server-3.0.10](https://github.com/truecharts/charts/compare/impostor-server-3.0.9...impostor-server-3.0.10) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/impostor-server-nightly to vnightly ([#6037](https://github.com/truecharts/charts/issues/6037)) - - - - -## [impostor-server-3.0.9](https://github.com/truecharts/charts/compare/impostor-server-3.0.8...impostor-server-3.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [impostor-server-3.0.8](https://github.com/truecharts/charts/compare/impostor-server-3.0.7...impostor-server-3.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [impostor-server-3.0.7](https://github.com/truecharts/charts/compare/impostor-server-3.0.6...impostor-server-3.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [impostor-server-3.0.6](https://github.com/truecharts/charts/compare/impostor-server-3.0.5...impostor-server-3.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [impostor-server-3.0.5](https://github.com/truecharts/charts/compare/impostor-server-3.0.4...impostor-server-3.0.5) (2022-12-19) - -### Chore - -- update container image tccr.io/truecharts/impostor-server-nightly to vnightly - - - - -## [impostor-server-3.0.4](https://github.com/truecharts/charts/compare/impostor-server-3.0.3...impostor-server-3.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [impostor-server-3.0.3](https://github.com/truecharts/charts/compare/impostor-server-3.0.2...impostor-server-3.0.3) (2022-12-08) - -### Chore - -- update container image tccr.io/truecharts/impostor-server to v1.7.3 - - - - -## [impostor-server-3.0.2](https://github.com/truecharts/charts/compare/impostor-server-3.0.1...impostor-server-3.0.2) (2022-11-30) - - diff --git a/stable/impostor-server/3.0.12/Chart.yaml b/stable/impostor-server/3.0.12/Chart.yaml deleted file mode 100644 index 86e08739f2a..00000000000 --- a/stable/impostor-server/3.0.12/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.7.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A private Among Us server -home: https://truecharts.org/charts/stable/impostor-server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/impostor-server.png -keywords: - - impostor-server -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: impostor-server -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/impostor-server -type: application -version: 3.0.12 -annotations: - truecharts.org/catagories: | - - games - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/impostor-server/3.0.12/app-changelog.md b/stable/impostor-server/3.0.12/app-changelog.md deleted file mode 100644 index 5a1ae41a12e..00000000000 --- a/stable/impostor-server/3.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [impostor-server-3.0.12](https://github.com/truecharts/charts/compare/impostor-server-3.0.11...impostor-server-3.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/impostor-server-nightly to vnightly - - \ No newline at end of file diff --git a/stable/impostor-server/3.0.13/CHANGELOG.md b/stable/impostor-server/3.0.13/CHANGELOG.md new file mode 100644 index 00000000000..5b9ad933cfe --- /dev/null +++ b/stable/impostor-server/3.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [impostor-server-3.0.13](https://github.com/truecharts/charts/compare/impostor-server-3.0.12...impostor-server-3.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [impostor-server-3.0.12](https://github.com/truecharts/charts/compare/impostor-server-3.0.11...impostor-server-3.0.12) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/impostor-server-nightly to vnightly + + + + +## [impostor-server-3.0.11](https://github.com/truecharts/charts/compare/impostor-server-3.0.10...impostor-server-3.0.11) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/impostor-server-nightly to vnightly + + + + +## [impostor-server-3.0.10](https://github.com/truecharts/charts/compare/impostor-server-3.0.9...impostor-server-3.0.10) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/impostor-server-nightly to vnightly ([#6037](https://github.com/truecharts/charts/issues/6037)) + + + + +## [impostor-server-3.0.9](https://github.com/truecharts/charts/compare/impostor-server-3.0.8...impostor-server-3.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [impostor-server-3.0.8](https://github.com/truecharts/charts/compare/impostor-server-3.0.7...impostor-server-3.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [impostor-server-3.0.7](https://github.com/truecharts/charts/compare/impostor-server-3.0.6...impostor-server-3.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [impostor-server-3.0.6](https://github.com/truecharts/charts/compare/impostor-server-3.0.5...impostor-server-3.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [impostor-server-3.0.5](https://github.com/truecharts/charts/compare/impostor-server-3.0.4...impostor-server-3.0.5) (2022-12-19) + +### Chore + +- update container image tccr.io/truecharts/impostor-server-nightly to vnightly + + + + +## [impostor-server-3.0.4](https://github.com/truecharts/charts/compare/impostor-server-3.0.3...impostor-server-3.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [impostor-server-3.0.3](https://github.com/truecharts/charts/compare/impostor-server-3.0.2...impostor-server-3.0.3) (2022-12-08) + +### Chore diff --git a/stable/impostor-server/3.0.13/Chart.yaml b/stable/impostor-server/3.0.13/Chart.yaml new file mode 100644 index 00000000000..1b774290b01 --- /dev/null +++ b/stable/impostor-server/3.0.13/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "1.7.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A private Among Us server +home: https://truecharts.org/charts/stable/impostor-server +icon: https://truecharts.org/img/hotlink-ok/chart-icons/impostor-server.png +keywords: + - impostor-server +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: impostor-server +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/impostor-server + - https://hub.docker.com/aeonlucid/impostor +type: application +version: 3.0.13 +annotations: + truecharts.org/catagories: | + - games + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/kutt/6.0.20/README.md b/stable/impostor-server/3.0.13/README.md similarity index 100% rename from stable/kutt/6.0.20/README.md rename to stable/impostor-server/3.0.13/README.md diff --git a/stable/impostor-server/3.0.13/app-changelog.md b/stable/impostor-server/3.0.13/app-changelog.md new file mode 100644 index 00000000000..8045da9c2c6 --- /dev/null +++ b/stable/impostor-server/3.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [impostor-server-3.0.13](https://github.com/truecharts/charts/compare/impostor-server-3.0.12...impostor-server-3.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/impostor-server/3.0.12/app-readme.md b/stable/impostor-server/3.0.13/app-readme.md similarity index 100% rename from stable/impostor-server/3.0.12/app-readme.md rename to stable/impostor-server/3.0.13/app-readme.md diff --git a/stable/lancache-monolithic/3.0.9/charts/common-11.1.2.tgz b/stable/impostor-server/3.0.13/charts/common-11.1.2.tgz similarity index 100% rename from stable/lancache-monolithic/3.0.9/charts/common-11.1.2.tgz rename to stable/impostor-server/3.0.13/charts/common-11.1.2.tgz diff --git a/stable/impostor-server/3.0.12/ix_values.yaml b/stable/impostor-server/3.0.13/ix_values.yaml similarity index 100% rename from stable/impostor-server/3.0.12/ix_values.yaml rename to stable/impostor-server/3.0.13/ix_values.yaml diff --git a/stable/impostor-server/3.0.12/questions.yaml b/stable/impostor-server/3.0.13/questions.yaml similarity index 100% rename from stable/impostor-server/3.0.12/questions.yaml rename to stable/impostor-server/3.0.13/questions.yaml diff --git a/stable/lancache-monolithic/3.0.9/templates/common.yaml b/stable/impostor-server/3.0.13/templates/common.yaml similarity index 100% rename from stable/lancache-monolithic/3.0.9/templates/common.yaml rename to stable/impostor-server/3.0.13/templates/common.yaml diff --git a/stable/lancache-monolithic/3.0.9/values.yaml b/stable/impostor-server/3.0.13/values.yaml similarity index 100% rename from stable/lancache-monolithic/3.0.9/values.yaml rename to stable/impostor-server/3.0.13/values.yaml diff --git a/stable/inventree/7.0.27/CHANGELOG.md b/stable/inventree/7.0.27/CHANGELOG.md deleted file mode 100644 index 818d37140b5..00000000000 --- a/stable/inventree/7.0.27/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [inventree-7.0.27](https://github.com/truecharts/charts/compare/inventree-7.0.26...inventree-7.0.27) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [inventree-7.0.26](https://github.com/truecharts/charts/compare/inventree-7.0.25...inventree-7.0.26) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [inventree-7.0.25](https://github.com/truecharts/charts/compare/inventree-7.0.24...inventree-7.0.25) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/nginx to 1.23.3 - - - - -## [inventree-7.0.24](https://github.com/truecharts/charts/compare/inventree-7.0.23...inventree-7.0.24) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [inventree-7.0.23](https://github.com/truecharts/charts/compare/inventree-7.0.22...inventree-7.0.23) (2023-01-13) - -### Chore - -- update container image tccr.io/truecharts/nginx to 1.23.3 - - - - -## [inventree-7.0.22](https://github.com/truecharts/charts/compare/inventree-7.0.21...inventree-7.0.22) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [inventree-7.0.21](https://github.com/truecharts/charts/compare/inventree-7.0.20...inventree-7.0.21) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [inventree-7.0.20](https://github.com/truecharts/charts/compare/inventree-7.0.19...inventree-7.0.20) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [inventree-7.0.19](https://github.com/truecharts/charts/compare/inventree-7.0.18...inventree-7.0.19) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [inventree-7.0.18](https://github.com/truecharts/charts/compare/inventree-7.0.17...inventree-7.0.18) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [inventree-7.0.17](https://github.com/truecharts/charts/compare/inventree-7.0.16...inventree-7.0.17) (2022-12-25) - -### Chore diff --git a/stable/inventree/7.0.27/Chart.yaml b/stable/inventree/7.0.27/Chart.yaml deleted file mode 100644 index a5ec1ea24b9..00000000000 --- a/stable/inventree/7.0.27/Chart.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: v2 -appVersion: "0.8.4" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -description: InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. -home: https://truecharts.org/charts/stable/inventree -icon: https://truecharts.org/img/hotlink-ok/chart-icons/inventree.png -keywords: - - inventory - - inventree -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: inventree -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/inventree - - https://inventree.readthedocs.io - - https://github.com/inventree/InvenTree -version: 7.0.27 -annotations: - truecharts.org/catagories: | - - utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/inventree/7.0.27/app-changelog.md b/stable/inventree/7.0.27/app-changelog.md deleted file mode 100644 index 2176587de72..00000000000 --- a/stable/inventree/7.0.27/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [inventree-7.0.27](https://github.com/truecharts/charts/compare/inventree-7.0.26...inventree-7.0.27) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/inventree/7.0.28/CHANGELOG.md b/stable/inventree/7.0.28/CHANGELOG.md new file mode 100644 index 00000000000..2b77c89a8ff --- /dev/null +++ b/stable/inventree/7.0.28/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [inventree-7.0.28](https://github.com/truecharts/charts/compare/inventree-7.0.27...inventree-7.0.28) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [inventree-7.0.27](https://github.com/truecharts/charts/compare/inventree-7.0.26...inventree-7.0.27) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [inventree-7.0.26](https://github.com/truecharts/charts/compare/inventree-7.0.25...inventree-7.0.26) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [inventree-7.0.25](https://github.com/truecharts/charts/compare/inventree-7.0.24...inventree-7.0.25) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/nginx to 1.23.3 + + + + +## [inventree-7.0.24](https://github.com/truecharts/charts/compare/inventree-7.0.23...inventree-7.0.24) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [inventree-7.0.23](https://github.com/truecharts/charts/compare/inventree-7.0.22...inventree-7.0.23) (2023-01-13) + +### Chore + +- update container image tccr.io/truecharts/nginx to 1.23.3 + + + + +## [inventree-7.0.22](https://github.com/truecharts/charts/compare/inventree-7.0.21...inventree-7.0.22) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [inventree-7.0.21](https://github.com/truecharts/charts/compare/inventree-7.0.20...inventree-7.0.21) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [inventree-7.0.20](https://github.com/truecharts/charts/compare/inventree-7.0.19...inventree-7.0.20) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [inventree-7.0.19](https://github.com/truecharts/charts/compare/inventree-7.0.18...inventree-7.0.19) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [inventree-7.0.18](https://github.com/truecharts/charts/compare/inventree-7.0.17...inventree-7.0.18) (2022-12-25) + +### Chore diff --git a/stable/inventree/7.0.28/Chart.yaml b/stable/inventree/7.0.28/Chart.yaml new file mode 100644 index 00000000000..818001030c5 --- /dev/null +++ b/stable/inventree/7.0.28/Chart.yaml @@ -0,0 +1,37 @@ +apiVersion: v2 +appVersion: "0.8.4" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: InvenTree is an open-source Inventory Management System which provides powerful low-level stock control and part tracking. +home: https://truecharts.org/charts/stable/inventree +icon: https://truecharts.org/img/hotlink-ok/chart-icons/inventree.png +keywords: + - inventory + - inventree +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: inventree +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/inventree + - https://hub.docker.com/inventree/inventree + - https://inventree.readthedocs.io + - https://github.com/inventree/InvenTree +version: 7.0.28 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/lancache-monolithic/3.0.9/README.md b/stable/inventree/7.0.28/README.md similarity index 100% rename from stable/lancache-monolithic/3.0.9/README.md rename to stable/inventree/7.0.28/README.md diff --git a/stable/inventree/7.0.28/app-changelog.md b/stable/inventree/7.0.28/app-changelog.md new file mode 100644 index 00000000000..d3bdc5ed651 --- /dev/null +++ b/stable/inventree/7.0.28/app-changelog.md @@ -0,0 +1,9 @@ + + +## [inventree-7.0.28](https://github.com/truecharts/charts/compare/inventree-7.0.27...inventree-7.0.28) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/inventree/7.0.27/app-readme.md b/stable/inventree/7.0.28/app-readme.md similarity index 100% rename from stable/inventree/7.0.27/app-readme.md rename to stable/inventree/7.0.28/app-readme.md diff --git a/stable/lanraragi/4.0.9/charts/common-11.1.2.tgz b/stable/inventree/7.0.28/charts/common-11.1.2.tgz similarity index 100% rename from stable/lanraragi/4.0.9/charts/common-11.1.2.tgz rename to stable/inventree/7.0.28/charts/common-11.1.2.tgz diff --git a/stable/nocodb/6.0.27/charts/postgresql-11.0.22.tgz b/stable/inventree/7.0.28/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/nocodb/6.0.27/charts/postgresql-11.0.22.tgz rename to stable/inventree/7.0.28/charts/postgresql-11.0.22.tgz diff --git a/stable/kutt/6.0.20/charts/redis-5.0.29.tgz b/stable/inventree/7.0.28/charts/redis-5.0.29.tgz similarity index 100% rename from stable/kutt/6.0.20/charts/redis-5.0.29.tgz rename to stable/inventree/7.0.28/charts/redis-5.0.29.tgz diff --git a/stable/inventree/7.0.27/ix_values.yaml b/stable/inventree/7.0.28/ix_values.yaml similarity index 100% rename from stable/inventree/7.0.27/ix_values.yaml rename to stable/inventree/7.0.28/ix_values.yaml diff --git a/stable/inventree/7.0.27/questions.yaml b/stable/inventree/7.0.28/questions.yaml similarity index 100% rename from stable/inventree/7.0.27/questions.yaml rename to stable/inventree/7.0.28/questions.yaml diff --git a/stable/inventree/7.0.27/templates/_configmap.tpl b/stable/inventree/7.0.28/templates/_configmap.tpl similarity index 100% rename from stable/inventree/7.0.27/templates/_configmap.tpl rename to stable/inventree/7.0.28/templates/_configmap.tpl diff --git a/stable/inventree/7.0.27/templates/_init.tpl b/stable/inventree/7.0.28/templates/_init.tpl similarity index 100% rename from stable/inventree/7.0.27/templates/_init.tpl rename to stable/inventree/7.0.28/templates/_init.tpl diff --git a/stable/inventree/7.0.27/templates/_nginx.tpl b/stable/inventree/7.0.28/templates/_nginx.tpl similarity index 100% rename from stable/inventree/7.0.27/templates/_nginx.tpl rename to stable/inventree/7.0.28/templates/_nginx.tpl diff --git a/stable/inventree/7.0.27/templates/_secrets.tpl b/stable/inventree/7.0.28/templates/_secrets.tpl similarity index 100% rename from stable/inventree/7.0.27/templates/_secrets.tpl rename to stable/inventree/7.0.28/templates/_secrets.tpl diff --git a/stable/inventree/7.0.27/templates/_worker.tpl b/stable/inventree/7.0.28/templates/_worker.tpl similarity index 100% rename from stable/inventree/7.0.27/templates/_worker.tpl rename to stable/inventree/7.0.28/templates/_worker.tpl diff --git a/stable/inventree/7.0.27/templates/common.yaml b/stable/inventree/7.0.28/templates/common.yaml similarity index 100% rename from stable/inventree/7.0.27/templates/common.yaml rename to stable/inventree/7.0.28/templates/common.yaml diff --git a/stable/lanraragi/4.0.9/values.yaml b/stable/inventree/7.0.28/values.yaml similarity index 100% rename from stable/lanraragi/4.0.9/values.yaml rename to stable/inventree/7.0.28/values.yaml diff --git a/stable/ipfs/5.0.12/CHANGELOG.md b/stable/ipfs/5.0.12/CHANGELOG.md deleted file mode 100644 index 5c0f51e8bd7..00000000000 --- a/stable/ipfs/5.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ipfs-5.0.12](https://github.com/truecharts/charts/compare/ipfs-5.0.11...ipfs-5.0.12) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/ipfs to v0.18.1 - - - - -## [ipfs-5.0.11](https://github.com/truecharts/charts/compare/ipfs-5.0.10...ipfs-5.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [ipfs-5.0.10](https://github.com/truecharts/charts/compare/ipfs-5.0.9...ipfs-5.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [ipfs-5.0.9](https://github.com/truecharts/charts/compare/ipfs-5.0.8...ipfs-5.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [ipfs-5.0.8](https://github.com/truecharts/charts/compare/ipfs-5.0.7...ipfs-5.0.8) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [ipfs-5.0.7](https://github.com/truecharts/charts/compare/ipfs-5.0.6...ipfs-5.0.7) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) - - - - -## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) - - - - -## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) - - - - -## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) - - - - -## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) - - - - -## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) - - - - -## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) - - - - -## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) - - - diff --git a/stable/ipfs/5.0.12/Chart.yaml b/stable/ipfs/5.0.12/Chart.yaml deleted file mode 100644 index e112b382ceb..00000000000 --- a/stable/ipfs/5.0.12/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "0.18.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: IPFS is a global, versioned, peer-to-peer Interplanetary Filesystem. -home: https://truecharts.org/charts/stable/ipfs -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ipfs.png -keywords: - - ipfs - - kubo -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ipfs -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/ipfs - - https://hub.docker.com/r/ipfs/kubo/ - - https://github.com/ipfs/kubo -type: application -version: 5.0.12 -annotations: - truecharts.org/catagories: | - - storage - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/ipfs/5.0.12/app-changelog.md b/stable/ipfs/5.0.12/app-changelog.md deleted file mode 100644 index 149da236b2f..00000000000 --- a/stable/ipfs/5.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ipfs-5.0.12](https://github.com/truecharts/charts/compare/ipfs-5.0.11...ipfs-5.0.12) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/ipfs to v0.18.1 - - \ No newline at end of file diff --git a/stable/ipfs/5.0.13/CHANGELOG.md b/stable/ipfs/5.0.13/CHANGELOG.md new file mode 100644 index 00000000000..d3df88c3a79 --- /dev/null +++ b/stable/ipfs/5.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ipfs-5.0.13](https://github.com/truecharts/charts/compare/ipfs-5.0.12...ipfs-5.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ipfs-5.0.12](https://github.com/truecharts/charts/compare/ipfs-5.0.11...ipfs-5.0.12) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/ipfs to v0.18.1 + + + + +## [ipfs-5.0.11](https://github.com/truecharts/charts/compare/ipfs-5.0.10...ipfs-5.0.11) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [ipfs-5.0.10](https://github.com/truecharts/charts/compare/ipfs-5.0.9...ipfs-5.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [ipfs-5.0.9](https://github.com/truecharts/charts/compare/ipfs-5.0.8...ipfs-5.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [ipfs-5.0.8](https://github.com/truecharts/charts/compare/ipfs-5.0.7...ipfs-5.0.8) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [ipfs-5.0.7](https://github.com/truecharts/charts/compare/ipfs-5.0.6...ipfs-5.0.7) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) + + + + +## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) + + + + +## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) + + + + +## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) + + + + +## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) + + + + +## [ipfs-5.0.6](https://github.com/truecharts/charts/compare/ipfs-5.0.5...ipfs-5.0.6) (2022-11-30) + + + + diff --git a/stable/ipfs/5.0.13/Chart.yaml b/stable/ipfs/5.0.13/Chart.yaml new file mode 100644 index 00000000000..28a1f4fb550 --- /dev/null +++ b/stable/ipfs/5.0.13/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "0.18.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: IPFS is a global, versioned, peer-to-peer Interplanetary Filesystem. +home: https://truecharts.org/charts/stable/ipfs +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ipfs.png +keywords: + - ipfs + - kubo +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ipfs +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/ipfs + - https://hub.docker.com/ipfs/kubo + - https://github.com/ipfs/kubo +type: application +version: 5.0.13 +annotations: + truecharts.org/catagories: | + - storage + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/lanraragi/4.0.9/README.md b/stable/ipfs/5.0.13/README.md similarity index 100% rename from stable/lanraragi/4.0.9/README.md rename to stable/ipfs/5.0.13/README.md diff --git a/stable/ipfs/5.0.13/app-changelog.md b/stable/ipfs/5.0.13/app-changelog.md new file mode 100644 index 00000000000..d40f17d8fde --- /dev/null +++ b/stable/ipfs/5.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ipfs-5.0.13](https://github.com/truecharts/charts/compare/ipfs-5.0.12...ipfs-5.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/ipfs/5.0.12/app-readme.md b/stable/ipfs/5.0.13/app-readme.md similarity index 100% rename from stable/ipfs/5.0.12/app-readme.md rename to stable/ipfs/5.0.13/app-readme.md diff --git a/stable/leantime/7.0.22/charts/common-11.1.2.tgz b/stable/ipfs/5.0.13/charts/common-11.1.2.tgz similarity index 100% rename from stable/leantime/7.0.22/charts/common-11.1.2.tgz rename to stable/ipfs/5.0.13/charts/common-11.1.2.tgz diff --git a/stable/ipfs/5.0.12/ix_values.yaml b/stable/ipfs/5.0.13/ix_values.yaml similarity index 100% rename from stable/ipfs/5.0.12/ix_values.yaml rename to stable/ipfs/5.0.13/ix_values.yaml diff --git a/stable/ipfs/5.0.12/questions.yaml b/stable/ipfs/5.0.13/questions.yaml similarity index 100% rename from stable/ipfs/5.0.12/questions.yaml rename to stable/ipfs/5.0.13/questions.yaml diff --git a/stable/ipfs/5.0.12/templates/common.yaml b/stable/ipfs/5.0.13/templates/common.yaml similarity index 100% rename from stable/ipfs/5.0.12/templates/common.yaml rename to stable/ipfs/5.0.13/templates/common.yaml diff --git a/stable/leantime/7.0.22/values.yaml b/stable/ipfs/5.0.13/values.yaml similarity index 100% rename from stable/leantime/7.0.22/values.yaml rename to stable/ipfs/5.0.13/values.yaml diff --git a/stable/ispy-agent-dvr/4.0.13/CHANGELOG.md b/stable/ispy-agent-dvr/4.0.13/CHANGELOG.md deleted file mode 100644 index f230ebd27c4..00000000000 --- a/stable/ispy-agent-dvr/4.0.13/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ispy-agent-dvr-4.0.13](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.12...ispy-agent-dvr-4.0.13) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.6.0 - - - - -## [ispy-agent-dvr-4.0.12](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.11...ispy-agent-dvr-4.0.12) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [ispy-agent-dvr-4.0.11](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.10...ispy-agent-dvr-4.0.11) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [ispy-agent-dvr-4.0.10](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.9...ispy-agent-dvr-4.0.10) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [ispy-agent-dvr-4.0.9](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.8...ispy-agent-dvr-4.0.9) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.5.0 - - - - -## [ispy-agent-dvr-4.0.8](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.7...ispy-agent-dvr-4.0.8) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [ispy-agent-dvr-4.0.7](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.6...ispy-agent-dvr-4.0.7) (2022-12-17) - -### Chore - -- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.4.0 - - - - -## [ispy-agent-dvr-4.0.6](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.5...ispy-agent-dvr-4.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [ispy-agent-dvr-4.0.5](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.4...ispy-agent-dvr-4.0.5) (2022-12-08) - -### Chore - -- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.3.0 - - - - -## [ispy-agent-dvr-4.0.4](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.2...ispy-agent-dvr-4.0.4) (2022-11-30) - - - - -## [ispy-agent-dvr-4.0.4](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.2...ispy-agent-dvr-4.0.4) (2022-11-30) - - - - -## [ispy-agent-dvr-4.0.4](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.2...ispy-agent-dvr-4.0.4) (2022-11-30) - diff --git a/stable/ispy-agent-dvr/4.0.13/Chart.yaml b/stable/ispy-agent-dvr/4.0.13/Chart.yaml deleted file mode 100644 index 212c318e4b0..00000000000 --- a/stable/ispy-agent-dvr/4.0.13/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "4.4.6.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: iSpy's Agent DVR, a standalone DVR service to manage IP cameras. -home: https://truecharts.org/charts/stable/ispy-agent-dvr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ispy-agent-dvr.png -keywords: - - dvr - - ispy - - agent -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ispy-agent-dvr -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/ispy-agent-dvr - - https://hub.docker.com/r/doitandbedone/ispyagentdvr - - https://github.com/doitandbedone/ispyagentdvr-docker -version: 4.0.13 -annotations: - truecharts.org/catagories: | - - security - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/ispy-agent-dvr/4.0.13/app-changelog.md b/stable/ispy-agent-dvr/4.0.13/app-changelog.md deleted file mode 100644 index a1f75fc955a..00000000000 --- a/stable/ispy-agent-dvr/4.0.13/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ispy-agent-dvr-4.0.13](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.12...ispy-agent-dvr-4.0.13) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.6.0 - - \ No newline at end of file diff --git a/stable/ispy-agent-dvr/4.0.13/app-readme.md b/stable/ispy-agent-dvr/4.0.13/app-readme.md deleted file mode 100644 index 4bd0a6e831c..00000000000 --- a/stable/ispy-agent-dvr/4.0.13/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -iSpy's Agent DVR, a standalone DVR service to manage IP cameras. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/ispy-agent-dvr](https://truecharts.org/charts/stable/ispy-agent-dvr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/ispy-agent-dvr/4.0.13/questions.yaml b/stable/ispy-agent-dvr/4.0.13/questions.yaml deleted file mode 100644 index 9930f0db06f..00000000000 --- a/stable/ispy-agent-dvr/4.0.13/questions.yaml +++ /dev/null @@ -1,2074 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10184 - required: true - - variable: turn - label: "TURN Service" - description: "TURN Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: turn - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3478 - required: true - - variable: webrtc - label: "Web RTC" - description: "Web RTC" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: webrtc0 - label: "Web RTC 0" - description: "Web RTC 0" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50000 - required: true - - variable: webrtc1 - label: "Web RTC 1" - description: "Web RTC 1" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50001 - required: true - - variable: webrtc2 - label: "Web RTC 2" - description: "Web RTC 2" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50002 - required: true - - variable: webrtc3 - label: "Web RTC 3" - description: "Web RTC 3" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50003 - required: true - - variable: webrtc4 - label: "Web RTC 4" - description: "Web RTC 4" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50004 - required: true - - variable: webrtc5 - label: "Web RTC 5" - description: "Web RTC 5" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50005 - required: true - - variable: webrtc6 - label: "Web RTC 6" - description: "Web RTC 6" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50006 - required: true - - variable: webrtc7 - label: "Web RTC 7" - description: "Web RTC 7" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50007 - required: true - - variable: webrtc8 - label: "Web RTC 8" - description: "Web RTC 8" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50008 - required: true - - variable: webrtc9 - label: "Web RTC 9" - description: "Web RTC 9" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50009 - required: true - - variable: webrtc10 - label: "Web RTC 10" - description: "Web RTC 10" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 50010 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/ispy-agent-dvr/4.0.14/CHANGELOG.md b/stable/ispy-agent-dvr/4.0.14/CHANGELOG.md new file mode 100644 index 00000000000..0bd52d61a0e --- /dev/null +++ b/stable/ispy-agent-dvr/4.0.14/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ispy-agent-dvr-4.0.14](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.13...ispy-agent-dvr-4.0.14) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ispy-agent-dvr-4.0.13](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.12...ispy-agent-dvr-4.0.13) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.6.0 + + + + +## [ispy-agent-dvr-4.0.12](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.11...ispy-agent-dvr-4.0.12) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [ispy-agent-dvr-4.0.11](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.10...ispy-agent-dvr-4.0.11) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [ispy-agent-dvr-4.0.10](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.9...ispy-agent-dvr-4.0.10) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [ispy-agent-dvr-4.0.9](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.8...ispy-agent-dvr-4.0.9) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.5.0 + + + + +## [ispy-agent-dvr-4.0.8](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.7...ispy-agent-dvr-4.0.8) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [ispy-agent-dvr-4.0.7](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.6...ispy-agent-dvr-4.0.7) (2022-12-17) + +### Chore + +- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.4.0 + + + + +## [ispy-agent-dvr-4.0.6](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.5...ispy-agent-dvr-4.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [ispy-agent-dvr-4.0.5](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.4...ispy-agent-dvr-4.0.5) (2022-12-08) + +### Chore + +- update container image tccr.io/truecharts/ispy-agent-dvr to v4.4.3.0 + + + + +## [ispy-agent-dvr-4.0.4](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.2...ispy-agent-dvr-4.0.4) (2022-11-30) + + diff --git a/stable/ispy-agent-dvr/4.0.14/Chart.yaml b/stable/ispy-agent-dvr/4.0.14/Chart.yaml new file mode 100644 index 00000000000..c416f68cc13 --- /dev/null +++ b/stable/ispy-agent-dvr/4.0.14/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "4.4.6.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: iSpy's Agent DVR, a standalone DVR service to manage IP cameras. +home: https://truecharts.org/charts/stable/ispy-agent-dvr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ispy-agent-dvr.png +keywords: + - dvr + - ispy + - agent +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ispy-agent-dvr +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/ispy-agent-dvr + - https://hub.docker.com/doitandbedone/ispyagentdvr + - https://github.com/doitandbedone/ispyagentdvr-docker +version: 4.0.14 +annotations: + truecharts.org/catagories: | + - security + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/leantime/7.0.22/README.md b/stable/ispy-agent-dvr/4.0.14/README.md similarity index 100% rename from stable/leantime/7.0.22/README.md rename to stable/ispy-agent-dvr/4.0.14/README.md diff --git a/stable/ispy-agent-dvr/4.0.14/app-changelog.md b/stable/ispy-agent-dvr/4.0.14/app-changelog.md new file mode 100644 index 00000000000..b9c092794e7 --- /dev/null +++ b/stable/ispy-agent-dvr/4.0.14/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ispy-agent-dvr-4.0.14](https://github.com/truecharts/charts/compare/ispy-agent-dvr-4.0.13...ispy-agent-dvr-4.0.14) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/ispy-agent-dvr/4.0.14/app-readme.md b/stable/ispy-agent-dvr/4.0.14/app-readme.md new file mode 100644 index 00000000000..b2e3eb51abd --- /dev/null +++ b/stable/ispy-agent-dvr/4.0.14/app-readme.md @@ -0,0 +1,8 @@ +iSpy's Agent DVR, a standalone DVR service to manage IP cameras. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/ispy-agent-dvr](https://truecharts.org/charts/stable/ispy-agent-dvr) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/libreddit/3.0.13/charts/common-11.1.2.tgz b/stable/ispy-agent-dvr/4.0.14/charts/common-11.1.2.tgz similarity index 100% rename from stable/libreddit/3.0.13/charts/common-11.1.2.tgz rename to stable/ispy-agent-dvr/4.0.14/charts/common-11.1.2.tgz diff --git a/stable/ispy-agent-dvr/4.0.13/ix_values.yaml b/stable/ispy-agent-dvr/4.0.14/ix_values.yaml similarity index 100% rename from stable/ispy-agent-dvr/4.0.13/ix_values.yaml rename to stable/ispy-agent-dvr/4.0.14/ix_values.yaml diff --git a/stable/ispy-agent-dvr/4.0.14/questions.yaml b/stable/ispy-agent-dvr/4.0.14/questions.yaml new file mode 100644 index 00000000000..d698e334464 --- /dev/null +++ b/stable/ispy-agent-dvr/4.0.14/questions.yaml @@ -0,0 +1,2115 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10184 + required: true + - variable: turn + label: "TURN Service" + description: "TURN Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: turn + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3478 + required: true + - variable: webrtc + label: "Web RTC" + description: "Web RTC" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: webrtc0 + label: "Web RTC 0" + description: "Web RTC 0" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50000 + required: true + - variable: webrtc1 + label: "Web RTC 1" + description: "Web RTC 1" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50001 + required: true + - variable: webrtc2 + label: "Web RTC 2" + description: "Web RTC 2" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50002 + required: true + - variable: webrtc3 + label: "Web RTC 3" + description: "Web RTC 3" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50003 + required: true + - variable: webrtc4 + label: "Web RTC 4" + description: "Web RTC 4" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50004 + required: true + - variable: webrtc5 + label: "Web RTC 5" + description: "Web RTC 5" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50005 + required: true + - variable: webrtc6 + label: "Web RTC 6" + description: "Web RTC 6" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50006 + required: true + - variable: webrtc7 + label: "Web RTC 7" + description: "Web RTC 7" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50007 + required: true + - variable: webrtc8 + label: "Web RTC 8" + description: "Web RTC 8" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50008 + required: true + - variable: webrtc9 + label: "Web RTC 9" + description: "Web RTC 9" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50009 + required: true + - variable: webrtc10 + label: "Web RTC 10" + description: "Web RTC 10" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 50010 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/lanraragi/4.0.9/templates/common.yaml b/stable/ispy-agent-dvr/4.0.14/templates/common.yaml similarity index 100% rename from stable/lanraragi/4.0.9/templates/common.yaml rename to stable/ispy-agent-dvr/4.0.14/templates/common.yaml diff --git a/stable/libreddit/3.0.13/values.yaml b/stable/ispy-agent-dvr/4.0.14/values.yaml similarity index 100% rename from stable/libreddit/3.0.13/values.yaml rename to stable/ispy-agent-dvr/4.0.14/values.yaml diff --git a/stable/jellyseerr/4.0.10/CHANGELOG.md b/stable/jellyseerr/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..cb8eaf093ea --- /dev/null +++ b/stable/jellyseerr/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [jellyseerr-4.0.10](https://github.com/truecharts/charts/compare/jellyseerr-4.0.9...jellyseerr-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [jellyseerr-4.0.9](https://github.com/truecharts/charts/compare/jellyseerr-4.0.8...jellyseerr-4.0.9) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/jellyseerr to v1.4.0 + + + + +## [jellyseerr-4.0.8](https://github.com/truecharts/charts/compare/jellyseerr-4.0.7...jellyseerr-4.0.8) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/jellyseerr to v1.3.0 + + + + +## [jellyseerr-4.0.7](https://github.com/truecharts/charts/compare/jellyseerr-4.0.6...jellyseerr-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [jellyseerr-4.0.6](https://github.com/truecharts/charts/compare/jellyseerr-4.0.5...jellyseerr-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [jellyseerr-4.0.5](https://github.com/truecharts/charts/compare/jellyseerr-4.0.4...jellyseerr-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [jellyseerr-4.0.4](https://github.com/truecharts/charts/compare/jellyseerr-4.0.3...jellyseerr-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [jellyseerr-4.0.3](https://github.com/truecharts/charts/compare/jellyseerr-4.0.2...jellyseerr-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) + + + + +## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) + + + + +## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) + + + + +## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) + + + + +## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) diff --git a/stable/jellyseerr/4.0.10/Chart.yaml b/stable/jellyseerr/4.0.10/Chart.yaml new file mode 100644 index 00000000000..02bedf156ae --- /dev/null +++ b/stable/jellyseerr/4.0.10/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.4.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Jellyseerr is a fork of Overseerr with support for Jellyfin and Emby. It can be used to manage requests for your media library. +home: https://truecharts.org/charts/stable/jellyseerr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyseerr.png +keywords: + - jellyseerr +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: jellyseerr +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/jellyseerr + - https://hub.docker.com/fallenbagel/jellyseerr + - https://github.com/Fallenbagel/jellyseerr +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/libreddit/3.0.13/README.md b/stable/jellyseerr/4.0.10/README.md similarity index 100% rename from stable/libreddit/3.0.13/README.md rename to stable/jellyseerr/4.0.10/README.md diff --git a/stable/jellyseerr/4.0.10/app-changelog.md b/stable/jellyseerr/4.0.10/app-changelog.md new file mode 100644 index 00000000000..61279ae3922 --- /dev/null +++ b/stable/jellyseerr/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [jellyseerr-4.0.10](https://github.com/truecharts/charts/compare/jellyseerr-4.0.9...jellyseerr-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/jellyseerr/4.0.9/app-readme.md b/stable/jellyseerr/4.0.10/app-readme.md similarity index 100% rename from stable/jellyseerr/4.0.9/app-readme.md rename to stable/jellyseerr/4.0.10/app-readme.md diff --git a/stable/linkace/7.0.21/charts/common-11.1.2.tgz b/stable/jellyseerr/4.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/linkace/7.0.21/charts/common-11.1.2.tgz rename to stable/jellyseerr/4.0.10/charts/common-11.1.2.tgz diff --git a/stable/jellyseerr/4.0.9/ix_values.yaml b/stable/jellyseerr/4.0.10/ix_values.yaml similarity index 100% rename from stable/jellyseerr/4.0.9/ix_values.yaml rename to stable/jellyseerr/4.0.10/ix_values.yaml diff --git a/stable/jellyseerr/4.0.9/questions.yaml b/stable/jellyseerr/4.0.10/questions.yaml similarity index 100% rename from stable/jellyseerr/4.0.9/questions.yaml rename to stable/jellyseerr/4.0.10/questions.yaml diff --git a/stable/libreddit/3.0.13/templates/common.yaml b/stable/jellyseerr/4.0.10/templates/common.yaml similarity index 100% rename from stable/libreddit/3.0.13/templates/common.yaml rename to stable/jellyseerr/4.0.10/templates/common.yaml diff --git a/stable/linkace/7.0.21/values.yaml b/stable/jellyseerr/4.0.10/values.yaml similarity index 100% rename from stable/linkace/7.0.21/values.yaml rename to stable/jellyseerr/4.0.10/values.yaml diff --git a/stable/jellyseerr/4.0.9/CHANGELOG.md b/stable/jellyseerr/4.0.9/CHANGELOG.md deleted file mode 100644 index f9cc14bc43d..00000000000 --- a/stable/jellyseerr/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [jellyseerr-4.0.9](https://github.com/truecharts/charts/compare/jellyseerr-4.0.8...jellyseerr-4.0.9) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/jellyseerr to v1.4.0 - - - - -## [jellyseerr-4.0.8](https://github.com/truecharts/charts/compare/jellyseerr-4.0.7...jellyseerr-4.0.8) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/jellyseerr to v1.3.0 - - - - -## [jellyseerr-4.0.7](https://github.com/truecharts/charts/compare/jellyseerr-4.0.6...jellyseerr-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [jellyseerr-4.0.6](https://github.com/truecharts/charts/compare/jellyseerr-4.0.5...jellyseerr-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [jellyseerr-4.0.5](https://github.com/truecharts/charts/compare/jellyseerr-4.0.4...jellyseerr-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [jellyseerr-4.0.4](https://github.com/truecharts/charts/compare/jellyseerr-4.0.3...jellyseerr-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [jellyseerr-4.0.3](https://github.com/truecharts/charts/compare/jellyseerr-4.0.2...jellyseerr-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) - - - - -## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) - - - - -## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) - - - - -## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) - - - - -## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) - - - - -## [jellyseerr-4.0.2](https://github.com/truecharts/charts/compare/jellyseerr-4.0.1...jellyseerr-4.0.2) (2022-11-30) - - - - diff --git a/stable/jellyseerr/4.0.9/Chart.yaml b/stable/jellyseerr/4.0.9/Chart.yaml deleted file mode 100644 index d45ef51662e..00000000000 --- a/stable/jellyseerr/4.0.9/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.4.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Jellyseerr is a fork of Overseerr with support for Jellyfin and Emby. It can be used to manage requests for your media library. -home: https://truecharts.org/charts/stable/jellyseerr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/jellyseerr.png -keywords: - - jellyseerr -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: jellyseerr -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/jellyseerr - - https://github.com/Fallenbagel/jellyseerr - - https://hub.docker.com/r/fallenbagel/jellyseerr -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/jellyseerr/4.0.9/app-changelog.md b/stable/jellyseerr/4.0.9/app-changelog.md deleted file mode 100644 index b23ad90ee31..00000000000 --- a/stable/jellyseerr/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [jellyseerr-4.0.9](https://github.com/truecharts/charts/compare/jellyseerr-4.0.8...jellyseerr-4.0.9) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/jellyseerr to v1.4.0 - - \ No newline at end of file diff --git a/stable/joplin-server/11.0.23/CHANGELOG.md b/stable/joplin-server/11.0.23/CHANGELOG.md new file mode 100644 index 00000000000..674580a0366 --- /dev/null +++ b/stable/joplin-server/11.0.23/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [joplin-server-11.0.23](https://github.com/truecharts/charts/compare/joplin-server-11.0.22...joplin-server-11.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [joplin-server-11.0.22](https://github.com/truecharts/charts/compare/joplin-server-11.0.21...joplin-server-11.0.22) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [joplin-server-11.0.21](https://github.com/truecharts/charts/compare/joplin-server-11.0.20...joplin-server-11.0.21) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [joplin-server-11.0.20](https://github.com/truecharts/charts/compare/joplin-server-11.0.19...joplin-server-11.0.20) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [joplin-server-11.0.19](https://github.com/truecharts/charts/compare/joplin-server-11.0.18...joplin-server-11.0.19) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [joplin-server-11.0.18](https://github.com/truecharts/charts/compare/joplin-server-11.0.17...joplin-server-11.0.18) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [joplin-server-11.0.17](https://github.com/truecharts/charts/compare/joplin-server-11.0.16...joplin-server-11.0.17) (2022-12-27) + +### Chore + +- update container image tccr.io/truecharts/joplin-server to v2.10.5 + + + + +## [joplin-server-11.0.16](https://github.com/truecharts/charts/compare/joplin-server-11.0.15...joplin-server-11.0.16) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [joplin-server-11.0.15](https://github.com/truecharts/charts/compare/joplin-server-11.0.14...joplin-server-11.0.15) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [joplin-server-11.0.14](https://github.com/truecharts/charts/compare/joplin-server-11.0.13...joplin-server-11.0.14) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [joplin-server-11.0.13](https://github.com/truecharts/charts/compare/joplin-server-11.0.12...joplin-server-11.0.13) (2022-12-19) + +### Chore diff --git a/stable/joplin-server/11.0.23/Chart.yaml b/stable/joplin-server/11.0.23/Chart.yaml new file mode 100644 index 00000000000..7d05250c97e --- /dev/null +++ b/stable/joplin-server/11.0.23/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +appVersion: "2.10.5" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +deprecated: false +description: Allows you to sync any Joplin client. +home: https://truecharts.org/charts/stable/joplin-server +icon: https://truecharts.org/img/hotlink-ok/chart-icons/joplin-server.png +keywords: + - joplin + - notes +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: joplin-server +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/joplin-server + - https://hub.docker.com/joplin/server + - https://github.com/laurent22/joplin/tree/dev/packages/server + - https://github.com/laurent22/joplin +type: application +version: 11.0.23 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/linkace/7.0.21/README.md b/stable/joplin-server/11.0.23/README.md similarity index 100% rename from stable/linkace/7.0.21/README.md rename to stable/joplin-server/11.0.23/README.md diff --git a/stable/joplin-server/11.0.23/app-changelog.md b/stable/joplin-server/11.0.23/app-changelog.md new file mode 100644 index 00000000000..f000c260311 --- /dev/null +++ b/stable/joplin-server/11.0.23/app-changelog.md @@ -0,0 +1,9 @@ + + +## [joplin-server-11.0.23](https://github.com/truecharts/charts/compare/joplin-server-11.0.22...joplin-server-11.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/joplin-server/11.0.23/app-readme.md b/stable/joplin-server/11.0.23/app-readme.md new file mode 100644 index 00000000000..54f73208601 --- /dev/null +++ b/stable/joplin-server/11.0.23/app-readme.md @@ -0,0 +1,8 @@ +Allows you to sync any Joplin client. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/joplin-server](https://truecharts.org/charts/stable/joplin-server) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/linkding/4.0.10/charts/common-11.1.2.tgz b/stable/joplin-server/11.0.23/charts/common-11.1.2.tgz similarity index 100% rename from stable/linkding/4.0.10/charts/common-11.1.2.tgz rename to stable/joplin-server/11.0.23/charts/common-11.1.2.tgz diff --git a/stable/outline/6.0.20/charts/postgresql-11.0.22.tgz b/stable/joplin-server/11.0.23/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/outline/6.0.20/charts/postgresql-11.0.22.tgz rename to stable/joplin-server/11.0.23/charts/postgresql-11.0.22.tgz diff --git a/stable/joplin-server/11.0.23/ix_values.yaml b/stable/joplin-server/11.0.23/ix_values.yaml new file mode 100644 index 00000000000..716259c8e31 --- /dev/null +++ b/stable/joplin-server/11.0.23/ix_values.yaml @@ -0,0 +1,65 @@ +image: + repository: tccr.io/truecharts/joplin-server + tag: 2.10.5@sha256:c82445e31637085ae9057d2af29bb4dd3e66c82c9fbb06e29819f7749b3d5010 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +env: + APP_BASE_URL: http://localhost:22300 + APP_PORT: 22300 + DB_CLIENT: "pg" + POSTGRES_DATABASE: "{{ .Values.postgresql.postgresqlDatabase }}" + POSTGRES_USER: "{{ .Values.postgresql.postgresqlUsername }}" + POSTGRES_PORT: "5432" + POSTGRES_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + POSTGRES_HOST: + secretKeyRef: + name: dbcreds + key: plainhost + MAILER_ENABLED: 0 + MAILER_HOST: "" + MAILER_PORT: 465 + MAILER_SECURE: true + MAILER_AUTH_USER: "" + MAILER_AUTH_PASSWORD: "" + MAILER_NOREPLY_NAME: "" + MAILER_NOREPLY_EMAIL: "" + +probes: + liveness: + path: "/api/ping" + readiness: + path: "/api/ping" + startup: + path: "/api/ping" + +service: + main: + ports: + main: + port: 22300 + targetPort: 22300 + +persistence: + config: + enabled: true + mountPath: "/config" + +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: joplin + postgresqlDatabase: joplin + +portal: + enabled: true diff --git a/stable/joplin-server/11.0.23/questions.yaml b/stable/joplin-server/11.0.23/questions.yaml new file mode 100644 index 00000000000..16f3cf15a15 --- /dev/null +++ b/stable/joplin-server/11.0.23/questions.yaml @@ -0,0 +1,1942 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: APP_BASE_URL + label: App Base Url + description: Sets the APP BASE URL, eg http://ip:port | https://app.mydomain.tld:443 + schema: + type: string + required: true + default: "" + - variable: MAILER_ENABLED + label: Mailer Enabled + description: Set 1 to enabled and 0 to disable + schema: + type: int + min: 0 + max: 1 + default: 0 + - variable: MAILER_HOST + label: Mailer Host + description: Set the mail host, eg smtp.example.com + schema: + show_if: [["MAILER_ENABLED", "=", 1]] + type: string + default: "" + - variable: MAILER_PORT + label: Mailer Port + description: Sets the mail port, eg SMTP PORT 465 + schema: + show_if: [["MAILER_ENABLED", "=", 1]] + type: int + default: 465 + - variable: MAILER_SECURE + label: Mailer Secure + description: Enable SSL for SMTP + schema: + show_if: [["MAILER_ENABLED", "=", 1]] + type: boolean + default: true + - variable: MAILER_AUTH_USER + label: Mailer Auth User + description: Sets the username for the email server + schema: + show_if: [["MAILER_ENABLED", "=", 1]] + type: string + default: "" + - variable: MAILER_AUTH_PASSWORD + label: Mailer Auth Password + description: Sets the password for the email server + schema: + show_if: [["MAILER_ENABLED", "=", 1]] + type: string + private: true + default: "" + - variable: MAILER_NOREPLY_NAME + label: Mailer No Reply Name + description: Sets the No Reply email name + schema: + show_if: [["MAILER_ENABLED", "=", 1]] + type: string + default: "" + - variable: MAILER_NOREPLY_EMAIL + label: Mailer No Reply Email + description: Sets the No Reply default email + schema: + show_if: [["MAILER_ENABLED", "=", 1]] + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 22300 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/linkding/4.0.10/templates/common.yaml b/stable/joplin-server/11.0.23/templates/common.yaml similarity index 100% rename from stable/linkding/4.0.10/templates/common.yaml rename to stable/joplin-server/11.0.23/templates/common.yaml diff --git a/stable/linkding/4.0.10/values.yaml b/stable/joplin-server/11.0.23/values.yaml similarity index 100% rename from stable/linkding/4.0.10/values.yaml rename to stable/joplin-server/11.0.23/values.yaml diff --git a/stable/kanboard/11.0.21/CHANGELOG.md b/stable/kanboard/11.0.21/CHANGELOG.md new file mode 100644 index 00000000000..34931808c73 --- /dev/null +++ b/stable/kanboard/11.0.21/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [kanboard-11.0.21](https://github.com/truecharts/charts/compare/kanboard-11.0.20...kanboard-11.0.21) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [kanboard-11.0.20](https://github.com/truecharts/charts/compare/kanboard-11.0.19...kanboard-11.0.20) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [kanboard-11.0.19](https://github.com/truecharts/charts/compare/kanboard-11.0.18...kanboard-11.0.19) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [kanboard-11.0.18](https://github.com/truecharts/charts/compare/kanboard-11.0.17...kanboard-11.0.18) (2023-01-16) + +### Chore + +- update helm general non-major ([#6388](https://github.com/truecharts/charts/issues/6388)) + + + + +## [kanboard-11.0.17](https://github.com/truecharts/charts/compare/kanboard-11.0.16...kanboard-11.0.17) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/kanboard to v1.2.26 + + + + +## [kanboard-11.0.16](https://github.com/truecharts/charts/compare/kanboard-11.0.15...kanboard-11.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [kanboard-11.0.15](https://github.com/truecharts/charts/compare/kanboard-11.0.14...kanboard-11.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [kanboard-11.0.14](https://github.com/truecharts/charts/compare/kanboard-11.0.13...kanboard-11.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [kanboard-11.0.13](https://github.com/truecharts/charts/compare/kanboard-11.0.12...kanboard-11.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [kanboard-11.0.12](https://github.com/truecharts/charts/compare/kanboard-11.0.11...kanboard-11.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [kanboard-11.0.11](https://github.com/truecharts/charts/compare/kanboard-11.0.10...kanboard-11.0.11) (2022-12-18) + +### Chore diff --git a/stable/kanboard/11.0.21/Chart.yaml b/stable/kanboard/11.0.21/Chart.yaml new file mode 100644 index 00000000000..adba7dac9ad --- /dev/null +++ b/stable/kanboard/11.0.21/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "1.2.26" +description: Kanboard is a free and open source Kanban project management software. +name: kanboard +version: 11.0.21 +kubeVersion: ">=1.16.0-0" +keywords: + - kanboard + - kanban +home: https://truecharts.org/charts/stable/kanboard +icon: https://truecharts.org/img/hotlink-ok/chart-icons/kanboard.png +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/kanboard + - https://hub.docker.com/kanboard/kanboard + - https://github.com/kanboard/kanboard +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/linkding/4.0.10/README.md b/stable/kanboard/11.0.21/README.md similarity index 100% rename from stable/linkding/4.0.10/README.md rename to stable/kanboard/11.0.21/README.md diff --git a/stable/kanboard/11.0.21/app-changelog.md b/stable/kanboard/11.0.21/app-changelog.md new file mode 100644 index 00000000000..12371fd0693 --- /dev/null +++ b/stable/kanboard/11.0.21/app-changelog.md @@ -0,0 +1,9 @@ + + +## [kanboard-11.0.21](https://github.com/truecharts/charts/compare/kanboard-11.0.20...kanboard-11.0.21) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/kanboard/11.0.21/app-readme.md b/stable/kanboard/11.0.21/app-readme.md new file mode 100644 index 00000000000..bb1967699c7 --- /dev/null +++ b/stable/kanboard/11.0.21/app-readme.md @@ -0,0 +1,8 @@ +Kanboard is a free and open source Kanban project management software. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/kanboard](https://truecharts.org/charts/stable/kanboard) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/loki/9.0.11/charts/common-11.1.2.tgz b/stable/kanboard/11.0.21/charts/common-11.1.2.tgz similarity index 100% rename from stable/loki/9.0.11/charts/common-11.1.2.tgz rename to stable/kanboard/11.0.21/charts/common-11.1.2.tgz diff --git a/stable/photoview/7.0.19/charts/postgresql-11.0.22.tgz b/stable/kanboard/11.0.21/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/photoview/7.0.19/charts/postgresql-11.0.22.tgz rename to stable/kanboard/11.0.21/charts/postgresql-11.0.22.tgz diff --git a/stable/kanboard/11.0.21/ix_values.yaml b/stable/kanboard/11.0.21/ix_values.yaml new file mode 100644 index 00000000000..258a36bcad4 --- /dev/null +++ b/stable/kanboard/11.0.21/ix_values.yaml @@ -0,0 +1,52 @@ +image: + repository: tccr.io/truecharts/kanboard + tag: 1.2.26@sha256:d266d93b0e1047db83e3a324d9757eaa0b00efeee920fa12b82fbe0482344275 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +env: + MAIL_CONFIGURATION: false + LOG_DRIVER: stdout + DB_DRIVER: "postgres" + DB_NAME: "{{ .Values.postgresql.postgresqlDatabase }}" + DB_USERNAME: "{{ .Values.postgresql.postgresqlUsername }}" + DB_PORT: "5432" + DB_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + DB_HOSTNAME: + secretKeyRef: + name: dbcreds + key: plainhost + +service: + main: + ports: + main: + port: 10015 + targetPort: 80 + +persistence: + data: + enabled: true + mountPath: "/var/www/app/data" + ssl: + enabled: true + mountPath: "/etc/nginx/ssl" + +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: kanboard + postgresqlDatabase: kanboard + +portal: + enabled: true diff --git a/stable/kanboard/11.0.21/questions.yaml b/stable/kanboard/11.0.21/questions.yaml new file mode 100644 index 00000000000..ed562d82981 --- /dev/null +++ b/stable/kanboard/11.0.21/questions.yaml @@ -0,0 +1,1959 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: MAIL_CONFIGURATION + label: "MAIL_CONFIGURATION" + description: "Sets the MAIL_CONFIGURATION env var" + schema: + type: boolean + default: false + - variable: LOG_DRIVER + label: "LOG_DRIVER" + description: "Sets the LOG_DRIVER env var" + schema: + type: string + default: "stdout" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10015 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ssl + label: "App SSL Storage" + description: "Stores the Application SSL." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/loki/9.0.11/templates/common.yaml b/stable/kanboard/11.0.21/templates/common.yaml similarity index 100% rename from stable/loki/9.0.11/templates/common.yaml rename to stable/kanboard/11.0.21/templates/common.yaml diff --git a/stable/loki/9.0.11/values.yaml b/stable/kanboard/11.0.21/values.yaml similarity index 100% rename from stable/loki/9.0.11/values.yaml rename to stable/kanboard/11.0.21/values.yaml diff --git a/stable/koel/6.0.22/CHANGELOG.md b/stable/koel/6.0.22/CHANGELOG.md deleted file mode 100644 index 63bed69a716..00000000000 --- a/stable/koel/6.0.22/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [koel-6.0.22](https://github.com/truecharts/charts/compare/koel-6.0.21...koel-6.0.22) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [koel-6.0.21](https://github.com/truecharts/charts/compare/koel-6.0.20...koel-6.0.21) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [koel-6.0.20](https://github.com/truecharts/charts/compare/koel-6.0.19...koel-6.0.20) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [koel-6.0.19](https://github.com/truecharts/charts/compare/koel-6.0.18...koel-6.0.19) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [koel-6.0.18](https://github.com/truecharts/charts/compare/koel-6.0.17...koel-6.0.18) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/koel to latest ([#6047](https://github.com/truecharts/charts/issues/6047)) - - - - -## [koel-6.0.17](https://github.com/truecharts/charts/compare/koel-6.0.16...koel-6.0.17) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [koel-6.0.16](https://github.com/truecharts/charts/compare/koel-6.0.15...koel-6.0.16) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [koel-6.0.15](https://github.com/truecharts/charts/compare/koel-6.0.14...koel-6.0.15) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [koel-6.0.14](https://github.com/truecharts/charts/compare/koel-6.0.13...koel-6.0.14) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/koel to latest - - - - -## [koel-6.0.13](https://github.com/truecharts/charts/compare/koel-6.0.12...koel-6.0.13) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [koel-6.0.12](https://github.com/truecharts/charts/compare/koel-6.0.11...koel-6.0.12) (2022-12-18) - -### Chore diff --git a/stable/koel/6.0.22/Chart.yaml b/stable/koel/6.0.22/Chart.yaml deleted file mode 100644 index 0c15fd60486..00000000000 --- a/stable/koel/6.0.22/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: mariadb.enabled - name: mariadb - repository: https://charts.truecharts.org/ - version: 5.0.25 -description: Koel is a simple web-based personal audio streaming service written in Vue on the client side and Laravel on the server side. -home: https://truecharts.org/charts/stable/koel -icon: https://truecharts.org/img/hotlink-ok/chart-icons/koel.png -keywords: - - koel - - music - - stream -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: koel -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/koel - - https://github.com/koel/docker - - https://hub.docker.com/r/phanan/koel - - https://github.com/koel/koel -version: 6.0.22 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/koel/6.0.22/app-changelog.md b/stable/koel/6.0.22/app-changelog.md deleted file mode 100644 index 3402622516f..00000000000 --- a/stable/koel/6.0.22/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [koel-6.0.22](https://github.com/truecharts/charts/compare/koel-6.0.21...koel-6.0.22) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/koel/6.0.23/CHANGELOG.md b/stable/koel/6.0.23/CHANGELOG.md new file mode 100644 index 00000000000..837c3a84902 --- /dev/null +++ b/stable/koel/6.0.23/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [koel-6.0.23](https://github.com/truecharts/charts/compare/koel-6.0.22...koel-6.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [koel-6.0.22](https://github.com/truecharts/charts/compare/koel-6.0.21...koel-6.0.22) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [koel-6.0.21](https://github.com/truecharts/charts/compare/koel-6.0.20...koel-6.0.21) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [koel-6.0.20](https://github.com/truecharts/charts/compare/koel-6.0.19...koel-6.0.20) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [koel-6.0.19](https://github.com/truecharts/charts/compare/koel-6.0.18...koel-6.0.19) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [koel-6.0.18](https://github.com/truecharts/charts/compare/koel-6.0.17...koel-6.0.18) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/koel to latest ([#6047](https://github.com/truecharts/charts/issues/6047)) + + + + +## [koel-6.0.17](https://github.com/truecharts/charts/compare/koel-6.0.16...koel-6.0.17) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [koel-6.0.16](https://github.com/truecharts/charts/compare/koel-6.0.15...koel-6.0.16) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [koel-6.0.15](https://github.com/truecharts/charts/compare/koel-6.0.14...koel-6.0.15) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [koel-6.0.14](https://github.com/truecharts/charts/compare/koel-6.0.13...koel-6.0.14) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/koel to latest + + + + +## [koel-6.0.13](https://github.com/truecharts/charts/compare/koel-6.0.12...koel-6.0.13) (2022-12-19) + +### Chore diff --git a/stable/koel/6.0.23/Chart.yaml b/stable/koel/6.0.23/Chart.yaml new file mode 100644 index 00000000000..9d893e7e531 --- /dev/null +++ b/stable/koel/6.0.23/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 +description: Koel is a simple web-based personal audio streaming service written in Vue on the client side and Laravel on the server side. +home: https://truecharts.org/charts/stable/koel +icon: https://truecharts.org/img/hotlink-ok/chart-icons/koel.png +keywords: + - koel + - music + - stream +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: koel +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/koel + - https://hub.docker.com/phanan/koel + - https://github.com/koel/docker + - https://github.com/koel/koel +version: 6.0.23 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/loki/9.0.11/README.md b/stable/koel/6.0.23/README.md similarity index 100% rename from stable/loki/9.0.11/README.md rename to stable/koel/6.0.23/README.md diff --git a/stable/koel/6.0.23/app-changelog.md b/stable/koel/6.0.23/app-changelog.md new file mode 100644 index 00000000000..1aa85c77c44 --- /dev/null +++ b/stable/koel/6.0.23/app-changelog.md @@ -0,0 +1,9 @@ + + +## [koel-6.0.23](https://github.com/truecharts/charts/compare/koel-6.0.22...koel-6.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/koel/6.0.22/app-readme.md b/stable/koel/6.0.23/app-readme.md similarity index 100% rename from stable/koel/6.0.22/app-readme.md rename to stable/koel/6.0.23/app-readme.md diff --git a/stable/makemkv/4.0.8/charts/common-11.1.2.tgz b/stable/koel/6.0.23/charts/common-11.1.2.tgz similarity index 100% rename from stable/makemkv/4.0.8/charts/common-11.1.2.tgz rename to stable/koel/6.0.23/charts/common-11.1.2.tgz diff --git a/stable/leantime/7.0.22/charts/mariadb-5.0.25.tgz b/stable/koel/6.0.23/charts/mariadb-5.0.25.tgz similarity index 100% rename from stable/leantime/7.0.22/charts/mariadb-5.0.25.tgz rename to stable/koel/6.0.23/charts/mariadb-5.0.25.tgz diff --git a/stable/koel/6.0.22/ix_values.yaml b/stable/koel/6.0.23/ix_values.yaml similarity index 100% rename from stable/koel/6.0.22/ix_values.yaml rename to stable/koel/6.0.23/ix_values.yaml diff --git a/stable/koel/6.0.22/questions.yaml b/stable/koel/6.0.23/questions.yaml similarity index 100% rename from stable/koel/6.0.22/questions.yaml rename to stable/koel/6.0.23/questions.yaml diff --git a/stable/koel/6.0.22/templates/_secrets.tpl b/stable/koel/6.0.23/templates/_secrets.tpl similarity index 100% rename from stable/koel/6.0.22/templates/_secrets.tpl rename to stable/koel/6.0.23/templates/_secrets.tpl diff --git a/stable/koel/6.0.22/templates/common.yaml b/stable/koel/6.0.23/templates/common.yaml similarity index 100% rename from stable/koel/6.0.22/templates/common.yaml rename to stable/koel/6.0.23/templates/common.yaml diff --git a/stable/makemkv/4.0.8/values.yaml b/stable/koel/6.0.23/values.yaml similarity index 100% rename from stable/makemkv/4.0.8/values.yaml rename to stable/koel/6.0.23/values.yaml diff --git a/stable/komga/8.0.10/CHANGELOG.md b/stable/komga/8.0.10/CHANGELOG.md deleted file mode 100644 index 3bd449ffe73..00000000000 --- a/stable/komga/8.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [komga-8.0.10](https://github.com/truecharts/charts/compare/komga-8.0.9...komga-8.0.10) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/komga to v0.161.0 - - - - -## [komga-8.0.9](https://github.com/truecharts/charts/compare/komga-8.0.8...komga-8.0.9) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/komga to v0.159.1 - - - - -## [komga-8.0.8](https://github.com/truecharts/charts/compare/komga-8.0.7...komga-8.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [komga-8.0.7](https://github.com/truecharts/charts/compare/komga-8.0.6...komga-8.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [komga-8.0.6](https://github.com/truecharts/charts/compare/komga-8.0.5...komga-8.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [komga-8.0.5](https://github.com/truecharts/charts/compare/komga-8.0.4...komga-8.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [komga-8.0.4](https://github.com/truecharts/charts/compare/komga-8.0.3...komga-8.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) - - - - -## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) - - - - -## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) - - - - -## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) - - - - -## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) - - - - -## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) - - - - diff --git a/stable/komga/8.0.10/Chart.yaml b/stable/komga/8.0.10/Chart.yaml deleted file mode 100644 index 2cbd81536c7..00000000000 --- a/stable/komga/8.0.10/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "0.161.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: A comics/mangas server to serve/stream pages via API -home: https://truecharts.org/charts/stable/komga -icon: https://truecharts.org/img/hotlink-ok/chart-icons/komga.png -keywords: - - komga - - comics - - mangas - - server -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: komga -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/komga - - https://komga.org/ - - https://github.com/gotson/komga -version: 8.0.10 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/komga/8.0.10/app-changelog.md b/stable/komga/8.0.10/app-changelog.md deleted file mode 100644 index 69861944c67..00000000000 --- a/stable/komga/8.0.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [komga-8.0.10](https://github.com/truecharts/charts/compare/komga-8.0.9...komga-8.0.10) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/komga to v0.161.0 - - \ No newline at end of file diff --git a/stable/komga/8.0.11/CHANGELOG.md b/stable/komga/8.0.11/CHANGELOG.md new file mode 100644 index 00000000000..82200e75d10 --- /dev/null +++ b/stable/komga/8.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [komga-8.0.11](https://github.com/truecharts/charts/compare/komga-8.0.10...komga-8.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [komga-8.0.10](https://github.com/truecharts/charts/compare/komga-8.0.9...komga-8.0.10) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/komga to v0.161.0 + + + + +## [komga-8.0.9](https://github.com/truecharts/charts/compare/komga-8.0.8...komga-8.0.9) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/komga to v0.159.1 + + + + +## [komga-8.0.8](https://github.com/truecharts/charts/compare/komga-8.0.7...komga-8.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [komga-8.0.7](https://github.com/truecharts/charts/compare/komga-8.0.6...komga-8.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [komga-8.0.6](https://github.com/truecharts/charts/compare/komga-8.0.5...komga-8.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [komga-8.0.5](https://github.com/truecharts/charts/compare/komga-8.0.4...komga-8.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [komga-8.0.4](https://github.com/truecharts/charts/compare/komga-8.0.3...komga-8.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) + + + + +## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) + + + + +## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) + + + + +## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) + + + + +## [komga-8.0.3](https://github.com/truecharts/charts/compare/komga-8.0.2...komga-8.0.3) (2022-11-30) diff --git a/stable/komga/8.0.11/Chart.yaml b/stable/komga/8.0.11/Chart.yaml new file mode 100644 index 00000000000..fd3cc722a11 --- /dev/null +++ b/stable/komga/8.0.11/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "0.161.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: A comics/mangas server to serve/stream pages via API +home: https://truecharts.org/charts/stable/komga +icon: https://truecharts.org/img/hotlink-ok/chart-icons/komga.png +keywords: + - komga + - comics + - mangas + - server +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: komga +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/komga + - https://hub.docker.com/gotson/komga + - https://komga.org/ + - https://github.com/gotson/komga +version: 8.0.11 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/makemkv/4.0.8/README.md b/stable/komga/8.0.11/README.md similarity index 100% rename from stable/makemkv/4.0.8/README.md rename to stable/komga/8.0.11/README.md diff --git a/stable/komga/8.0.11/app-changelog.md b/stable/komga/8.0.11/app-changelog.md new file mode 100644 index 00000000000..7642b90b142 --- /dev/null +++ b/stable/komga/8.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [komga-8.0.11](https://github.com/truecharts/charts/compare/komga-8.0.10...komga-8.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/komga/8.0.10/app-readme.md b/stable/komga/8.0.11/app-readme.md similarity index 100% rename from stable/komga/8.0.10/app-readme.md rename to stable/komga/8.0.11/app-readme.md diff --git a/stable/matomo/6.0.34/charts/common-11.1.2.tgz b/stable/komga/8.0.11/charts/common-11.1.2.tgz similarity index 100% rename from stable/matomo/6.0.34/charts/common-11.1.2.tgz rename to stable/komga/8.0.11/charts/common-11.1.2.tgz diff --git a/stable/komga/8.0.10/ix_values.yaml b/stable/komga/8.0.11/ix_values.yaml similarity index 100% rename from stable/komga/8.0.10/ix_values.yaml rename to stable/komga/8.0.11/ix_values.yaml diff --git a/stable/komga/8.0.10/questions.yaml b/stable/komga/8.0.11/questions.yaml similarity index 100% rename from stable/komga/8.0.10/questions.yaml rename to stable/komga/8.0.11/questions.yaml diff --git a/stable/makemkv/4.0.8/templates/common.yaml b/stable/komga/8.0.11/templates/common.yaml similarity index 100% rename from stable/makemkv/4.0.8/templates/common.yaml rename to stable/komga/8.0.11/templates/common.yaml diff --git a/stable/matomo/6.0.34/values.yaml b/stable/komga/8.0.11/values.yaml similarity index 100% rename from stable/matomo/6.0.34/values.yaml rename to stable/komga/8.0.11/values.yaml diff --git a/stable/kopia/4.0.7/CHANGELOG.md b/stable/kopia/4.0.7/CHANGELOG.md deleted file mode 100644 index b0affa7853b..00000000000 --- a/stable/kopia/4.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [kopia-4.0.7](https://github.com/truecharts/charts/compare/kopia-4.0.6...kopia-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [kopia-4.0.6](https://github.com/truecharts/charts/compare/kopia-4.0.5...kopia-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [kopia-4.0.5](https://github.com/truecharts/charts/compare/kopia-4.0.4...kopia-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [kopia-4.0.4](https://github.com/truecharts/charts/compare/kopia-4.0.3...kopia-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [kopia-4.0.3](https://github.com/truecharts/charts/compare/kopia-4.0.2...kopia-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - - - -## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) - - diff --git a/stable/kopia/4.0.7/Chart.yaml b/stable/kopia/4.0.7/Chart.yaml deleted file mode 100644 index c2cc88eb54e..00000000000 --- a/stable/kopia/4.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "0.12.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Kopia is a simple, cross-platform tool for managing encrypted backups in the cloud. It provides fast, incremental backups, secure, client-side end-to-end encryption, compression and data deduplication. -home: https://truecharts.org/charts/stable/kopia -icon: https://truecharts.org/img/hotlink-ok/chart-icons/kopia.png -keywords: - - backup -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: kopia -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/kopia - - https://kopia.io/docs/installation/#docker-images - - https://hub.docker.com/r/kopia/kopia - - https://github.com/kopia/kopia -version: 4.0.7 -annotations: - truecharts.org/catagories: | - - utility - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/kopia/4.0.7/app-changelog.md b/stable/kopia/4.0.7/app-changelog.md deleted file mode 100644 index a642105d92c..00000000000 --- a/stable/kopia/4.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [kopia-4.0.7](https://github.com/truecharts/charts/compare/kopia-4.0.6...kopia-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/kopia/4.0.7/app-readme.md b/stable/kopia/4.0.7/app-readme.md deleted file mode 100644 index 688bc590648..00000000000 --- a/stable/kopia/4.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Kopia is a simple, cross-platform tool for managing encrypted backups in the cloud. It provides fast, incremental backups, secure, client-side end-to-end encryption, compression and data deduplication. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/kopia](https://truecharts.org/charts/stable/kopia) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/kopia/4.0.7/questions.yaml b/stable/kopia/4.0.7/questions.yaml deleted file mode 100644 index bd86d2f43a1..00000000000 --- a/stable/kopia/4.0.7/questions.yaml +++ /dev/null @@ -1,2069 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: KOPIA_PASSWORD - label: "KOPIA_PASSWORD" - description: "Repository password" - schema: - type: string - default: "" - required: true - private: true - - variable: KOPIA_SERVER_USERNAME - label: "KOPIA_SERVER_USERNAME" - description: "Username for WebUI" - schema: - type: string - default: "" - required: true - - variable: KOPIA_SERVER_PASSWORD - label: "KOPIA_SERVER_PASSWORD" - description: "Password for WebUI" - schema: - type: string - default: "" - required: true - private: true - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10238 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: cache - label: "App Cache Storage" - description: "Stores the Application Cache." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: logs - label: "App Logs Storage" - description: "Stores the Application Logs." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: rclone - label: "App Rclone Storage" - description: "Stores the Application Rclone." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/kopia/4.0.8/CHANGELOG.md b/stable/kopia/4.0.8/CHANGELOG.md new file mode 100644 index 00000000000..41502225f0e --- /dev/null +++ b/stable/kopia/4.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [kopia-4.0.8](https://github.com/truecharts/charts/compare/kopia-4.0.7...kopia-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [kopia-4.0.7](https://github.com/truecharts/charts/compare/kopia-4.0.6...kopia-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [kopia-4.0.6](https://github.com/truecharts/charts/compare/kopia-4.0.5...kopia-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [kopia-4.0.5](https://github.com/truecharts/charts/compare/kopia-4.0.4...kopia-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [kopia-4.0.4](https://github.com/truecharts/charts/compare/kopia-4.0.3...kopia-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [kopia-4.0.3](https://github.com/truecharts/charts/compare/kopia-4.0.2...kopia-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) + + + + +## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) + + + + +## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) + + + + +## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) + + + + +## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) + + + + +## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) + + + + +## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) + + + + +## [kopia-4.0.2](https://github.com/truecharts/charts/compare/kopia-4.0.1...kopia-4.0.2) (2022-11-30) + + + diff --git a/stable/kopia/4.0.8/Chart.yaml b/stable/kopia/4.0.8/Chart.yaml new file mode 100644 index 00000000000..98c7382ed97 --- /dev/null +++ b/stable/kopia/4.0.8/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "0.12.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Kopia is a simple, cross-platform tool for managing encrypted backups in the cloud. It provides fast, incremental backups, secure, client-side end-to-end encryption, compression and data deduplication. +home: https://truecharts.org/charts/stable/kopia +icon: https://truecharts.org/img/hotlink-ok/chart-icons/kopia.png +keywords: + - backup +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: kopia +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/kopia + - https://hub.docker.com/kopia/kopia + - https://kopia.io/docs/installation/#docker-images + - https://github.com/kopia/kopia +version: 4.0.8 +annotations: + truecharts.org/catagories: | + - utility + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/matomo/6.0.34/README.md b/stable/kopia/4.0.8/README.md similarity index 100% rename from stable/matomo/6.0.34/README.md rename to stable/kopia/4.0.8/README.md diff --git a/stable/kopia/4.0.8/app-changelog.md b/stable/kopia/4.0.8/app-changelog.md new file mode 100644 index 00000000000..c2ab09fb5b4 --- /dev/null +++ b/stable/kopia/4.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [kopia-4.0.8](https://github.com/truecharts/charts/compare/kopia-4.0.7...kopia-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/kopia/4.0.8/app-readme.md b/stable/kopia/4.0.8/app-readme.md new file mode 100644 index 00000000000..9f2f7c00f78 --- /dev/null +++ b/stable/kopia/4.0.8/app-readme.md @@ -0,0 +1,8 @@ +Kopia is a simple, cross-platform tool for managing encrypted backups in the cloud. It provides fast, incremental backups, secure, client-side end-to-end encryption, compression and data deduplication. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/kopia](https://truecharts.org/charts/stable/kopia) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/mediainfo/3.0.10/charts/common-11.1.2.tgz b/stable/kopia/4.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/mediainfo/3.0.10/charts/common-11.1.2.tgz rename to stable/kopia/4.0.8/charts/common-11.1.2.tgz diff --git a/stable/kopia/4.0.7/ix_values.yaml b/stable/kopia/4.0.8/ix_values.yaml similarity index 100% rename from stable/kopia/4.0.7/ix_values.yaml rename to stable/kopia/4.0.8/ix_values.yaml diff --git a/stable/kopia/4.0.8/questions.yaml b/stable/kopia/4.0.8/questions.yaml new file mode 100644 index 00000000000..d58c95b382e --- /dev/null +++ b/stable/kopia/4.0.8/questions.yaml @@ -0,0 +1,2110 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: KOPIA_PASSWORD + label: "KOPIA_PASSWORD" + description: "Repository password" + schema: + type: string + default: "" + required: true + private: true + - variable: KOPIA_SERVER_USERNAME + label: "KOPIA_SERVER_USERNAME" + description: "Username for WebUI" + schema: + type: string + default: "" + required: true + - variable: KOPIA_SERVER_PASSWORD + label: "KOPIA_SERVER_PASSWORD" + description: "Password for WebUI" + schema: + type: string + default: "" + required: true + private: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10238 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: cache + label: "App Cache Storage" + description: "Stores the Application Cache." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: logs + label: "App Logs Storage" + description: "Stores the Application Logs." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: rclone + label: "App Rclone Storage" + description: "Stores the Application Rclone." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/matomo/6.0.34/templates/common.yaml b/stable/kopia/4.0.8/templates/common.yaml similarity index 100% rename from stable/matomo/6.0.34/templates/common.yaml rename to stable/kopia/4.0.8/templates/common.yaml diff --git a/stable/mediainfo/3.0.10/values.yaml b/stable/kopia/4.0.8/values.yaml similarity index 100% rename from stable/mediainfo/3.0.10/values.yaml rename to stable/kopia/4.0.8/values.yaml diff --git a/stable/kutt/6.0.20/CHANGELOG.md b/stable/kutt/6.0.20/CHANGELOG.md deleted file mode 100644 index 7eb0fa44182..00000000000 --- a/stable/kutt/6.0.20/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [kutt-6.0.20](https://github.com/truecharts/charts/compare/kutt-6.0.19...kutt-6.0.20) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [kutt-6.0.19](https://github.com/truecharts/charts/compare/kutt-6.0.18...kutt-6.0.19) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [kutt-6.0.18](https://github.com/truecharts/charts/compare/kutt-6.0.17...kutt-6.0.18) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [kutt-6.0.17](https://github.com/truecharts/charts/compare/kutt-6.0.16...kutt-6.0.17) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [kutt-6.0.16](https://github.com/truecharts/charts/compare/kutt-6.0.15...kutt-6.0.16) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [kutt-6.0.15](https://github.com/truecharts/charts/compare/kutt-6.0.14...kutt-6.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [kutt-6.0.14](https://github.com/truecharts/charts/compare/kutt-6.0.13...kutt-6.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [kutt-6.0.13](https://github.com/truecharts/charts/compare/kutt-6.0.12...kutt-6.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [kutt-6.0.12](https://github.com/truecharts/charts/compare/kutt-6.0.11...kutt-6.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [kutt-6.0.11](https://github.com/truecharts/charts/compare/kutt-6.0.10...kutt-6.0.11) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - update helm chart redis to v5.0.16 - - - - -## [kutt-6.0.10](https://github.com/truecharts/charts/compare/kutt-6.0.9...kutt-6.0.10) (2022-12-13) - diff --git a/stable/kutt/6.0.20/Chart.yaml b/stable/kutt/6.0.20/Chart.yaml deleted file mode 100644 index 9b81a18b3a5..00000000000 --- a/stable/kutt/6.0.20/Chart.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: v2 -appVersion: "2.7.4" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -deprecated: false -description: Kutt is a modern URL shortener with support for custom domains. Shorten URLs, manage your links and view the click rate statistics. -home: https://truecharts.org/charts/stable/kutt -icon: https://truecharts.org/img/hotlink-ok/chart-icons/kutt.png -keywords: - - kutt - - link - - short -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: kutt -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/kutt - - https://github.com/thedevs-network/kutt -type: application -version: 6.0.20 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/kutt/6.0.20/app-changelog.md b/stable/kutt/6.0.20/app-changelog.md deleted file mode 100644 index 43800f84f5f..00000000000 --- a/stable/kutt/6.0.20/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [kutt-6.0.20](https://github.com/truecharts/charts/compare/kutt-6.0.19...kutt-6.0.20) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/kutt/6.0.21/CHANGELOG.md b/stable/kutt/6.0.21/CHANGELOG.md new file mode 100644 index 00000000000..0a222f87ffc --- /dev/null +++ b/stable/kutt/6.0.21/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [kutt-6.0.21](https://github.com/truecharts/charts/compare/kutt-6.0.20...kutt-6.0.21) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [kutt-6.0.20](https://github.com/truecharts/charts/compare/kutt-6.0.19...kutt-6.0.20) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [kutt-6.0.19](https://github.com/truecharts/charts/compare/kutt-6.0.18...kutt-6.0.19) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [kutt-6.0.18](https://github.com/truecharts/charts/compare/kutt-6.0.17...kutt-6.0.18) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [kutt-6.0.17](https://github.com/truecharts/charts/compare/kutt-6.0.16...kutt-6.0.17) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [kutt-6.0.16](https://github.com/truecharts/charts/compare/kutt-6.0.15...kutt-6.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [kutt-6.0.15](https://github.com/truecharts/charts/compare/kutt-6.0.14...kutt-6.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [kutt-6.0.14](https://github.com/truecharts/charts/compare/kutt-6.0.13...kutt-6.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [kutt-6.0.13](https://github.com/truecharts/charts/compare/kutt-6.0.12...kutt-6.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [kutt-6.0.12](https://github.com/truecharts/charts/compare/kutt-6.0.11...kutt-6.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [kutt-6.0.11](https://github.com/truecharts/charts/compare/kutt-6.0.10...kutt-6.0.11) (2022-12-18) + +### Chore diff --git a/stable/kutt/6.0.21/Chart.yaml b/stable/kutt/6.0.21/Chart.yaml new file mode 100644 index 00000000000..5bf791213ce --- /dev/null +++ b/stable/kutt/6.0.21/Chart.yaml @@ -0,0 +1,39 @@ +apiVersion: v2 +appVersion: "2.7.4" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +deprecated: false +description: Kutt is a modern URL shortener with support for custom domains. Shorten URLs, manage your links and view the click rate statistics. +home: https://truecharts.org/charts/stable/kutt +icon: https://truecharts.org/img/hotlink-ok/chart-icons/kutt.png +keywords: + - kutt + - link + - short +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: kutt +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/kutt + - https://hub.docker.com/kutt/kutt + - https://github.com/thedevs-network/kutt +type: application +version: 6.0.21 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/mediainfo/3.0.10/README.md b/stable/kutt/6.0.21/README.md similarity index 100% rename from stable/mediainfo/3.0.10/README.md rename to stable/kutt/6.0.21/README.md diff --git a/stable/kutt/6.0.21/app-changelog.md b/stable/kutt/6.0.21/app-changelog.md new file mode 100644 index 00000000000..bdf855aba80 --- /dev/null +++ b/stable/kutt/6.0.21/app-changelog.md @@ -0,0 +1,9 @@ + + +## [kutt-6.0.21](https://github.com/truecharts/charts/compare/kutt-6.0.20...kutt-6.0.21) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/kutt/6.0.20/app-readme.md b/stable/kutt/6.0.21/app-readme.md similarity index 100% rename from stable/kutt/6.0.20/app-readme.md rename to stable/kutt/6.0.21/app-readme.md diff --git a/stable/meshroom/4.0.7/charts/common-11.1.2.tgz b/stable/kutt/6.0.21/charts/common-11.1.2.tgz similarity index 100% rename from stable/meshroom/4.0.7/charts/common-11.1.2.tgz rename to stable/kutt/6.0.21/charts/common-11.1.2.tgz diff --git a/stable/spotweb/7.0.22/charts/postgresql-11.0.22.tgz b/stable/kutt/6.0.21/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/spotweb/7.0.22/charts/postgresql-11.0.22.tgz rename to stable/kutt/6.0.21/charts/postgresql-11.0.22.tgz diff --git a/stable/linkace/7.0.21/charts/redis-5.0.29.tgz b/stable/kutt/6.0.21/charts/redis-5.0.29.tgz similarity index 100% rename from stable/linkace/7.0.21/charts/redis-5.0.29.tgz rename to stable/kutt/6.0.21/charts/redis-5.0.29.tgz diff --git a/stable/kutt/6.0.20/ix_values.yaml b/stable/kutt/6.0.21/ix_values.yaml similarity index 100% rename from stable/kutt/6.0.20/ix_values.yaml rename to stable/kutt/6.0.21/ix_values.yaml diff --git a/stable/kutt/6.0.20/questions.yaml b/stable/kutt/6.0.21/questions.yaml similarity index 100% rename from stable/kutt/6.0.20/questions.yaml rename to stable/kutt/6.0.21/questions.yaml diff --git a/stable/kutt/6.0.20/templates/_secrets.tpl b/stable/kutt/6.0.21/templates/_secrets.tpl similarity index 100% rename from stable/kutt/6.0.20/templates/_secrets.tpl rename to stable/kutt/6.0.21/templates/_secrets.tpl diff --git a/stable/kutt/6.0.20/templates/common.yaml b/stable/kutt/6.0.21/templates/common.yaml similarity index 100% rename from stable/kutt/6.0.20/templates/common.yaml rename to stable/kutt/6.0.21/templates/common.yaml diff --git a/stable/meshroom/4.0.7/values.yaml b/stable/kutt/6.0.21/values.yaml similarity index 100% rename from stable/meshroom/4.0.7/values.yaml rename to stable/kutt/6.0.21/values.yaml diff --git a/stable/lancache-monolithic/3.0.10/CHANGELOG.md b/stable/lancache-monolithic/3.0.10/CHANGELOG.md new file mode 100644 index 00000000000..7861f333670 --- /dev/null +++ b/stable/lancache-monolithic/3.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [lancache-monolithic-3.0.10](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.9...lancache-monolithic-3.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [lancache-monolithic-3.0.9](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.8...lancache-monolithic-3.0.9) (2023-01-01) + +### Chore + +- update container image tccr.io/truecharts/lancache-monolithic to latest + + + + +## [lancache-monolithic-3.0.8](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.7...lancache-monolithic-3.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [lancache-monolithic-3.0.7](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.6...lancache-monolithic-3.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [lancache-monolithic-3.0.6](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.5...lancache-monolithic-3.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [lancache-monolithic-3.0.5](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.4...lancache-monolithic-3.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [lancache-monolithic-3.0.4](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.3...lancache-monolithic-3.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) + + + + +## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) + + + + +## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) + + + + +## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) + + + + +## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) + + + + +## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) + + + + diff --git a/stable/lancache-monolithic/3.0.10/Chart.yaml b/stable/lancache-monolithic/3.0.10/Chart.yaml new file mode 100644 index 00000000000..2eb8d720730 --- /dev/null +++ b/stable/lancache-monolithic/3.0.10/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: lancache-monolithic +version: 3.0.10 +appVersion: "latest" +description: A monolithic lancache service capable of caching all CDNs in a single instance. +type: application +deprecated: false +home: https://truecharts.org/charts/stable/lancache-monolithic +icon: https://truecharts.org/img/hotlink-ok/chart-icons/lancache-monolithic.png +keywords: + - monolithic + - lancache +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/lancache-monolithic + - https://hub.docker.com/lancachenet/monolithic + - https://github.com/lancachenet/monolithic +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - gaming + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/meshroom/4.0.7/README.md b/stable/lancache-monolithic/3.0.10/README.md similarity index 100% rename from stable/meshroom/4.0.7/README.md rename to stable/lancache-monolithic/3.0.10/README.md diff --git a/stable/lancache-monolithic/3.0.10/app-changelog.md b/stable/lancache-monolithic/3.0.10/app-changelog.md new file mode 100644 index 00000000000..b7573d2b440 --- /dev/null +++ b/stable/lancache-monolithic/3.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [lancache-monolithic-3.0.10](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.9...lancache-monolithic-3.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/lancache-monolithic/3.0.10/app-readme.md b/stable/lancache-monolithic/3.0.10/app-readme.md new file mode 100644 index 00000000000..a8cbbfbc664 --- /dev/null +++ b/stable/lancache-monolithic/3.0.10/app-readme.md @@ -0,0 +1,8 @@ +A monolithic lancache service capable of caching all CDNs in a single instance. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lancache-monolithic](https://truecharts.org/charts/stable/lancache-monolithic) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/minio-console/5.0.13/charts/common-11.1.2.tgz b/stable/lancache-monolithic/3.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/minio-console/5.0.13/charts/common-11.1.2.tgz rename to stable/lancache-monolithic/3.0.10/charts/common-11.1.2.tgz diff --git a/stable/lancache-monolithic/3.0.9/ix_values.yaml b/stable/lancache-monolithic/3.0.10/ix_values.yaml similarity index 100% rename from stable/lancache-monolithic/3.0.9/ix_values.yaml rename to stable/lancache-monolithic/3.0.10/ix_values.yaml diff --git a/stable/lancache-monolithic/3.0.10/questions.yaml b/stable/lancache-monolithic/3.0.10/questions.yaml new file mode 100644 index 00000000000..a759b6d3686 --- /dev/null +++ b/stable/lancache-monolithic/3.0.10/questions.yaml @@ -0,0 +1,2034 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: CACHE_DOMAINS_REPO + label: "CACHE DOMAINS REPO" + description: "The github repo url for the cache_domains files to use to populate the cdn maps." + schema: + type: string + default: "https://github.com/uklans/cache-domains.git" + - variable: CACHE_DOMAINS_BRANCH + label: "CACHE DOMAINS BRANCH" + description: "The branch of the CACHE_DOMAINS_REPO to use" + schema: + type: string + default: "master" + - variable: NOFETCH + label: "NO FETCH" + description: "Turn off all git pull operations and use stored data" + schema: + type: boolean + default: false + - variable: UPSTREAM_DNS + label: "UPSTREAM DNS" + description: "Upstream DNS server(s) the cache should use(separated by spaces). Do NOT point this at lancache-dns)" + schema: + type: string + default: "1.1.1.1 1.0.0.1" + - variable: CACHE_DISK_SIZE + label: "CACHE DISK SIZE" + description: "The amount of disk space the container should use for caching data" + schema: + type: string + default: "1000000m" + - variable: CACHE_MAX_AGE + label: "CACHE MAX AGE" + description: "The maximum amount of time a file should be held in cache" + schema: + type: string + default: "3560d" + - variable: CACHE_INDEX_SIZE + label: "CACHE INDEX SIZE" + description: "Amount of index memory for the nginx cache manager. We recommend 250m of index memory per 1TB" + schema: + type: string + default: "500m" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10279 + required: true + - variable: https + label: "HTTPS" + description: "HTTPS Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: https + label: "HTTPS" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10280 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: logs + label: "App logs Storage" + description: "Stores the Application logs." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/mediainfo/3.0.10/templates/common.yaml b/stable/lancache-monolithic/3.0.10/templates/common.yaml similarity index 100% rename from stable/mediainfo/3.0.10/templates/common.yaml rename to stable/lancache-monolithic/3.0.10/templates/common.yaml diff --git a/stable/minio-console/5.0.13/values.yaml b/stable/lancache-monolithic/3.0.10/values.yaml similarity index 100% rename from stable/minio-console/5.0.13/values.yaml rename to stable/lancache-monolithic/3.0.10/values.yaml diff --git a/stable/lancache-monolithic/3.0.9/CHANGELOG.md b/stable/lancache-monolithic/3.0.9/CHANGELOG.md deleted file mode 100644 index 3565a7af9b3..00000000000 --- a/stable/lancache-monolithic/3.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [lancache-monolithic-3.0.9](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.8...lancache-monolithic-3.0.9) (2023-01-01) - -### Chore - -- update container image tccr.io/truecharts/lancache-monolithic to latest - - - - -## [lancache-monolithic-3.0.8](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.7...lancache-monolithic-3.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [lancache-monolithic-3.0.7](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.6...lancache-monolithic-3.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [lancache-monolithic-3.0.6](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.5...lancache-monolithic-3.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [lancache-monolithic-3.0.5](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.4...lancache-monolithic-3.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [lancache-monolithic-3.0.4](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.3...lancache-monolithic-3.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) - - - - -## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) - - - - -## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) - - - - -## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) - - - - -## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) - - - - -## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) - - - - -## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) - - - - -## [lancache-monolithic-3.0.3](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.2...lancache-monolithic-3.0.3) (2022-12-01) - - - diff --git a/stable/lancache-monolithic/3.0.9/Chart.yaml b/stable/lancache-monolithic/3.0.9/Chart.yaml deleted file mode 100644 index fd49fef4212..00000000000 --- a/stable/lancache-monolithic/3.0.9/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: lancache-monolithic -version: 3.0.9 -appVersion: "latest" -description: A monolithic lancache service capable of caching all CDNs in a single instance. -type: application -deprecated: false -home: https://truecharts.org/charts/stable/lancache-monolithic -icon: https://truecharts.org/img/hotlink-ok/chart-icons/lancache-monolithic.png -keywords: - - monolithic - - lancache -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/lancache-monolithic - - https://hub.docker.com/r/lancachenet/monolithic - - https://github.com/lancachenet/monolithic -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - gaming - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/lancache-monolithic/3.0.9/app-changelog.md b/stable/lancache-monolithic/3.0.9/app-changelog.md deleted file mode 100644 index ac25b8100bf..00000000000 --- a/stable/lancache-monolithic/3.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [lancache-monolithic-3.0.9](https://github.com/truecharts/charts/compare/lancache-monolithic-3.0.8...lancache-monolithic-3.0.9) (2023-01-01) - -### Chore - -- update container image tccr.io/truecharts/lancache-monolithic to latest - - \ No newline at end of file diff --git a/stable/lancache-monolithic/3.0.9/app-readme.md b/stable/lancache-monolithic/3.0.9/app-readme.md deleted file mode 100644 index d87a5f7bfe5..00000000000 --- a/stable/lancache-monolithic/3.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A monolithic lancache service capable of caching all CDNs in a single instance. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lancache-monolithic](https://truecharts.org/charts/stable/lancache-monolithic) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/lancache-monolithic/3.0.9/questions.yaml b/stable/lancache-monolithic/3.0.9/questions.yaml deleted file mode 100644 index cbf6528a726..00000000000 --- a/stable/lancache-monolithic/3.0.9/questions.yaml +++ /dev/null @@ -1,1993 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: CACHE_DOMAINS_REPO - label: "CACHE DOMAINS REPO" - description: "The github repo url for the cache_domains files to use to populate the cdn maps." - schema: - type: string - default: "https://github.com/uklans/cache-domains.git" - - variable: CACHE_DOMAINS_BRANCH - label: "CACHE DOMAINS BRANCH" - description: "The branch of the CACHE_DOMAINS_REPO to use" - schema: - type: string - default: "master" - - variable: NOFETCH - label: "NO FETCH" - description: "Turn off all git pull operations and use stored data" - schema: - type: boolean - default: false - - variable: UPSTREAM_DNS - label: "UPSTREAM DNS" - description: "Upstream DNS server(s) the cache should use(separated by spaces). Do NOT point this at lancache-dns)" - schema: - type: string - default: "1.1.1.1 1.0.0.1" - - variable: CACHE_DISK_SIZE - label: "CACHE DISK SIZE" - description: "The amount of disk space the container should use for caching data" - schema: - type: string - default: "1000000m" - - variable: CACHE_MAX_AGE - label: "CACHE MAX AGE" - description: "The maximum amount of time a file should be held in cache" - schema: - type: string - default: "3560d" - - variable: CACHE_INDEX_SIZE - label: "CACHE INDEX SIZE" - description: "Amount of index memory for the nginx cache manager. We recommend 250m of index memory per 1TB" - schema: - type: string - default: "500m" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10279 - required: true - - variable: https - label: "HTTPS" - description: "HTTPS Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: https - label: "HTTPS" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10280 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: logs - label: "App logs Storage" - description: "Stores the Application logs." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/lanraragi/4.0.10/CHANGELOG.md b/stable/lanraragi/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..eaac77105c4 --- /dev/null +++ b/stable/lanraragi/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [lanraragi-4.0.10](https://github.com/truecharts/charts/compare/lanraragi-4.0.9...lanraragi-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [lanraragi-4.0.9](https://github.com/truecharts/charts/compare/lanraragi-4.0.8...lanraragi-4.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [lanraragi-4.0.8](https://github.com/truecharts/charts/compare/lanraragi-4.0.7...lanraragi-4.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [lanraragi-4.0.7](https://github.com/truecharts/charts/compare/lanraragi-4.0.6...lanraragi-4.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [lanraragi-4.0.6](https://github.com/truecharts/charts/compare/lanraragi-4.0.5...lanraragi-4.0.6) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/lanraragi to v0.8.81 + + + + +## [lanraragi-4.0.5](https://github.com/truecharts/charts/compare/lanraragi-4.0.4...lanraragi-4.0.5) (2022-12-20) + +### Chore + +- update container image tccr.io/truecharts/lanraragi to v0.8.8 + + + + +## [lanraragi-4.0.4](https://github.com/truecharts/charts/compare/lanraragi-4.0.3...lanraragi-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [lanraragi-4.0.3](https://github.com/truecharts/charts/compare/lanraragi-4.0.2...lanraragi-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) + + + + +## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) + + + + +## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) + + + + +## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) + + + + +## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) diff --git a/stable/lanraragi/4.0.10/Chart.yaml b/stable/lanraragi/4.0.10/Chart.yaml new file mode 100644 index 00000000000..a9febb36a46 --- /dev/null +++ b/stable/lanraragi/4.0.10/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "0.8.81" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Open source server for archival of comics/manga. +home: https://truecharts.org/charts/stable/lanraragi +icon: https://truecharts.org/img/hotlink-ok/chart-icons/lanraragi.png +keywords: + - lanraragi + - comics + - manga +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: lanraragi +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/lanraragi + - https://hub.docker.com/difegue/lanraragi + - https://github.com/Difegue/LANraragi + - https://sugoi.gitbook.io/lanraragi/ +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/minio-console/5.0.13/README.md b/stable/lanraragi/4.0.10/README.md similarity index 100% rename from stable/minio-console/5.0.13/README.md rename to stable/lanraragi/4.0.10/README.md diff --git a/stable/lanraragi/4.0.10/app-changelog.md b/stable/lanraragi/4.0.10/app-changelog.md new file mode 100644 index 00000000000..c4dfac885f5 --- /dev/null +++ b/stable/lanraragi/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [lanraragi-4.0.10](https://github.com/truecharts/charts/compare/lanraragi-4.0.9...lanraragi-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/lanraragi/4.0.10/app-readme.md b/stable/lanraragi/4.0.10/app-readme.md new file mode 100644 index 00000000000..3690328240f --- /dev/null +++ b/stable/lanraragi/4.0.10/app-readme.md @@ -0,0 +1,8 @@ +Open source server for archival of comics/manga. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lanraragi](https://truecharts.org/charts/stable/lanraragi) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/mkvcleaver/3.0.7/charts/common-11.1.2.tgz b/stable/lanraragi/4.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/mkvcleaver/3.0.7/charts/common-11.1.2.tgz rename to stable/lanraragi/4.0.10/charts/common-11.1.2.tgz diff --git a/stable/lanraragi/4.0.9/ix_values.yaml b/stable/lanraragi/4.0.10/ix_values.yaml similarity index 100% rename from stable/lanraragi/4.0.9/ix_values.yaml rename to stable/lanraragi/4.0.10/ix_values.yaml diff --git a/stable/lanraragi/4.0.10/questions.yaml b/stable/lanraragi/4.0.10/questions.yaml new file mode 100644 index 00000000000..cb4b191d9ed --- /dev/null +++ b/stable/lanraragi/4.0.10/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10177 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: content + label: "App Content Storage" + description: "Stores the Application Content." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/meshroom/4.0.7/templates/common.yaml b/stable/lanraragi/4.0.10/templates/common.yaml similarity index 100% rename from stable/meshroom/4.0.7/templates/common.yaml rename to stable/lanraragi/4.0.10/templates/common.yaml diff --git a/stable/mkvcleaver/3.0.7/values.yaml b/stable/lanraragi/4.0.10/values.yaml similarity index 100% rename from stable/mkvcleaver/3.0.7/values.yaml rename to stable/lanraragi/4.0.10/values.yaml diff --git a/stable/lanraragi/4.0.9/CHANGELOG.md b/stable/lanraragi/4.0.9/CHANGELOG.md deleted file mode 100644 index 5510335e198..00000000000 --- a/stable/lanraragi/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [lanraragi-4.0.9](https://github.com/truecharts/charts/compare/lanraragi-4.0.8...lanraragi-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [lanraragi-4.0.8](https://github.com/truecharts/charts/compare/lanraragi-4.0.7...lanraragi-4.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [lanraragi-4.0.7](https://github.com/truecharts/charts/compare/lanraragi-4.0.6...lanraragi-4.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [lanraragi-4.0.6](https://github.com/truecharts/charts/compare/lanraragi-4.0.5...lanraragi-4.0.6) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/lanraragi to v0.8.81 - - - - -## [lanraragi-4.0.5](https://github.com/truecharts/charts/compare/lanraragi-4.0.4...lanraragi-4.0.5) (2022-12-20) - -### Chore - -- update container image tccr.io/truecharts/lanraragi to v0.8.8 - - - - -## [lanraragi-4.0.4](https://github.com/truecharts/charts/compare/lanraragi-4.0.3...lanraragi-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [lanraragi-4.0.3](https://github.com/truecharts/charts/compare/lanraragi-4.0.2...lanraragi-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) - - - - -## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) - - - - -## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) - - - - -## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) - - - - -## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) - - - - -## [lanraragi-4.0.2](https://github.com/truecharts/charts/compare/lanraragi-4.0.1...lanraragi-4.0.2) (2022-11-30) - - - - diff --git a/stable/lanraragi/4.0.9/Chart.yaml b/stable/lanraragi/4.0.9/Chart.yaml deleted file mode 100644 index 3cef1b60295..00000000000 --- a/stable/lanraragi/4.0.9/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "0.8.81" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Open source server for archival of comics/manga. -home: https://truecharts.org/charts/stable/lanraragi -icon: https://truecharts.org/img/hotlink-ok/chart-icons/lanraragi.png -keywords: - - lanraragi - - comics - - manga -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: lanraragi -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/lanraragi - - https://github.com/Difegue/LANraragi - - https://hub.docker.com/r/difegue/lanraragi - - https://sugoi.gitbook.io/lanraragi/ -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/lanraragi/4.0.9/app-changelog.md b/stable/lanraragi/4.0.9/app-changelog.md deleted file mode 100644 index 518aba7a3f1..00000000000 --- a/stable/lanraragi/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [lanraragi-4.0.9](https://github.com/truecharts/charts/compare/lanraragi-4.0.8...lanraragi-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/lanraragi/4.0.9/app-readme.md b/stable/lanraragi/4.0.9/app-readme.md deleted file mode 100644 index 0953441b574..00000000000 --- a/stable/lanraragi/4.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Open source server for archival of comics/manga. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/lanraragi](https://truecharts.org/charts/stable/lanraragi) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/lanraragi/4.0.9/questions.yaml b/stable/lanraragi/4.0.9/questions.yaml deleted file mode 100644 index f4f793336d8..00000000000 --- a/stable/lanraragi/4.0.9/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10177 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: content - label: "App Content Storage" - description: "Stores the Application Content." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/leantime/7.0.22/CHANGELOG.md b/stable/leantime/7.0.22/CHANGELOG.md deleted file mode 100644 index 79a3e0c53e5..00000000000 --- a/stable/leantime/7.0.22/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [leantime-7.0.22](https://github.com/truecharts/charts/compare/leantime-7.0.21...leantime-7.0.22) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/leantime to v2.3.6 - - - - -## [leantime-7.0.21](https://github.com/truecharts/charts/compare/leantime-7.0.20...leantime-7.0.21) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [leantime-7.0.20](https://github.com/truecharts/charts/compare/leantime-7.0.19...leantime-7.0.20) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [leantime-7.0.19](https://github.com/truecharts/charts/compare/leantime-7.0.18...leantime-7.0.19) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/leantime to v2.3.5 - - - - -## [leantime-7.0.18](https://github.com/truecharts/charts/compare/leantime-7.0.17...leantime-7.0.18) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [leantime-7.0.17](https://github.com/truecharts/charts/compare/leantime-7.0.16...leantime-7.0.17) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/leantime to v2.3.4 - - - - -## [leantime-7.0.16](https://github.com/truecharts/charts/compare/leantime-7.0.15...leantime-7.0.16) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [leantime-7.0.15](https://github.com/truecharts/charts/compare/leantime-7.0.14...leantime-7.0.15) (2023-01-01) - -### Chore - -- update container image tccr.io/truecharts/leantime to v2.3.3 - - - - -## [leantime-7.0.14](https://github.com/truecharts/charts/compare/leantime-7.0.13...leantime-7.0.14) (2022-12-30) - -### Chore - -- update container image tccr.io/truecharts/leantime to v2.3.2 - - - - -## [leantime-7.0.13](https://github.com/truecharts/charts/compare/leantime-7.0.12...leantime-7.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [leantime-7.0.12](https://github.com/truecharts/charts/compare/leantime-7.0.11...leantime-7.0.12) (2022-12-26) - -### Chore diff --git a/stable/leantime/7.0.22/Chart.yaml b/stable/leantime/7.0.22/Chart.yaml deleted file mode 100644 index 5698a02e0b0..00000000000 --- a/stable/leantime/7.0.22/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "2.3.6" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: mariadb.enabled - name: mariadb - repository: https://charts.truecharts.org/ - version: 5.0.25 -description: "Straightforward open source project management system to make your ideas reality." -home: https://truecharts.org/charts/stable/leantime -icon: https://truecharts.org/img/hotlink-ok/chart-icons/leantime.png -keywords: - - leantime - - project - - management -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: leantime -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/leantime - - https://leantime.io/ - - https://hub.docker.com/r/nicholaswilde/leantime -version: 7.0.22 -annotations: - truecharts.org/catagories: | - - management - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/leantime/7.0.22/app-changelog.md b/stable/leantime/7.0.22/app-changelog.md deleted file mode 100644 index 89e922eb8a0..00000000000 --- a/stable/leantime/7.0.22/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [leantime-7.0.22](https://github.com/truecharts/charts/compare/leantime-7.0.21...leantime-7.0.22) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/leantime to v2.3.6 - - \ No newline at end of file diff --git a/stable/leantime/7.0.23/CHANGELOG.md b/stable/leantime/7.0.23/CHANGELOG.md new file mode 100644 index 00000000000..c01ff3a85ae --- /dev/null +++ b/stable/leantime/7.0.23/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [leantime-7.0.23](https://github.com/truecharts/charts/compare/leantime-7.0.22...leantime-7.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [leantime-7.0.22](https://github.com/truecharts/charts/compare/leantime-7.0.21...leantime-7.0.22) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/leantime to v2.3.6 + + + + +## [leantime-7.0.21](https://github.com/truecharts/charts/compare/leantime-7.0.20...leantime-7.0.21) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [leantime-7.0.20](https://github.com/truecharts/charts/compare/leantime-7.0.19...leantime-7.0.20) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [leantime-7.0.19](https://github.com/truecharts/charts/compare/leantime-7.0.18...leantime-7.0.19) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/leantime to v2.3.5 + + + + +## [leantime-7.0.18](https://github.com/truecharts/charts/compare/leantime-7.0.17...leantime-7.0.18) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [leantime-7.0.17](https://github.com/truecharts/charts/compare/leantime-7.0.16...leantime-7.0.17) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/leantime to v2.3.4 + + + + +## [leantime-7.0.16](https://github.com/truecharts/charts/compare/leantime-7.0.15...leantime-7.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [leantime-7.0.15](https://github.com/truecharts/charts/compare/leantime-7.0.14...leantime-7.0.15) (2023-01-01) + +### Chore + +- update container image tccr.io/truecharts/leantime to v2.3.3 + + + + +## [leantime-7.0.14](https://github.com/truecharts/charts/compare/leantime-7.0.13...leantime-7.0.14) (2022-12-30) + +### Chore + +- update container image tccr.io/truecharts/leantime to v2.3.2 + + + + +## [leantime-7.0.13](https://github.com/truecharts/charts/compare/leantime-7.0.12...leantime-7.0.13) (2022-12-27) + +### Chore diff --git a/stable/leantime/7.0.23/Chart.yaml b/stable/leantime/7.0.23/Chart.yaml new file mode 100644 index 00000000000..a7efb597f88 --- /dev/null +++ b/stable/leantime/7.0.23/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "2.3.6" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 +description: "Straightforward open source project management system to make your ideas reality." +home: https://truecharts.org/charts/stable/leantime +icon: https://truecharts.org/img/hotlink-ok/chart-icons/leantime.png +keywords: + - leantime + - project + - management +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: leantime +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/leantime + - https://hub.docker.com/leantime/leantime + - https://leantime.io/ +version: 7.0.23 +annotations: + truecharts.org/catagories: | + - management + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/mkvcleaver/3.0.7/README.md b/stable/leantime/7.0.23/README.md similarity index 100% rename from stable/mkvcleaver/3.0.7/README.md rename to stable/leantime/7.0.23/README.md diff --git a/stable/leantime/7.0.23/app-changelog.md b/stable/leantime/7.0.23/app-changelog.md new file mode 100644 index 00000000000..19ac52a0c41 --- /dev/null +++ b/stable/leantime/7.0.23/app-changelog.md @@ -0,0 +1,9 @@ + + +## [leantime-7.0.23](https://github.com/truecharts/charts/compare/leantime-7.0.22...leantime-7.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/leantime/7.0.22/app-readme.md b/stable/leantime/7.0.23/app-readme.md similarity index 100% rename from stable/leantime/7.0.22/app-readme.md rename to stable/leantime/7.0.23/app-readme.md diff --git a/stable/mkvtoolnix/4.0.9/charts/common-11.1.2.tgz b/stable/leantime/7.0.23/charts/common-11.1.2.tgz similarity index 100% rename from stable/mkvtoolnix/4.0.9/charts/common-11.1.2.tgz rename to stable/leantime/7.0.23/charts/common-11.1.2.tgz diff --git a/stable/linkace/7.0.21/charts/mariadb-5.0.25.tgz b/stable/leantime/7.0.23/charts/mariadb-5.0.25.tgz similarity index 100% rename from stable/linkace/7.0.21/charts/mariadb-5.0.25.tgz rename to stable/leantime/7.0.23/charts/mariadb-5.0.25.tgz diff --git a/stable/leantime/7.0.22/ix_values.yaml b/stable/leantime/7.0.23/ix_values.yaml similarity index 100% rename from stable/leantime/7.0.22/ix_values.yaml rename to stable/leantime/7.0.23/ix_values.yaml diff --git a/stable/leantime/7.0.22/questions.yaml b/stable/leantime/7.0.23/questions.yaml similarity index 100% rename from stable/leantime/7.0.22/questions.yaml rename to stable/leantime/7.0.23/questions.yaml diff --git a/stable/leantime/7.0.22/templates/_secrets.tpl b/stable/leantime/7.0.23/templates/_secrets.tpl similarity index 100% rename from stable/leantime/7.0.22/templates/_secrets.tpl rename to stable/leantime/7.0.23/templates/_secrets.tpl diff --git a/stable/leantime/7.0.22/templates/common.yaml b/stable/leantime/7.0.23/templates/common.yaml similarity index 100% rename from stable/leantime/7.0.22/templates/common.yaml rename to stable/leantime/7.0.23/templates/common.yaml diff --git a/stable/mkvtoolnix/4.0.9/values.yaml b/stable/leantime/7.0.23/values.yaml similarity index 100% rename from stable/mkvtoolnix/4.0.9/values.yaml rename to stable/leantime/7.0.23/values.yaml diff --git a/stable/libreddit/3.0.13/CHANGELOG.md b/stable/libreddit/3.0.13/CHANGELOG.md deleted file mode 100644 index 4c379862f5a..00000000000 --- a/stable/libreddit/3.0.13/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [libreddit-3.0.13](https://github.com/truecharts/charts/compare/libreddit-3.0.12...libreddit-3.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [libreddit-3.0.12](https://github.com/truecharts/charts/compare/libreddit-3.0.11...libreddit-3.0.12) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [libreddit-3.0.11](https://github.com/truecharts/charts/compare/libreddit-3.0.10...libreddit-3.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [libreddit-3.0.10](https://github.com/truecharts/charts/compare/libreddit-3.0.9...libreddit-3.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [libreddit-3.0.9](https://github.com/truecharts/charts/compare/libreddit-3.0.8...libreddit-3.0.9) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [libreddit-3.0.8](https://github.com/truecharts/charts/compare/libreddit-3.0.7...libreddit-3.0.8) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/libreddit to latest - - - - -## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/libreddit to latest - - - - -## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/libreddit to latest - - - - -## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/libreddit to latest - - - - -## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/libreddit to latest - - - - -## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) - -### Chore diff --git a/stable/libreddit/3.0.13/Chart.yaml b/stable/libreddit/3.0.13/Chart.yaml deleted file mode 100644 index 36fe25095fa..00000000000 --- a/stable/libreddit/3.0.13/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: An alternative private front-end to Reddit -home: https://truecharts.org/charts/stable/libreddit -icon: https://truecharts.org/img/hotlink-ok/chart-icons/libreddit.png -keywords: - - reddit - - libreddit - - social -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: libreddit -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/libreddit - - https://github.com/spikecodes/libreddit - - https://hub.docker.com/r/spikecodes/libreddit -version: 3.0.13 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/libreddit/3.0.13/app-changelog.md b/stable/libreddit/3.0.13/app-changelog.md deleted file mode 100644 index 1af1b08e34b..00000000000 --- a/stable/libreddit/3.0.13/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [libreddit-3.0.13](https://github.com/truecharts/charts/compare/libreddit-3.0.12...libreddit-3.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/libreddit/3.0.13/app-readme.md b/stable/libreddit/3.0.13/app-readme.md deleted file mode 100644 index b229be8482d..00000000000 --- a/stable/libreddit/3.0.13/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -An alternative private front-end to Reddit - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/libreddit](https://truecharts.org/charts/stable/libreddit) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/libreddit/3.0.13/questions.yaml b/stable/libreddit/3.0.13/questions.yaml deleted file mode 100644 index d0edd9de54d..00000000000 --- a/stable/libreddit/3.0.13/questions.yaml +++ /dev/null @@ -1,1865 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: lbreddit - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: theme - label: "Default Theme" - schema: - type: string - default: "system" - enum: - - value: "system" - description: "system" - - value: "light" - description: "light" - - value: "dark" - description: "dark" - - value: "black" - description: "black" - - value: "dracula" - description: "dracula" - - value: "nord" - description: "nord" - - value: "laserwave" - description: "laserwave" - - value: "violet" - description: "violet" - - value: "gold" - description: "gold" - - value: "rosebox" - description: "rosebox" - - variable: front_page - label: "Front Page" - schema: - type: string - default: "default" - enum: - - value: "default" - description: "default" - - value: "popular" - description: "popular" - - value: "all" - description: "all" - - variable: layout - label: "Layout" - schema: - type: string - default: "card" - enum: - - value: "card" - description: "card" - - value: "clean" - description: "clean" - - value: "compact" - description: "compact" - - variable: post_sort - label: "Post Sort" - schema: - type: string - default: "hot" - enum: - - value: "hot" - description: "hot" - - value: "new" - description: "new" - - value: "top" - description: "top" - - value: "rising" - description: "rising" - - value: "controversial" - description: "controversial" - - variable: comment_sort - label: "Comment Sort" - schema: - type: string - default: "confidence" - enum: - - value: "confidence" - description: "confidence" - - value: "top" - description: "top" - - value: "new" - description: "new" - - value: "controversial" - description: "controversial" - - value: "old" - description: "old" - - variable: wide - label: "Wide" - schema: - type: boolean - default: false - - variable: show_nsfw - label: "Show NSFW" - schema: - type: boolean - default: false - - variable: use_hls - label: "Use HLS" - schema: - type: boolean - default: false - - variable: hide_hls_notification - label: "Hide HLS Notification" - schema: - type: boolean - default: false - - variable: autoplay_videos - label: "Auto Play Videos" - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10257 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/libreddit/3.0.14/CHANGELOG.md b/stable/libreddit/3.0.14/CHANGELOG.md new file mode 100644 index 00000000000..9332d094353 --- /dev/null +++ b/stable/libreddit/3.0.14/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [libreddit-3.0.14](https://github.com/truecharts/charts/compare/libreddit-3.0.13...libreddit-3.0.14) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [libreddit-3.0.13](https://github.com/truecharts/charts/compare/libreddit-3.0.12...libreddit-3.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [libreddit-3.0.12](https://github.com/truecharts/charts/compare/libreddit-3.0.11...libreddit-3.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [libreddit-3.0.11](https://github.com/truecharts/charts/compare/libreddit-3.0.10...libreddit-3.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [libreddit-3.0.10](https://github.com/truecharts/charts/compare/libreddit-3.0.9...libreddit-3.0.10) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [libreddit-3.0.9](https://github.com/truecharts/charts/compare/libreddit-3.0.8...libreddit-3.0.9) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [libreddit-3.0.8](https://github.com/truecharts/charts/compare/libreddit-3.0.7...libreddit-3.0.8) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/libreddit to latest + + + + +## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/libreddit to latest + + + + +## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/libreddit to latest + + + + +## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/libreddit to latest + + + + +## [libreddit-3.0.7](https://github.com/truecharts/charts/compare/libreddit-3.0.5...libreddit-3.0.7) (2022-11-30) + +### Chore diff --git a/stable/libreddit/3.0.14/Chart.yaml b/stable/libreddit/3.0.14/Chart.yaml new file mode 100644 index 00000000000..23215239997 --- /dev/null +++ b/stable/libreddit/3.0.14/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: An alternative private front-end to Reddit +home: https://truecharts.org/charts/stable/libreddit +icon: https://truecharts.org/img/hotlink-ok/chart-icons/libreddit.png +keywords: + - reddit + - libreddit + - social +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: libreddit +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/libreddit + - https://hub.docker.com/spikecodes/libreddit + - https://github.com/spikecodes/libreddit +version: 3.0.14 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/mkvtoolnix/4.0.9/README.md b/stable/libreddit/3.0.14/README.md similarity index 100% rename from stable/mkvtoolnix/4.0.9/README.md rename to stable/libreddit/3.0.14/README.md diff --git a/stable/libreddit/3.0.14/app-changelog.md b/stable/libreddit/3.0.14/app-changelog.md new file mode 100644 index 00000000000..dce14cff633 --- /dev/null +++ b/stable/libreddit/3.0.14/app-changelog.md @@ -0,0 +1,9 @@ + + +## [libreddit-3.0.14](https://github.com/truecharts/charts/compare/libreddit-3.0.13...libreddit-3.0.14) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/libreddit/3.0.14/app-readme.md b/stable/libreddit/3.0.14/app-readme.md new file mode 100644 index 00000000000..ae787ed9ffa --- /dev/null +++ b/stable/libreddit/3.0.14/app-readme.md @@ -0,0 +1,8 @@ +An alternative private front-end to Reddit + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/libreddit](https://truecharts.org/charts/stable/libreddit) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/mymediaforalexa/3.0.7/charts/common-11.1.2.tgz b/stable/libreddit/3.0.14/charts/common-11.1.2.tgz similarity index 100% rename from stable/mymediaforalexa/3.0.7/charts/common-11.1.2.tgz rename to stable/libreddit/3.0.14/charts/common-11.1.2.tgz diff --git a/stable/libreddit/3.0.13/ix_values.yaml b/stable/libreddit/3.0.14/ix_values.yaml similarity index 100% rename from stable/libreddit/3.0.13/ix_values.yaml rename to stable/libreddit/3.0.14/ix_values.yaml diff --git a/stable/libreddit/3.0.14/questions.yaml b/stable/libreddit/3.0.14/questions.yaml new file mode 100644 index 00000000000..6267037d5a5 --- /dev/null +++ b/stable/libreddit/3.0.14/questions.yaml @@ -0,0 +1,1906 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: lbreddit + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: theme + label: "Default Theme" + schema: + type: string + default: "system" + enum: + - value: "system" + description: "system" + - value: "light" + description: "light" + - value: "dark" + description: "dark" + - value: "black" + description: "black" + - value: "dracula" + description: "dracula" + - value: "nord" + description: "nord" + - value: "laserwave" + description: "laserwave" + - value: "violet" + description: "violet" + - value: "gold" + description: "gold" + - value: "rosebox" + description: "rosebox" + - variable: front_page + label: "Front Page" + schema: + type: string + default: "default" + enum: + - value: "default" + description: "default" + - value: "popular" + description: "popular" + - value: "all" + description: "all" + - variable: layout + label: "Layout" + schema: + type: string + default: "card" + enum: + - value: "card" + description: "card" + - value: "clean" + description: "clean" + - value: "compact" + description: "compact" + - variable: post_sort + label: "Post Sort" + schema: + type: string + default: "hot" + enum: + - value: "hot" + description: "hot" + - value: "new" + description: "new" + - value: "top" + description: "top" + - value: "rising" + description: "rising" + - value: "controversial" + description: "controversial" + - variable: comment_sort + label: "Comment Sort" + schema: + type: string + default: "confidence" + enum: + - value: "confidence" + description: "confidence" + - value: "top" + description: "top" + - value: "new" + description: "new" + - value: "controversial" + description: "controversial" + - value: "old" + description: "old" + - variable: wide + label: "Wide" + schema: + type: boolean + default: false + - variable: show_nsfw + label: "Show NSFW" + schema: + type: boolean + default: false + - variable: use_hls + label: "Use HLS" + schema: + type: boolean + default: false + - variable: hide_hls_notification + label: "Hide HLS Notification" + schema: + type: boolean + default: false + - variable: autoplay_videos + label: "Auto Play Videos" + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10257 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/minio-console/5.0.13/templates/common.yaml b/stable/libreddit/3.0.14/templates/common.yaml similarity index 100% rename from stable/minio-console/5.0.13/templates/common.yaml rename to stable/libreddit/3.0.14/templates/common.yaml diff --git a/stable/mymediaforalexa/3.0.7/values.yaml b/stable/libreddit/3.0.14/values.yaml similarity index 100% rename from stable/mymediaforalexa/3.0.7/values.yaml rename to stable/libreddit/3.0.14/values.yaml diff --git a/stable/linkace/7.0.21/CHANGELOG.md b/stable/linkace/7.0.21/CHANGELOG.md deleted file mode 100644 index 734caac4d85..00000000000 --- a/stable/linkace/7.0.21/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [linkace-7.0.21](https://github.com/truecharts/charts/compare/linkace-7.0.20...linkace-7.0.21) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/linkace to v1.11.1 - - - - -## [linkace-7.0.20](https://github.com/truecharts/charts/compare/linkace-7.0.19...linkace-7.0.20) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [linkace-7.0.19](https://github.com/truecharts/charts/compare/linkace-7.0.18...linkace-7.0.19) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [linkace-7.0.18](https://github.com/truecharts/charts/compare/linkace-7.0.17...linkace-7.0.18) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [linkace-7.0.17](https://github.com/truecharts/charts/compare/linkace-7.0.16...linkace-7.0.17) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [linkace-7.0.16](https://github.com/truecharts/charts/compare/linkace-7.0.15...linkace-7.0.16) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [linkace-7.0.15](https://github.com/truecharts/charts/compare/linkace-7.0.14...linkace-7.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [linkace-7.0.14](https://github.com/truecharts/charts/compare/linkace-7.0.13...linkace-7.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [linkace-7.0.13](https://github.com/truecharts/charts/compare/linkace-7.0.12...linkace-7.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [linkace-7.0.12](https://github.com/truecharts/charts/compare/linkace-7.0.11...linkace-7.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [linkace-7.0.11](https://github.com/truecharts/charts/compare/linkace-7.0.10...linkace-7.0.11) (2022-12-18) - -### Chore diff --git a/stable/linkace/7.0.21/Chart.yaml b/stable/linkace/7.0.21/Chart.yaml deleted file mode 100644 index a698a4f31ee..00000000000 --- a/stable/linkace/7.0.21/Chart.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: v2 -appVersion: "1.11.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: mariadb.enabled - name: mariadb - repository: https://charts.truecharts.org/ - version: 5.0.25 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -description: Your self-hosted bookmark archive. Free and open source. -home: https://truecharts.org/charts/stable/linkace -icon: https://truecharts.org/img/hotlink-ok/chart-icons/linkace.png -keywords: - - linkace -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: linkace -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/linkace - - https://www.linkace.org/docs/ - - https://github.com/linkace/linkace - - https://hub.docker.com/r/linkace/linkace -version: 7.0.21 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/linkace/7.0.21/app-changelog.md b/stable/linkace/7.0.21/app-changelog.md deleted file mode 100644 index 8bbed20cccc..00000000000 --- a/stable/linkace/7.0.21/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [linkace-7.0.21](https://github.com/truecharts/charts/compare/linkace-7.0.20...linkace-7.0.21) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/linkace to v1.11.1 - - \ No newline at end of file diff --git a/stable/linkace/7.0.22/CHANGELOG.md b/stable/linkace/7.0.22/CHANGELOG.md new file mode 100644 index 00000000000..8a1dd4547dc --- /dev/null +++ b/stable/linkace/7.0.22/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [linkace-7.0.22](https://github.com/truecharts/charts/compare/linkace-7.0.21...linkace-7.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [linkace-7.0.21](https://github.com/truecharts/charts/compare/linkace-7.0.20...linkace-7.0.21) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/linkace to v1.11.1 + + + + +## [linkace-7.0.20](https://github.com/truecharts/charts/compare/linkace-7.0.19...linkace-7.0.20) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [linkace-7.0.19](https://github.com/truecharts/charts/compare/linkace-7.0.18...linkace-7.0.19) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [linkace-7.0.18](https://github.com/truecharts/charts/compare/linkace-7.0.17...linkace-7.0.18) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [linkace-7.0.17](https://github.com/truecharts/charts/compare/linkace-7.0.16...linkace-7.0.17) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [linkace-7.0.16](https://github.com/truecharts/charts/compare/linkace-7.0.15...linkace-7.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [linkace-7.0.15](https://github.com/truecharts/charts/compare/linkace-7.0.14...linkace-7.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [linkace-7.0.14](https://github.com/truecharts/charts/compare/linkace-7.0.13...linkace-7.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [linkace-7.0.13](https://github.com/truecharts/charts/compare/linkace-7.0.12...linkace-7.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [linkace-7.0.12](https://github.com/truecharts/charts/compare/linkace-7.0.11...linkace-7.0.12) (2022-12-19) + +### Chore diff --git a/stable/linkace/7.0.22/Chart.yaml b/stable/linkace/7.0.22/Chart.yaml new file mode 100644 index 00000000000..b00581d52a2 --- /dev/null +++ b/stable/linkace/7.0.22/Chart.yaml @@ -0,0 +1,36 @@ +apiVersion: v2 +appVersion: "1.11.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: Your self-hosted bookmark archive. Free and open source. +home: https://truecharts.org/charts/stable/linkace +icon: https://truecharts.org/img/hotlink-ok/chart-icons/linkace.png +keywords: + - linkace +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: linkace +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/linkace + - https://hub.docker.com/linkace/linkace + - https://www.linkace.org/docs/ + - https://github.com/linkace/linkace +version: 7.0.22 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/mymediaforalexa/3.0.7/README.md b/stable/linkace/7.0.22/README.md similarity index 100% rename from stable/mymediaforalexa/3.0.7/README.md rename to stable/linkace/7.0.22/README.md diff --git a/stable/linkace/7.0.22/app-changelog.md b/stable/linkace/7.0.22/app-changelog.md new file mode 100644 index 00000000000..d316a4d16f8 --- /dev/null +++ b/stable/linkace/7.0.22/app-changelog.md @@ -0,0 +1,9 @@ + + +## [linkace-7.0.22](https://github.com/truecharts/charts/compare/linkace-7.0.21...linkace-7.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/linkace/7.0.21/app-readme.md b/stable/linkace/7.0.22/app-readme.md similarity index 100% rename from stable/linkace/7.0.21/app-readme.md rename to stable/linkace/7.0.22/app-readme.md diff --git a/stable/netdata/4.0.9/charts/common-11.1.2.tgz b/stable/linkace/7.0.22/charts/common-11.1.2.tgz similarity index 100% rename from stable/netdata/4.0.9/charts/common-11.1.2.tgz rename to stable/linkace/7.0.22/charts/common-11.1.2.tgz diff --git a/stable/matomo/6.0.34/charts/mariadb-5.0.25.tgz b/stable/linkace/7.0.22/charts/mariadb-5.0.25.tgz similarity index 100% rename from stable/matomo/6.0.34/charts/mariadb-5.0.25.tgz rename to stable/linkace/7.0.22/charts/mariadb-5.0.25.tgz diff --git a/stable/nocodb/6.0.27/charts/redis-5.0.29.tgz b/stable/linkace/7.0.22/charts/redis-5.0.29.tgz similarity index 100% rename from stable/nocodb/6.0.27/charts/redis-5.0.29.tgz rename to stable/linkace/7.0.22/charts/redis-5.0.29.tgz diff --git a/stable/linkace/7.0.21/ix_values.yaml b/stable/linkace/7.0.22/ix_values.yaml similarity index 100% rename from stable/linkace/7.0.21/ix_values.yaml rename to stable/linkace/7.0.22/ix_values.yaml diff --git a/stable/linkace/7.0.21/questions.yaml b/stable/linkace/7.0.22/questions.yaml similarity index 100% rename from stable/linkace/7.0.21/questions.yaml rename to stable/linkace/7.0.22/questions.yaml diff --git a/stable/linkace/7.0.21/templates/_cronjob.tpl b/stable/linkace/7.0.22/templates/_cronjob.tpl similarity index 100% rename from stable/linkace/7.0.21/templates/_cronjob.tpl rename to stable/linkace/7.0.22/templates/_cronjob.tpl diff --git a/stable/linkace/7.0.21/templates/_secrets.tpl b/stable/linkace/7.0.22/templates/_secrets.tpl similarity index 100% rename from stable/linkace/7.0.21/templates/_secrets.tpl rename to stable/linkace/7.0.22/templates/_secrets.tpl diff --git a/stable/linkace/7.0.21/templates/common.yaml b/stable/linkace/7.0.22/templates/common.yaml similarity index 100% rename from stable/linkace/7.0.21/templates/common.yaml rename to stable/linkace/7.0.22/templates/common.yaml diff --git a/stable/netdata/4.0.9/values.yaml b/stable/linkace/7.0.22/values.yaml similarity index 100% rename from stable/netdata/4.0.9/values.yaml rename to stable/linkace/7.0.22/values.yaml diff --git a/stable/linkding/4.0.10/CHANGELOG.md b/stable/linkding/4.0.10/CHANGELOG.md deleted file mode 100644 index edd8e4f65f6..00000000000 --- a/stable/linkding/4.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [linkding-4.0.10](https://github.com/truecharts/charts/compare/linkding-4.0.9...linkding-4.0.10) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/linkding to v1.17.1 - - - - -## [linkding-4.0.9](https://github.com/truecharts/charts/compare/linkding-4.0.8...linkding-4.0.9) (2023-01-21) - -### Chore - -- update container image tccr.io/truecharts/linkding to v1.16.1 - - - - -## [linkding-4.0.8](https://github.com/truecharts/charts/compare/linkding-4.0.7...linkding-4.0.8) (2023-01-16) - -### Chore - -- update container image tccr.io/truecharts/linkding to v1.16.0 - - - - -## [linkding-4.0.7](https://github.com/truecharts/charts/compare/linkding-4.0.6...linkding-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [linkding-4.0.6](https://github.com/truecharts/charts/compare/linkding-4.0.5...linkding-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [linkding-4.0.5](https://github.com/truecharts/charts/compare/linkding-4.0.4...linkding-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [linkding-4.0.4](https://github.com/truecharts/charts/compare/linkding-4.0.3...linkding-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [linkding-4.0.3](https://github.com/truecharts/charts/compare/linkding-4.0.2...linkding-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [linkding-4.0.2](https://github.com/truecharts/charts/compare/linkding-4.0.1...linkding-4.0.2) (2022-11-30) - - - - -## [linkding-4.0.2](https://github.com/truecharts/charts/compare/linkding-4.0.1...linkding-4.0.2) (2022-11-30) - - - - -## [linkding-4.0.2](https://github.com/truecharts/charts/compare/linkding-4.0.1...linkding-4.0.2) (2022-11-30) - - - - -## [linkding-4.0.2](https://github.com/truecharts/charts/compare/linkding-4.0.1...linkding-4.0.2) (2022-11-30) - - - - -## [linkding-4.0.2](https://github.com/truecharts/charts/compare/linkding-4.0.1...linkding-4.0.2) (2022-11-30) diff --git a/stable/linkding/4.0.10/Chart.yaml b/stable/linkding/4.0.10/Chart.yaml deleted file mode 100644 index dac7fb74d36..00000000000 --- a/stable/linkding/4.0.10/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "1.17.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Linkding is a simple bookmark service that you can host yourself. It's designed be to be minimal, fast and easy. -home: https://truecharts.org/charts/stable/linkding -icon: https://truecharts.org/img/hotlink-ok/chart-icons/linkding.png -keywords: - - bookmarks - - links -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: linkding -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/linkding - - https://github.com/sissbruecker/linkding - - https://hub.docker.com/r/sissbruecker/linkding -version: 4.0.10 -annotations: - truecharts.org/catagories: | - - bookmarks - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/linkding/4.0.10/app-changelog.md b/stable/linkding/4.0.10/app-changelog.md deleted file mode 100644 index 7708c10e70c..00000000000 --- a/stable/linkding/4.0.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [linkding-4.0.10](https://github.com/truecharts/charts/compare/linkding-4.0.9...linkding-4.0.10) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/linkding to v1.17.1 - - \ No newline at end of file diff --git a/stable/linkding/4.0.11/CHANGELOG.md b/stable/linkding/4.0.11/CHANGELOG.md new file mode 100644 index 00000000000..c06768f05ee --- /dev/null +++ b/stable/linkding/4.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [linkding-4.0.11](https://github.com/truecharts/charts/compare/linkding-4.0.10...linkding-4.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [linkding-4.0.10](https://github.com/truecharts/charts/compare/linkding-4.0.9...linkding-4.0.10) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/linkding to v1.17.1 + + + + +## [linkding-4.0.9](https://github.com/truecharts/charts/compare/linkding-4.0.8...linkding-4.0.9) (2023-01-21) + +### Chore + +- update container image tccr.io/truecharts/linkding to v1.16.1 + + + + +## [linkding-4.0.8](https://github.com/truecharts/charts/compare/linkding-4.0.7...linkding-4.0.8) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/linkding to v1.16.0 + + + + +## [linkding-4.0.7](https://github.com/truecharts/charts/compare/linkding-4.0.6...linkding-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [linkding-4.0.6](https://github.com/truecharts/charts/compare/linkding-4.0.5...linkding-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [linkding-4.0.5](https://github.com/truecharts/charts/compare/linkding-4.0.4...linkding-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [linkding-4.0.4](https://github.com/truecharts/charts/compare/linkding-4.0.3...linkding-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [linkding-4.0.3](https://github.com/truecharts/charts/compare/linkding-4.0.2...linkding-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [linkding-4.0.2](https://github.com/truecharts/charts/compare/linkding-4.0.1...linkding-4.0.2) (2022-11-30) + + + + +## [linkding-4.0.2](https://github.com/truecharts/charts/compare/linkding-4.0.1...linkding-4.0.2) (2022-11-30) + + + + +## [linkding-4.0.2](https://github.com/truecharts/charts/compare/linkding-4.0.1...linkding-4.0.2) (2022-11-30) + diff --git a/stable/linkding/4.0.11/Chart.yaml b/stable/linkding/4.0.11/Chart.yaml new file mode 100644 index 00000000000..263796d86d3 --- /dev/null +++ b/stable/linkding/4.0.11/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "1.17.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Linkding is a simple bookmark service that you can host yourself. It's designed be to be minimal, fast and easy. +home: https://truecharts.org/charts/stable/linkding +icon: https://truecharts.org/img/hotlink-ok/chart-icons/linkding.png +keywords: + - bookmarks + - links +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: linkding +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/linkding + - https://hub.docker.com/sissbruecker/linkding + - https://github.com/sissbruecker/linkding +version: 4.0.11 +annotations: + truecharts.org/catagories: | + - bookmarks + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/netdata/4.0.9/README.md b/stable/linkding/4.0.11/README.md similarity index 100% rename from stable/netdata/4.0.9/README.md rename to stable/linkding/4.0.11/README.md diff --git a/stable/linkding/4.0.11/app-changelog.md b/stable/linkding/4.0.11/app-changelog.md new file mode 100644 index 00000000000..c3912f2c054 --- /dev/null +++ b/stable/linkding/4.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [linkding-4.0.11](https://github.com/truecharts/charts/compare/linkding-4.0.10...linkding-4.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/linkding/4.0.10/app-readme.md b/stable/linkding/4.0.11/app-readme.md similarity index 100% rename from stable/linkding/4.0.10/app-readme.md rename to stable/linkding/4.0.11/app-readme.md diff --git a/stable/nocodb/6.0.27/charts/common-11.1.2.tgz b/stable/linkding/4.0.11/charts/common-11.1.2.tgz similarity index 100% rename from stable/nocodb/6.0.27/charts/common-11.1.2.tgz rename to stable/linkding/4.0.11/charts/common-11.1.2.tgz diff --git a/stable/linkding/4.0.10/ix_values.yaml b/stable/linkding/4.0.11/ix_values.yaml similarity index 100% rename from stable/linkding/4.0.10/ix_values.yaml rename to stable/linkding/4.0.11/ix_values.yaml diff --git a/stable/linkding/4.0.10/questions.yaml b/stable/linkding/4.0.11/questions.yaml similarity index 100% rename from stable/linkding/4.0.10/questions.yaml rename to stable/linkding/4.0.11/questions.yaml diff --git a/stable/mkvcleaver/3.0.7/templates/common.yaml b/stable/linkding/4.0.11/templates/common.yaml similarity index 100% rename from stable/mkvcleaver/3.0.7/templates/common.yaml rename to stable/linkding/4.0.11/templates/common.yaml diff --git a/stable/nocodb/6.0.27/values.yaml b/stable/linkding/4.0.11/values.yaml similarity index 100% rename from stable/nocodb/6.0.27/values.yaml rename to stable/linkding/4.0.11/values.yaml diff --git a/stable/loki/9.0.11/CHANGELOG.md b/stable/loki/9.0.11/CHANGELOG.md deleted file mode 100644 index 9c2d799d964..00000000000 --- a/stable/loki/9.0.11/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [loki-9.0.11](https://github.com/truecharts/charts/compare/loki-9.0.10...loki-9.0.11) (2023-01-31) - -### Chore - -- update helm general non-major - - - - -## [loki-9.0.10](https://github.com/truecharts/charts/compare/loki-9.0.9...loki-9.0.10) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/loki to v2.7.2 - - - - -## [loki-9.0.9](https://github.com/truecharts/charts/compare/loki-9.0.8...loki-9.0.9) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [loki-9.0.8](https://github.com/truecharts/charts/compare/loki-9.0.7...loki-9.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [loki-9.0.7](https://github.com/truecharts/charts/compare/loki-9.0.6...loki-9.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [loki-9.0.6](https://github.com/truecharts/charts/compare/loki-9.0.5...loki-9.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [loki-9.0.5](https://github.com/truecharts/charts/compare/loki-9.0.4...loki-9.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [loki-9.0.4](https://github.com/truecharts/charts/compare/loki-9.0.3...loki-9.0.4) (2022-12-17) - -### Chore - -- update helm chart promtail to v6.0.7 ([#5496](https://github.com/truecharts/charts/issues/5496)) - - - - -## [loki-9.0.3](https://github.com/truecharts/charts/compare/loki-9.0.2...loki-9.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [loki-9.0.2](https://github.com/truecharts/charts/compare/loki-9.0.1...loki-9.0.2) (2022-12-10) - - - - -## [loki-9.0.1](https://github.com/truecharts/charts/compare/loki-9.0.0...loki-9.0.1) (2022-12-05) - -### Chore - -- update helm general non-major - - diff --git a/stable/loki/9.0.11/Chart.yaml b/stable/loki/9.0.11/Chart.yaml deleted file mode 100644 index 901cfb9f95c..00000000000 --- a/stable/loki/9.0.11/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "2.7.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - name: "promtail" - condition: promtail.enabled - repository: https://charts.truecharts.org - version: "6.0.12" -deprecated: false -description: "Loki: like Prometheus, but for logs." -home: https://truecharts.org/charts/stable/loki -icon: https://truecharts.org/img/hotlink-ok/chart-icons/loki.png -keywords: - - logs -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: loki -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/loki - - https://github.com/grafana/loki -type: application -version: 9.0.11 -annotations: - truecharts.org/catagories: | - - logs - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/loki/9.0.11/app-changelog.md b/stable/loki/9.0.11/app-changelog.md deleted file mode 100644 index 190ad786c14..00000000000 --- a/stable/loki/9.0.11/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [loki-9.0.11](https://github.com/truecharts/charts/compare/loki-9.0.10...loki-9.0.11) (2023-01-31) - -### Chore - -- update helm general non-major - - \ No newline at end of file diff --git a/stable/loki/9.0.12/CHANGELOG.md b/stable/loki/9.0.12/CHANGELOG.md new file mode 100644 index 00000000000..5fe325a9165 --- /dev/null +++ b/stable/loki/9.0.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [loki-9.0.12](https://github.com/truecharts/charts/compare/loki-9.0.11...loki-9.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [loki-9.0.11](https://github.com/truecharts/charts/compare/loki-9.0.10...loki-9.0.11) (2023-01-31) + +### Chore + +- update helm general non-major + + + + +## [loki-9.0.10](https://github.com/truecharts/charts/compare/loki-9.0.9...loki-9.0.10) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/loki to v2.7.2 + + + + +## [loki-9.0.9](https://github.com/truecharts/charts/compare/loki-9.0.8...loki-9.0.9) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [loki-9.0.8](https://github.com/truecharts/charts/compare/loki-9.0.7...loki-9.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [loki-9.0.7](https://github.com/truecharts/charts/compare/loki-9.0.6...loki-9.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [loki-9.0.6](https://github.com/truecharts/charts/compare/loki-9.0.5...loki-9.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [loki-9.0.5](https://github.com/truecharts/charts/compare/loki-9.0.4...loki-9.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [loki-9.0.4](https://github.com/truecharts/charts/compare/loki-9.0.3...loki-9.0.4) (2022-12-17) + +### Chore + +- update helm chart promtail to v6.0.7 ([#5496](https://github.com/truecharts/charts/issues/5496)) + + + + +## [loki-9.0.3](https://github.com/truecharts/charts/compare/loki-9.0.2...loki-9.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [loki-9.0.2](https://github.com/truecharts/charts/compare/loki-9.0.1...loki-9.0.2) (2022-12-10) + + diff --git a/stable/loki/9.0.12/Chart.yaml b/stable/loki/9.0.12/Chart.yaml new file mode 100644 index 00000000000..50bf433b9b5 --- /dev/null +++ b/stable/loki/9.0.12/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "2.7.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - name: "promtail" + condition: promtail.enabled + repository: https://charts.truecharts.org + version: "6.0.12" +deprecated: false +description: "Loki: like Prometheus, but for logs." +home: https://truecharts.org/charts/stable/loki +icon: https://truecharts.org/img/hotlink-ok/chart-icons/loki.png +keywords: + - logs +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: loki +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/loki + - https://hub.docker.com/grafana/loki + - https://github.com/grafana/loki +type: application +version: 9.0.12 +annotations: + truecharts.org/catagories: | + - logs + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/nocodb/6.0.27/README.md b/stable/loki/9.0.12/README.md similarity index 100% rename from stable/nocodb/6.0.27/README.md rename to stable/loki/9.0.12/README.md diff --git a/stable/loki/9.0.12/app-changelog.md b/stable/loki/9.0.12/app-changelog.md new file mode 100644 index 00000000000..e30637e1216 --- /dev/null +++ b/stable/loki/9.0.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [loki-9.0.12](https://github.com/truecharts/charts/compare/loki-9.0.11...loki-9.0.12) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/loki/9.0.11/app-readme.md b/stable/loki/9.0.12/app-readme.md similarity index 100% rename from stable/loki/9.0.11/app-readme.md rename to stable/loki/9.0.12/app-readme.md diff --git a/stable/ntfy/4.0.9/charts/common-11.1.2.tgz b/stable/loki/9.0.12/charts/common-11.1.2.tgz similarity index 100% rename from stable/ntfy/4.0.9/charts/common-11.1.2.tgz rename to stable/loki/9.0.12/charts/common-11.1.2.tgz diff --git a/stable/loki/9.0.11/charts/promtail-6.0.12.tgz b/stable/loki/9.0.12/charts/promtail-6.0.12.tgz similarity index 100% rename from stable/loki/9.0.11/charts/promtail-6.0.12.tgz rename to stable/loki/9.0.12/charts/promtail-6.0.12.tgz diff --git a/stable/loki/9.0.11/ix_values.yaml b/stable/loki/9.0.12/ix_values.yaml similarity index 100% rename from stable/loki/9.0.11/ix_values.yaml rename to stable/loki/9.0.12/ix_values.yaml diff --git a/stable/loki/9.0.11/questions.yaml b/stable/loki/9.0.12/questions.yaml similarity index 100% rename from stable/loki/9.0.11/questions.yaml rename to stable/loki/9.0.12/questions.yaml diff --git a/stable/loki/9.0.11/templates/_helpers.tpl b/stable/loki/9.0.12/templates/_helpers.tpl similarity index 100% rename from stable/loki/9.0.11/templates/_helpers.tpl rename to stable/loki/9.0.12/templates/_helpers.tpl diff --git a/stable/mkvtoolnix/4.0.9/templates/common.yaml b/stable/loki/9.0.12/templates/common.yaml similarity index 100% rename from stable/mkvtoolnix/4.0.9/templates/common.yaml rename to stable/loki/9.0.12/templates/common.yaml diff --git a/stable/ntfy/4.0.9/values.yaml b/stable/loki/9.0.12/values.yaml similarity index 100% rename from stable/ntfy/4.0.9/values.yaml rename to stable/loki/9.0.12/values.yaml diff --git a/stable/makemkv/4.0.8/CHANGELOG.md b/stable/makemkv/4.0.8/CHANGELOG.md deleted file mode 100644 index f4db525b72e..00000000000 --- a/stable/makemkv/4.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [makemkv-4.0.8](https://github.com/truecharts/charts/compare/makemkv-4.0.7...makemkv-4.0.8) (2023-01-17) - - - - -## [makemkv-4.0.7](https://github.com/truecharts/charts/compare/makemkv-4.0.6...makemkv-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [makemkv-4.0.6](https://github.com/truecharts/charts/compare/makemkv-4.0.5...makemkv-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [makemkv-4.0.5](https://github.com/truecharts/charts/compare/makemkv-4.0.4...makemkv-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [makemkv-4.0.4](https://github.com/truecharts/charts/compare/makemkv-4.0.3...makemkv-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [makemkv-4.0.3](https://github.com/truecharts/charts/compare/makemkv-4.0.2...makemkv-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - - - -## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) - - diff --git a/stable/makemkv/4.0.8/Chart.yaml b/stable/makemkv/4.0.8/Chart.yaml deleted file mode 100644 index d9cb9235c8c..00000000000 --- a/stable/makemkv/4.0.8/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.22.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: MakeMKV is your one-click solution to convert video that you own into free and patents-unencumbered format that can be played everywhere. -home: https://truecharts.org/charts/stable/makemkv -icon: https://truecharts.org/img/hotlink-ok/chart-icons/makemkv.png -keywords: - - mkv -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: makemkv -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/makemkv - - https://github.com/jlesage/docker-makemkv - - https://hub.docker.com/r/jlesage/makemkv -version: 4.0.8 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/makemkv/4.0.8/app-changelog.md b/stable/makemkv/4.0.8/app-changelog.md deleted file mode 100644 index 4337e8f915f..00000000000 --- a/stable/makemkv/4.0.8/app-changelog.md +++ /dev/null @@ -1,4 +0,0 @@ - - -## [makemkv-4.0.8](https://github.com/truecharts/charts/compare/makemkv-4.0.7...makemkv-4.0.8) (2023-01-17) - diff --git a/stable/makemkv/4.0.8/questions.yaml b/stable/makemkv/4.0.8/questions.yaml deleted file mode 100644 index 11fea78422d..00000000000 --- a/stable/makemkv/4.0.8/questions.yaml +++ /dev/null @@ -1,2131 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: makemkv - group: "App Configuration" - label: "MakeMKV Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client)." - schema: - type: boolean - default: false - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: MAKEMKV_KEY - label: "MAKEMKV_KEY" - description: "MakeMKV registration key to use." - schema: - type: string - default: "BETA" - required: true - - variable: AUTO_DISC_RIPPER_INTERVAL - label: "AUTO_DISC_RIPPER_INTERVAL" - description: "Interval, in seconds, the automatic disc ripper checks for the presence of a DVD/Blu-ray discs." - schema: - type: int - default: 5 - required: true - - variable: AUTO_DISC_RIPPER_BD_MODE - label: "AUTO_DISC_RIPPER_BD_MODE" - description: "Rip mode of Blu-ray discs. mkv is the default mode, where a set of MKV files are produced. When set to backup, a copy of the (decrypted) file system is created instead. This applies to Blu-ray discs only. For DVD discs, MKV files are always produced." - schema: - type: string - default: "mkv" - required: true - - variable: AUTO_DISC_RIPPER_MAKEMKV_PROFILE - label: "AUTO_DISC_RIPPER_MAKEMKV_PROFILE" - description: "Filename of the custom MakeMKV profile the automatic disc ripper should use. The profile is expected to be found under the /config folder of the container." - schema: - type: string - default: "" - - variable: AUTO_DISC_RIPPER - label: "AUTO_DISC_RIPPER" - description: "When set to true, disc is ejected from the drive when ripping is terminated." - schema: - type: boolean - default: false - - variable: AUTO_DISC_RIPPER_EJECT - label: "AUTO_DISC_RIPPER_EJECT" - description: "When set to true, disc is ejected from the drive when ripping is terminated." - schema: - type: boolean - default: false - - variable: AUTO_DISC_RIPPER_PARALLEL_RIP - label: "AUTO_DISC_RIPPER_PARALLEL_RIP" - description: "When set to true, discs from all available optical drives are ripped in parallel. Else, each disc from optical drives is ripped one at time." - schema: - type: boolean - default: false - - variable: AUTO_DISC_RIPPER_NO_GUI_PROGRESS - label: "AUTO_DISC_RIPPER_NO_GUI_PROGRESS" - description: "When set to true, progress of discs ripped by the automatic disc ripper is not shown in the MakeMKV GUI." - schema: - type: boolean - default: false - - variable: AUTO_DISC_RIPPER_FORCE_UNIQUE_OUTPUT_DIR - label: "AUTO_DISC_RIPPER_FORCE_UNIQUE_OUTPUT_DIR" - description: "When set to false, files are written to /output/DISC_LABEL/, where DISC_LABEL is the label/name of the disc. If this directory exists, then files are written to /output/DISC_LABEL-XXXXXX, where XXXXXX are random readable characters. When set to true, the /output/DISC_LABEL-XXXXXX pattern is always used." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10180 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "VNC Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10181 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage" - description: "Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: output - label: "App Output Storage" - description: "Stores the Application Output." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/makemkv/4.0.9/CHANGELOG.md b/stable/makemkv/4.0.9/CHANGELOG.md new file mode 100644 index 00000000000..e5a83c69e54 --- /dev/null +++ b/stable/makemkv/4.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [makemkv-4.0.9](https://github.com/truecharts/charts/compare/makemkv-4.0.8...makemkv-4.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [makemkv-4.0.8](https://github.com/truecharts/charts/compare/makemkv-4.0.7...makemkv-4.0.8) (2023-01-17) + + + + +## [makemkv-4.0.7](https://github.com/truecharts/charts/compare/makemkv-4.0.6...makemkv-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [makemkv-4.0.6](https://github.com/truecharts/charts/compare/makemkv-4.0.5...makemkv-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [makemkv-4.0.5](https://github.com/truecharts/charts/compare/makemkv-4.0.4...makemkv-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [makemkv-4.0.4](https://github.com/truecharts/charts/compare/makemkv-4.0.3...makemkv-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [makemkv-4.0.3](https://github.com/truecharts/charts/compare/makemkv-4.0.2...makemkv-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) + + + + +## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) + + + + +## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) + + + + +## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) + + + + +## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) + + + + +## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) + + + + +## [makemkv-4.0.2](https://github.com/truecharts/charts/compare/makemkv-4.0.1...makemkv-4.0.2) (2022-11-30) + + + diff --git a/stable/makemkv/4.0.9/Chart.yaml b/stable/makemkv/4.0.9/Chart.yaml new file mode 100644 index 00000000000..6d1d45b8b36 --- /dev/null +++ b/stable/makemkv/4.0.9/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.22.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: MakeMKV is your one-click solution to convert video that you own into free and patents-unencumbered format that can be played everywhere. +home: https://truecharts.org/charts/stable/makemkv +icon: https://truecharts.org/img/hotlink-ok/chart-icons/makemkv.png +keywords: + - mkv +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: makemkv +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/makemkv + - https://hub.docker.com/jlesage/makemkv + - https://github.com/jlesage/docker-makemkv +version: 4.0.9 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/ntfy/4.0.9/README.md b/stable/makemkv/4.0.9/README.md similarity index 100% rename from stable/ntfy/4.0.9/README.md rename to stable/makemkv/4.0.9/README.md diff --git a/stable/makemkv/4.0.9/app-changelog.md b/stable/makemkv/4.0.9/app-changelog.md new file mode 100644 index 00000000000..f67cf0dfe29 --- /dev/null +++ b/stable/makemkv/4.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [makemkv-4.0.9](https://github.com/truecharts/charts/compare/makemkv-4.0.8...makemkv-4.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/makemkv/4.0.8/app-readme.md b/stable/makemkv/4.0.9/app-readme.md similarity index 100% rename from stable/makemkv/4.0.8/app-readme.md rename to stable/makemkv/4.0.9/app-readme.md diff --git a/stable/octoprint/8.0.7/charts/common-11.1.2.tgz b/stable/makemkv/4.0.9/charts/common-11.1.2.tgz similarity index 100% rename from stable/octoprint/8.0.7/charts/common-11.1.2.tgz rename to stable/makemkv/4.0.9/charts/common-11.1.2.tgz diff --git a/stable/makemkv/4.0.8/ix_values.yaml b/stable/makemkv/4.0.9/ix_values.yaml similarity index 100% rename from stable/makemkv/4.0.8/ix_values.yaml rename to stable/makemkv/4.0.9/ix_values.yaml diff --git a/stable/makemkv/4.0.9/questions.yaml b/stable/makemkv/4.0.9/questions.yaml new file mode 100644 index 00000000000..0614f3ece25 --- /dev/null +++ b/stable/makemkv/4.0.9/questions.yaml @@ -0,0 +1,2172 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: makemkv + group: "App Configuration" + label: "MakeMKV Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client)." + schema: + type: boolean + default: false + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: MAKEMKV_KEY + label: "MAKEMKV_KEY" + description: "MakeMKV registration key to use." + schema: + type: string + default: "BETA" + required: true + - variable: AUTO_DISC_RIPPER_INTERVAL + label: "AUTO_DISC_RIPPER_INTERVAL" + description: "Interval, in seconds, the automatic disc ripper checks for the presence of a DVD/Blu-ray discs." + schema: + type: int + default: 5 + required: true + - variable: AUTO_DISC_RIPPER_BD_MODE + label: "AUTO_DISC_RIPPER_BD_MODE" + description: "Rip mode of Blu-ray discs. mkv is the default mode, where a set of MKV files are produced. When set to backup, a copy of the (decrypted) file system is created instead. This applies to Blu-ray discs only. For DVD discs, MKV files are always produced." + schema: + type: string + default: "mkv" + required: true + - variable: AUTO_DISC_RIPPER_MAKEMKV_PROFILE + label: "AUTO_DISC_RIPPER_MAKEMKV_PROFILE" + description: "Filename of the custom MakeMKV profile the automatic disc ripper should use. The profile is expected to be found under the /config folder of the container." + schema: + type: string + default: "" + - variable: AUTO_DISC_RIPPER + label: "AUTO_DISC_RIPPER" + description: "When set to true, disc is ejected from the drive when ripping is terminated." + schema: + type: boolean + default: false + - variable: AUTO_DISC_RIPPER_EJECT + label: "AUTO_DISC_RIPPER_EJECT" + description: "When set to true, disc is ejected from the drive when ripping is terminated." + schema: + type: boolean + default: false + - variable: AUTO_DISC_RIPPER_PARALLEL_RIP + label: "AUTO_DISC_RIPPER_PARALLEL_RIP" + description: "When set to true, discs from all available optical drives are ripped in parallel. Else, each disc from optical drives is ripped one at time." + schema: + type: boolean + default: false + - variable: AUTO_DISC_RIPPER_NO_GUI_PROGRESS + label: "AUTO_DISC_RIPPER_NO_GUI_PROGRESS" + description: "When set to true, progress of discs ripped by the automatic disc ripper is not shown in the MakeMKV GUI." + schema: + type: boolean + default: false + - variable: AUTO_DISC_RIPPER_FORCE_UNIQUE_OUTPUT_DIR + label: "AUTO_DISC_RIPPER_FORCE_UNIQUE_OUTPUT_DIR" + description: "When set to false, files are written to /output/DISC_LABEL/, where DISC_LABEL is the label/name of the disc. If this directory exists, then files are written to /output/DISC_LABEL-XXXXXX, where XXXXXX are random readable characters. When set to true, the /output/DISC_LABEL-XXXXXX pattern is always used." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10180 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "VNC Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10181 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage" + description: "Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: output + label: "App Output Storage" + description: "Stores the Application Output." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/mymediaforalexa/3.0.7/templates/common.yaml b/stable/makemkv/4.0.9/templates/common.yaml similarity index 100% rename from stable/mymediaforalexa/3.0.7/templates/common.yaml rename to stable/makemkv/4.0.9/templates/common.yaml diff --git a/stable/octoprint/8.0.7/values.yaml b/stable/makemkv/4.0.9/values.yaml similarity index 100% rename from stable/octoprint/8.0.7/values.yaml rename to stable/makemkv/4.0.9/values.yaml diff --git a/stable/matomo/6.0.34/CHANGELOG.md b/stable/matomo/6.0.34/CHANGELOG.md deleted file mode 100644 index bf9b705415b..00000000000 --- a/stable/matomo/6.0.34/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [matomo-6.0.34](https://github.com/truecharts/charts/compare/matomo-6.0.33...matomo-6.0.34) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/matomo to v4.13.3 - - - - -## [matomo-6.0.33](https://github.com/truecharts/charts/compare/matomo-6.0.32...matomo-6.0.33) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [matomo-6.0.32](https://github.com/truecharts/charts/compare/matomo-6.0.31...matomo-6.0.32) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/matomo to 4.13.1 - - - - -## [matomo-6.0.31](https://github.com/truecharts/charts/compare/matomo-6.0.30...matomo-6.0.31) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [matomo-6.0.30](https://github.com/truecharts/charts/compare/matomo-6.0.29...matomo-6.0.30) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/matomo to 4.13.1 - - - - -## [matomo-6.0.29](https://github.com/truecharts/charts/compare/matomo-6.0.28...matomo-6.0.29) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/matomo to v4.13.1 - - - - -## [matomo-6.0.28](https://github.com/truecharts/charts/compare/matomo-6.0.27...matomo-6.0.28) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/matomo to 4.13.0 - - - - -## [matomo-6.0.27](https://github.com/truecharts/charts/compare/matomo-6.0.26...matomo-6.0.27) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [matomo-6.0.26](https://github.com/truecharts/charts/compare/matomo-6.0.25...matomo-6.0.26) (2023-01-13) - -### Chore - -- update container image tccr.io/truecharts/matomo to 4.13.0 - - - - -## [matomo-6.0.25](https://github.com/truecharts/charts/compare/matomo-6.0.24...matomo-6.0.25) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/matomo to 4.13.0 - - - - -## [matomo-6.0.24](https://github.com/truecharts/charts/compare/matomo-6.0.23...matomo-6.0.24) (2023-01-07) - -### Chore diff --git a/stable/matomo/6.0.34/Chart.yaml b/stable/matomo/6.0.34/Chart.yaml deleted file mode 100644 index 05b2ac91e67..00000000000 --- a/stable/matomo/6.0.34/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "4.13.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: mariadb.enabled - name: mariadb - repository: https://charts.truecharts.org/ - version: 5.0.25 -description: Matomo is the leading Free/Libre open analytics platform -home: https://truecharts.org/charts/stable/matomo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/matomo.png -keywords: - - analytics -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: matomo -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/matomo - - https://hub.docker.com/r/bitnami/matomo - - https://github.com/bitnami/bitnami-docker-matomo - - https://github.com/matomo-org/matomo -version: 6.0.34 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/matomo/6.0.34/app-changelog.md b/stable/matomo/6.0.34/app-changelog.md deleted file mode 100644 index 97e657905ea..00000000000 --- a/stable/matomo/6.0.34/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [matomo-6.0.34](https://github.com/truecharts/charts/compare/matomo-6.0.33...matomo-6.0.34) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/matomo to v4.13.3 - - \ No newline at end of file diff --git a/stable/matomo/6.0.35/CHANGELOG.md b/stable/matomo/6.0.35/CHANGELOG.md new file mode 100644 index 00000000000..282ecd6dcc9 --- /dev/null +++ b/stable/matomo/6.0.35/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [matomo-6.0.35](https://github.com/truecharts/charts/compare/matomo-6.0.34...matomo-6.0.35) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [matomo-6.0.34](https://github.com/truecharts/charts/compare/matomo-6.0.33...matomo-6.0.34) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/matomo to v4.13.3 + + + + +## [matomo-6.0.33](https://github.com/truecharts/charts/compare/matomo-6.0.32...matomo-6.0.33) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [matomo-6.0.32](https://github.com/truecharts/charts/compare/matomo-6.0.31...matomo-6.0.32) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/matomo to 4.13.1 + + + + +## [matomo-6.0.31](https://github.com/truecharts/charts/compare/matomo-6.0.30...matomo-6.0.31) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [matomo-6.0.30](https://github.com/truecharts/charts/compare/matomo-6.0.29...matomo-6.0.30) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/matomo to 4.13.1 + + + + +## [matomo-6.0.29](https://github.com/truecharts/charts/compare/matomo-6.0.28...matomo-6.0.29) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/matomo to v4.13.1 + + + + +## [matomo-6.0.28](https://github.com/truecharts/charts/compare/matomo-6.0.27...matomo-6.0.28) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/matomo to 4.13.0 + + + + +## [matomo-6.0.27](https://github.com/truecharts/charts/compare/matomo-6.0.26...matomo-6.0.27) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [matomo-6.0.26](https://github.com/truecharts/charts/compare/matomo-6.0.25...matomo-6.0.26) (2023-01-13) + +### Chore + +- update container image tccr.io/truecharts/matomo to 4.13.0 + + + + +## [matomo-6.0.25](https://github.com/truecharts/charts/compare/matomo-6.0.24...matomo-6.0.25) (2023-01-12) + +### Chore diff --git a/stable/matomo/6.0.35/Chart.yaml b/stable/matomo/6.0.35/Chart.yaml new file mode 100644 index 00000000000..a177d1dc5b9 --- /dev/null +++ b/stable/matomo/6.0.35/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "4.13.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 +description: Matomo is the leading Free/Libre open analytics platform +home: https://truecharts.org/charts/stable/matomo +icon: https://truecharts.org/img/hotlink-ok/chart-icons/matomo.png +keywords: + - analytics +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: matomo +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/matomo + - https://hub.docker.com/bitnami/matomo + - https://github.com/bitnami/bitnami-docker-matomo + - https://github.com/matomo-org/matomo +version: 6.0.35 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/octoprint/8.0.7/README.md b/stable/matomo/6.0.35/README.md similarity index 100% rename from stable/octoprint/8.0.7/README.md rename to stable/matomo/6.0.35/README.md diff --git a/stable/matomo/6.0.35/app-changelog.md b/stable/matomo/6.0.35/app-changelog.md new file mode 100644 index 00000000000..0fcd3fe9672 --- /dev/null +++ b/stable/matomo/6.0.35/app-changelog.md @@ -0,0 +1,9 @@ + + +## [matomo-6.0.35](https://github.com/truecharts/charts/compare/matomo-6.0.34...matomo-6.0.35) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/matomo/6.0.34/app-readme.md b/stable/matomo/6.0.35/app-readme.md similarity index 100% rename from stable/matomo/6.0.34/app-readme.md rename to stable/matomo/6.0.35/app-readme.md diff --git a/stable/openhab/4.0.9/charts/common-11.1.2.tgz b/stable/matomo/6.0.35/charts/common-11.1.2.tgz similarity index 100% rename from stable/openhab/4.0.9/charts/common-11.1.2.tgz rename to stable/matomo/6.0.35/charts/common-11.1.2.tgz diff --git a/stable/pydio-cells/7.0.19/charts/mariadb-5.0.25.tgz b/stable/matomo/6.0.35/charts/mariadb-5.0.25.tgz similarity index 100% rename from stable/pydio-cells/7.0.19/charts/mariadb-5.0.25.tgz rename to stable/matomo/6.0.35/charts/mariadb-5.0.25.tgz diff --git a/stable/matomo/6.0.34/ix_values.yaml b/stable/matomo/6.0.35/ix_values.yaml similarity index 100% rename from stable/matomo/6.0.34/ix_values.yaml rename to stable/matomo/6.0.35/ix_values.yaml diff --git a/stable/matomo/6.0.34/questions.yaml b/stable/matomo/6.0.35/questions.yaml similarity index 100% rename from stable/matomo/6.0.34/questions.yaml rename to stable/matomo/6.0.35/questions.yaml diff --git a/stable/ntfy/4.0.9/templates/common.yaml b/stable/matomo/6.0.35/templates/common.yaml similarity index 100% rename from stable/ntfy/4.0.9/templates/common.yaml rename to stable/matomo/6.0.35/templates/common.yaml diff --git a/stable/openhab/4.0.9/values.yaml b/stable/matomo/6.0.35/values.yaml similarity index 100% rename from stable/openhab/4.0.9/values.yaml rename to stable/matomo/6.0.35/values.yaml diff --git a/stable/mediainfo/3.0.10/CHANGELOG.md b/stable/mediainfo/3.0.10/CHANGELOG.md deleted file mode 100644 index 04368448a1c..00000000000 --- a/stable/mediainfo/3.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mediainfo-3.0.10](https://github.com/truecharts/charts/compare/mediainfo-3.0.9...mediainfo-3.0.10) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/mediainfo to v23.01.1 - - - - -## [mediainfo-3.0.9](https://github.com/truecharts/charts/compare/mediainfo-3.0.8...mediainfo-3.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mediainfo-3.0.8](https://github.com/truecharts/charts/compare/mediainfo-3.0.7...mediainfo-3.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mediainfo-3.0.7](https://github.com/truecharts/charts/compare/mediainfo-3.0.6...mediainfo-3.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mediainfo-3.0.6](https://github.com/truecharts/charts/compare/mediainfo-3.0.5...mediainfo-3.0.6) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/mediainfo to v22.12.2 - - - - -## [mediainfo-3.0.5](https://github.com/truecharts/charts/compare/mediainfo-3.0.4...mediainfo-3.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mediainfo-3.0.4](https://github.com/truecharts/charts/compare/mediainfo-3.0.3...mediainfo-3.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mediainfo-3.0.3](https://github.com/truecharts/charts/compare/mediainfo-3.0.2...mediainfo-3.0.3) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/mediainfo to v22.12.1 - - - - -## [mediainfo-3.0.2](https://github.com/truecharts/charts/compare/mediainfo-3.0.1...mediainfo-3.0.2) (2022-11-30) - - - - -## [mediainfo-3.0.2](https://github.com/truecharts/charts/compare/mediainfo-3.0.1...mediainfo-3.0.2) (2022-11-30) - - - - -## [mediainfo-3.0.2](https://github.com/truecharts/charts/compare/mediainfo-3.0.1...mediainfo-3.0.2) (2022-11-30) - - - - -## [mediainfo-3.0.2](https://github.com/truecharts/charts/compare/mediainfo-3.0.1...mediainfo-3.0.2) (2022-11-30) - - - - -## [mediainfo-3.0.2](https://github.com/truecharts/charts/compare/mediainfo-3.0.1...mediainfo-3.0.2) (2022-11-30) diff --git a/stable/mediainfo/3.0.10/Chart.yaml b/stable/mediainfo/3.0.10/Chart.yaml deleted file mode 100644 index 4e6358abc3a..00000000000 --- a/stable/mediainfo/3.0.10/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "23.01.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files. -home: https://truecharts.org/charts/stable/mediainfo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mediainfo.png -keywords: - - info - - media -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mediainfo -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/mediainfo - - https://github.com/jlesage/docker-mediainfo - - https://hub.docker.com/r/jlesage/mediainfo/ -type: application -version: 3.0.10 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/mediainfo/3.0.10/app-changelog.md b/stable/mediainfo/3.0.10/app-changelog.md deleted file mode 100644 index 7f54d0dc482..00000000000 --- a/stable/mediainfo/3.0.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mediainfo-3.0.10](https://github.com/truecharts/charts/compare/mediainfo-3.0.9...mediainfo-3.0.10) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/mediainfo to v23.01.1 - - \ No newline at end of file diff --git a/stable/mediainfo/3.0.10/app-readme.md b/stable/mediainfo/3.0.10/app-readme.md deleted file mode 100644 index 09eb7cc6e66..00000000000 --- a/stable/mediainfo/3.0.10/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/mediainfo](https://truecharts.org/charts/stable/mediainfo) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/mediainfo/3.0.10/questions.yaml b/stable/mediainfo/3.0.10/questions.yaml deleted file mode 100644 index 8fdf5120e7f..00000000000 --- a/stable/mediainfo/3.0.10/questions.yaml +++ /dev/null @@ -1,2013 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - # Portal - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: mediainfo - group: "App Configuration" - label: "Media Info Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10264 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10265 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage" - description: "Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/mediainfo/3.0.11/CHANGELOG.md b/stable/mediainfo/3.0.11/CHANGELOG.md new file mode 100644 index 00000000000..d74e3388b06 --- /dev/null +++ b/stable/mediainfo/3.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mediainfo-3.0.11](https://github.com/truecharts/charts/compare/mediainfo-3.0.10...mediainfo-3.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mediainfo-3.0.10](https://github.com/truecharts/charts/compare/mediainfo-3.0.9...mediainfo-3.0.10) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/mediainfo to v23.01.1 + + + + +## [mediainfo-3.0.9](https://github.com/truecharts/charts/compare/mediainfo-3.0.8...mediainfo-3.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mediainfo-3.0.8](https://github.com/truecharts/charts/compare/mediainfo-3.0.7...mediainfo-3.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mediainfo-3.0.7](https://github.com/truecharts/charts/compare/mediainfo-3.0.6...mediainfo-3.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mediainfo-3.0.6](https://github.com/truecharts/charts/compare/mediainfo-3.0.5...mediainfo-3.0.6) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/mediainfo to v22.12.2 + + + + +## [mediainfo-3.0.5](https://github.com/truecharts/charts/compare/mediainfo-3.0.4...mediainfo-3.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mediainfo-3.0.4](https://github.com/truecharts/charts/compare/mediainfo-3.0.3...mediainfo-3.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mediainfo-3.0.3](https://github.com/truecharts/charts/compare/mediainfo-3.0.2...mediainfo-3.0.3) (2022-12-12) + +### Chore + +- update container image tccr.io/truecharts/mediainfo to v22.12.1 + + + + +## [mediainfo-3.0.2](https://github.com/truecharts/charts/compare/mediainfo-3.0.1...mediainfo-3.0.2) (2022-11-30) + + + + +## [mediainfo-3.0.2](https://github.com/truecharts/charts/compare/mediainfo-3.0.1...mediainfo-3.0.2) (2022-11-30) + + + + +## [mediainfo-3.0.2](https://github.com/truecharts/charts/compare/mediainfo-3.0.1...mediainfo-3.0.2) (2022-11-30) + diff --git a/stable/mediainfo/3.0.11/Chart.yaml b/stable/mediainfo/3.0.11/Chart.yaml new file mode 100644 index 00000000000..e601fc08453 --- /dev/null +++ b/stable/mediainfo/3.0.11/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "23.01.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files. +home: https://truecharts.org/charts/stable/mediainfo +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mediainfo.png +keywords: + - info + - media +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mediainfo +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/mediainfo + - https://hub.docker.com/jlesage/mediainfo + - https://github.com/jlesage/docker-mediainfo +type: application +version: 3.0.11 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/openhab/4.0.9/README.md b/stable/mediainfo/3.0.11/README.md similarity index 100% rename from stable/openhab/4.0.9/README.md rename to stable/mediainfo/3.0.11/README.md diff --git a/stable/mediainfo/3.0.11/app-changelog.md b/stable/mediainfo/3.0.11/app-changelog.md new file mode 100644 index 00000000000..23e1b4eb5c7 --- /dev/null +++ b/stable/mediainfo/3.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mediainfo-3.0.11](https://github.com/truecharts/charts/compare/mediainfo-3.0.10...mediainfo-3.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/mediainfo/3.0.11/app-readme.md b/stable/mediainfo/3.0.11/app-readme.md new file mode 100644 index 00000000000..cc2e8111085 --- /dev/null +++ b/stable/mediainfo/3.0.11/app-readme.md @@ -0,0 +1,8 @@ +MediaInfo is a convenient unified display of the most relevant technical and tag data for video and audio files. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/mediainfo](https://truecharts.org/charts/stable/mediainfo) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/openldap/9.0.7/charts/common-11.1.2.tgz b/stable/mediainfo/3.0.11/charts/common-11.1.2.tgz similarity index 100% rename from stable/openldap/9.0.7/charts/common-11.1.2.tgz rename to stable/mediainfo/3.0.11/charts/common-11.1.2.tgz diff --git a/stable/mediainfo/3.0.10/ix_values.yaml b/stable/mediainfo/3.0.11/ix_values.yaml similarity index 100% rename from stable/mediainfo/3.0.10/ix_values.yaml rename to stable/mediainfo/3.0.11/ix_values.yaml diff --git a/stable/mediainfo/3.0.11/questions.yaml b/stable/mediainfo/3.0.11/questions.yaml new file mode 100644 index 00000000000..9e457ee57e2 --- /dev/null +++ b/stable/mediainfo/3.0.11/questions.yaml @@ -0,0 +1,2054 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + # Portal + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: mediainfo + group: "App Configuration" + label: "Media Info Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10264 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10265 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage" + description: "Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/octoprint/8.0.7/templates/common.yaml b/stable/mediainfo/3.0.11/templates/common.yaml similarity index 100% rename from stable/octoprint/8.0.7/templates/common.yaml rename to stable/mediainfo/3.0.11/templates/common.yaml diff --git a/stable/openldap/9.0.7/values.yaml b/stable/mediainfo/3.0.11/values.yaml similarity index 100% rename from stable/openldap/9.0.7/values.yaml rename to stable/mediainfo/3.0.11/values.yaml diff --git a/stable/meshroom/4.0.7/CHANGELOG.md b/stable/meshroom/4.0.7/CHANGELOG.md deleted file mode 100644 index 0401094ca2a..00000000000 --- a/stable/meshroom/4.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [meshroom-4.0.7](https://github.com/truecharts/charts/compare/meshroom-4.0.6...meshroom-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [meshroom-4.0.6](https://github.com/truecharts/charts/compare/meshroom-4.0.5...meshroom-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [meshroom-4.0.5](https://github.com/truecharts/charts/compare/meshroom-4.0.4...meshroom-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [meshroom-4.0.4](https://github.com/truecharts/charts/compare/meshroom-4.0.3...meshroom-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [meshroom-4.0.3](https://github.com/truecharts/charts/compare/meshroom-4.0.2...meshroom-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - - - -## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) - - diff --git a/stable/meshroom/4.0.7/Chart.yaml b/stable/meshroom/4.0.7/Chart.yaml deleted file mode 100644 index bbb7fabedca..00000000000 --- a/stable/meshroom/4.0.7/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "2.4.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Meshroom is a free, open-source 3D Reconstruction Software based on the AliceVision Photogrammetric Computer Vision framework. -home: https://truecharts.org/charts/stable/meshroom -icon: https://truecharts.org/img/hotlink-ok/chart-icons/meshroom.png -keywords: - - meshroom -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: meshroom -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/meshroom - - https://github.com/alicevision/meshroom - - https://hub.docker.com/r/alicevision/meshroom -version: 4.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/meshroom/4.0.7/app-changelog.md b/stable/meshroom/4.0.7/app-changelog.md deleted file mode 100644 index 041fff2e685..00000000000 --- a/stable/meshroom/4.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [meshroom-4.0.7](https://github.com/truecharts/charts/compare/meshroom-4.0.6...meshroom-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/meshroom/4.0.7/app-readme.md b/stable/meshroom/4.0.7/app-readme.md deleted file mode 100644 index 40897580ed7..00000000000 --- a/stable/meshroom/4.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Meshroom is a free, open-source 3D Reconstruction Software based on the AliceVision Photogrammetric Computer Vision framework. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/meshroom](https://truecharts.org/charts/stable/meshroom) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/meshroom/4.0.7/questions.yaml b/stable/meshroom/4.0.7/questions.yaml deleted file mode 100644 index cc4e983d30a..00000000000 --- a/stable/meshroom/4.0.7/questions.yaml +++ /dev/null @@ -1,1830 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - # Docker specific env - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10243 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/meshroom/4.0.8/CHANGELOG.md b/stable/meshroom/4.0.8/CHANGELOG.md new file mode 100644 index 00000000000..2c27a84fafd --- /dev/null +++ b/stable/meshroom/4.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [meshroom-4.0.8](https://github.com/truecharts/charts/compare/meshroom-4.0.7...meshroom-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [meshroom-4.0.7](https://github.com/truecharts/charts/compare/meshroom-4.0.6...meshroom-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [meshroom-4.0.6](https://github.com/truecharts/charts/compare/meshroom-4.0.5...meshroom-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [meshroom-4.0.5](https://github.com/truecharts/charts/compare/meshroom-4.0.4...meshroom-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [meshroom-4.0.4](https://github.com/truecharts/charts/compare/meshroom-4.0.3...meshroom-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [meshroom-4.0.3](https://github.com/truecharts/charts/compare/meshroom-4.0.2...meshroom-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) + + + + +## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) + + + + +## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) + + + + +## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) + + + + +## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) + + + + +## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) + + + + +## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) + + + + +## [meshroom-4.0.2](https://github.com/truecharts/charts/compare/meshroom-4.0.1...meshroom-4.0.2) (2022-11-30) + + + diff --git a/stable/meshroom/4.0.8/Chart.yaml b/stable/meshroom/4.0.8/Chart.yaml new file mode 100644 index 00000000000..ebedcc59049 --- /dev/null +++ b/stable/meshroom/4.0.8/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "2.4.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Meshroom is a free, open-source 3D Reconstruction Software based on the AliceVision Photogrammetric Computer Vision framework. +home: https://truecharts.org/charts/stable/meshroom +icon: https://truecharts.org/img/hotlink-ok/chart-icons/meshroom.png +keywords: + - meshroom +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: meshroom +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/meshroom + - https://hub.docker.com/alicevision/meshroom + - https://github.com/alicevision/meshroom +version: 4.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/openldap/9.0.7/README.md b/stable/meshroom/4.0.8/README.md similarity index 100% rename from stable/openldap/9.0.7/README.md rename to stable/meshroom/4.0.8/README.md diff --git a/stable/meshroom/4.0.8/app-changelog.md b/stable/meshroom/4.0.8/app-changelog.md new file mode 100644 index 00000000000..5e460981e76 --- /dev/null +++ b/stable/meshroom/4.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [meshroom-4.0.8](https://github.com/truecharts/charts/compare/meshroom-4.0.7...meshroom-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/meshroom/4.0.8/app-readme.md b/stable/meshroom/4.0.8/app-readme.md new file mode 100644 index 00000000000..2abd9ad388c --- /dev/null +++ b/stable/meshroom/4.0.8/app-readme.md @@ -0,0 +1,8 @@ +Meshroom is a free, open-source 3D Reconstruction Software based on the AliceVision Photogrammetric Computer Vision framework. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/meshroom](https://truecharts.org/charts/stable/meshroom) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/openspeedtest/3.0.14/charts/common-11.1.2.tgz b/stable/meshroom/4.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/openspeedtest/3.0.14/charts/common-11.1.2.tgz rename to stable/meshroom/4.0.8/charts/common-11.1.2.tgz diff --git a/stable/meshroom/4.0.7/ix_values.yaml b/stable/meshroom/4.0.8/ix_values.yaml similarity index 100% rename from stable/meshroom/4.0.7/ix_values.yaml rename to stable/meshroom/4.0.8/ix_values.yaml diff --git a/stable/meshroom/4.0.8/questions.yaml b/stable/meshroom/4.0.8/questions.yaml new file mode 100644 index 00000000000..10df42d8026 --- /dev/null +++ b/stable/meshroom/4.0.8/questions.yaml @@ -0,0 +1,1871 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + # Docker specific env + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10243 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/openspeedtest/3.0.14/templates/common.yaml b/stable/meshroom/4.0.8/templates/common.yaml similarity index 100% rename from stable/openspeedtest/3.0.14/templates/common.yaml rename to stable/meshroom/4.0.8/templates/common.yaml diff --git a/stable/openspeedtest/3.0.14/values.yaml b/stable/meshroom/4.0.8/values.yaml similarity index 100% rename from stable/openspeedtest/3.0.14/values.yaml rename to stable/meshroom/4.0.8/values.yaml diff --git a/stable/miniflux/10.0.22/CHANGELOG.md b/stable/miniflux/10.0.22/CHANGELOG.md new file mode 100644 index 00000000000..41d5b79e08d --- /dev/null +++ b/stable/miniflux/10.0.22/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [miniflux-10.0.22](https://github.com/truecharts/charts/compare/miniflux-10.0.21...miniflux-10.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [miniflux-10.0.21](https://github.com/truecharts/charts/compare/miniflux-10.0.20...miniflux-10.0.21) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/miniflux to v2.0.42 + + + + +## [miniflux-10.0.20](https://github.com/truecharts/charts/compare/miniflux-10.0.19...miniflux-10.0.20) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [miniflux-10.0.19](https://github.com/truecharts/charts/compare/miniflux-10.0.18...miniflux-10.0.19) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [miniflux-10.0.18](https://github.com/truecharts/charts/compare/miniflux-10.0.17...miniflux-10.0.18) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [miniflux-10.0.17](https://github.com/truecharts/charts/compare/miniflux-10.0.16...miniflux-10.0.17) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [miniflux-10.0.16](https://github.com/truecharts/charts/compare/miniflux-10.0.15...miniflux-10.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [miniflux-10.0.15](https://github.com/truecharts/charts/compare/miniflux-10.0.14...miniflux-10.0.15) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [miniflux-10.0.14](https://github.com/truecharts/charts/compare/miniflux-10.0.13...miniflux-10.0.14) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [miniflux-10.0.13](https://github.com/truecharts/charts/compare/miniflux-10.0.12...miniflux-10.0.13) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [miniflux-10.0.12](https://github.com/truecharts/charts/compare/miniflux-10.0.11...miniflux-10.0.12) (2022-12-18) + +### Chore diff --git a/stable/miniflux/10.0.22/Chart.yaml b/stable/miniflux/10.0.22/Chart.yaml new file mode 100644 index 00000000000..de3157ef2c5 --- /dev/null +++ b/stable/miniflux/10.0.22/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "2.0.42" +description: Miniflux is a minimalist and opinionated feed reader. +name: miniflux +version: 10.0.22 +kubeVersion: ">=1.16.0-0" +keywords: + - miniflux + - rss + - news +home: https://truecharts.org/charts/stable/miniflux +icon: https://truecharts.org/img/hotlink-ok/chart-icons/miniflux.png +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/miniflux + - https://hub.docker.com/miniflux/miniflux + - https://github.com/miniflux/v2 +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/openspeedtest/3.0.14/README.md b/stable/miniflux/10.0.22/README.md similarity index 100% rename from stable/openspeedtest/3.0.14/README.md rename to stable/miniflux/10.0.22/README.md diff --git a/stable/miniflux/10.0.22/app-changelog.md b/stable/miniflux/10.0.22/app-changelog.md new file mode 100644 index 00000000000..2a92039741e --- /dev/null +++ b/stable/miniflux/10.0.22/app-changelog.md @@ -0,0 +1,9 @@ + + +## [miniflux-10.0.22](https://github.com/truecharts/charts/compare/miniflux-10.0.21...miniflux-10.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/miniflux/10.0.22/app-readme.md b/stable/miniflux/10.0.22/app-readme.md new file mode 100644 index 00000000000..b81fbe934ac --- /dev/null +++ b/stable/miniflux/10.0.22/app-readme.md @@ -0,0 +1,8 @@ +Miniflux is a minimalist and opinionated feed reader. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/miniflux](https://truecharts.org/charts/stable/miniflux) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/outline/6.0.20/charts/common-11.1.2.tgz b/stable/miniflux/10.0.22/charts/common-11.1.2.tgz similarity index 100% rename from stable/outline/6.0.20/charts/common-11.1.2.tgz rename to stable/miniflux/10.0.22/charts/common-11.1.2.tgz diff --git a/stable/strapi/8.0.26/charts/postgresql-11.0.22.tgz b/stable/miniflux/10.0.22/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/strapi/8.0.26/charts/postgresql-11.0.22.tgz rename to stable/miniflux/10.0.22/charts/postgresql-11.0.22.tgz diff --git a/stable/miniflux/10.0.22/ix_values.yaml b/stable/miniflux/10.0.22/ix_values.yaml new file mode 100644 index 00000000000..b4aafd1cb21 --- /dev/null +++ b/stable/miniflux/10.0.22/ix_values.yaml @@ -0,0 +1,51 @@ +image: + repository: tccr.io/truecharts/miniflux + tag: 2.0.42@sha256:61ea481fd81efcc9f12e355643eeafc1bc56ceebd5036b55423d5e4371395db9 + pullPolicy: IfNotPresent + +secretEnv: + # -- Admin user login, it's used only if `CREATE_ADMIN` is enabled. + ADMIN_USERNAME: "admin" + # -- Admin user password, it's used only if `CREATE_ADMIN` is enabled. + ADMIN_PASSWORD: "changeme" +env: + RUN_MIGRATIONS: 1 + CREATE_ADMIN: 1 + DATABASE_URL: + secretKeyRef: + name: dbcreds + key: urlnossl + +service: + main: + ports: + main: + port: 10091 + targetPort: 8080 + +persistence: + config: + enabled: true + mountPath: "/config" + +probes: + liveness: + enabled: true + custom: true + spec: + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + httpGet: + path: /healthcheck + port: 8080 + +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlDatabase: miniflux + postgresqlUsername: miniflux + +portal: + enabled: true diff --git a/stable/miniflux/10.0.22/questions.yaml b/stable/miniflux/10.0.22/questions.yaml new file mode 100644 index 00000000000..07879583be6 --- /dev/null +++ b/stable/miniflux/10.0.22/questions.yaml @@ -0,0 +1,1909 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ADMIN_USERNAME + label: "ADMIN_USERNAME" + description: "Sets the ADMIN_USERNAME env var" + schema: + type: string + default: "admin" + - variable: ADMIN_PASSWORD + label: "ADMIN_PASSWORD" + description: "Sets the ADMIN_PASSWORD env var" + schema: + type: string + default: "changeme" + private: true + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: RUN_MIGRATIONS + label: "RUN_MIGRATIONS" + description: "Sets the RUN_MIGRATIONS env var" + schema: + type: int + default: 1 + - variable: CREATE_ADMIN + label: "CREATE_ADMIN" + description: "Sets the CREATE_ADMIN env var" + schema: + type: int + default: 1 + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10091 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/owncast/8.0.8/templates/common.yaml b/stable/miniflux/10.0.22/templates/common.yaml similarity index 100% rename from stable/owncast/8.0.8/templates/common.yaml rename to stable/miniflux/10.0.22/templates/common.yaml diff --git a/stable/outline/6.0.20/values.yaml b/stable/miniflux/10.0.22/values.yaml similarity index 100% rename from stable/outline/6.0.20/values.yaml rename to stable/miniflux/10.0.22/values.yaml diff --git a/stable/minio-console/5.0.13/CHANGELOG.md b/stable/minio-console/5.0.13/CHANGELOG.md deleted file mode 100644 index 060a79f49e0..00000000000 --- a/stable/minio-console/5.0.13/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [minio-console-5.0.13](https://github.com/truecharts/charts/compare/minio-console-5.0.12...minio-console-5.0.13) (2023-01-16) - -### Chore - -- update container image tccr.io/truecharts/minio-console to v0.22.5 - - - - -## [minio-console-5.0.12](https://github.com/truecharts/charts/compare/minio-console-5.0.11...minio-console-5.0.12) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [minio-console-5.0.11](https://github.com/truecharts/charts/compare/minio-console-5.0.10...minio-console-5.0.11) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [minio-console-5.0.10](https://github.com/truecharts/charts/compare/minio-console-5.0.9...minio-console-5.0.10) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [minio-console-5.0.9](https://github.com/truecharts/charts/compare/minio-console-5.0.8...minio-console-5.0.9) (2022-12-22) - -### Chore - -- update container image tccr.io/truecharts/minio-console to v0.22.3 - - - - -## [minio-console-5.0.8](https://github.com/truecharts/charts/compare/minio-console-5.0.7...minio-console-5.0.8) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [minio-console-5.0.7](https://github.com/truecharts/charts/compare/minio-console-5.0.6...minio-console-5.0.7) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [minio-console-5.0.6](https://github.com/truecharts/charts/compare/minio-console-5.0.5...minio-console-5.0.6) (2022-12-11) - -### Chore - -- update container image tccr.io/truecharts/minio-console to v0.22.2 - - - - -## [minio-console-5.0.5](https://github.com/truecharts/charts/compare/minio-console-5.0.4...minio-console-5.0.5) (2022-12-07) - -### Chore - -- update container image tccr.io/truecharts/minio-console to v0.22.1 - - - - -## [minio-console-5.0.4](https://github.com/truecharts/charts/compare/minio-console-5.0.3...minio-console-5.0.4) (2022-12-03) - - - - -## [minio-console-5.0.3](https://github.com/truecharts/charts/compare/minio-console-5.0.2...minio-console-5.0.3) (2022-11-30) - - - - -## [minio-console-5.0.3](https://github.com/truecharts/charts/compare/minio-console-5.0.2...minio-console-5.0.3) (2022-11-30) - diff --git a/stable/minio-console/5.0.13/Chart.yaml b/stable/minio-console/5.0.13/Chart.yaml deleted file mode 100644 index 4c902b419db..00000000000 --- a/stable/minio-console/5.0.13/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "0.22.5" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: A management console for minio server and operator -home: https://truecharts.org/charts/stable/minio-console -icon: https://truecharts.org/img/hotlink-ok/chart-icons/minio-console.png -keywords: - - minio-console - - minio - - s3 -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: minio-console -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/minio-console - - https://github.com/minio/console -version: 5.0.13 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/minio-console/5.0.13/app-changelog.md b/stable/minio-console/5.0.13/app-changelog.md deleted file mode 100644 index 5744fec92b2..00000000000 --- a/stable/minio-console/5.0.13/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [minio-console-5.0.13](https://github.com/truecharts/charts/compare/minio-console-5.0.12...minio-console-5.0.13) (2023-01-16) - -### Chore - -- update container image tccr.io/truecharts/minio-console to v0.22.5 - - \ No newline at end of file diff --git a/stable/minio-console/5.0.13/questions.yaml b/stable/minio-console/5.0.13/questions.yaml deleted file mode 100644 index 4800571b0cf..00000000000 --- a/stable/minio-console/5.0.13/questions.yaml +++ /dev/null @@ -1,1858 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: CONSOLE_PBKDF_PASSPHRASE - label: "CONSOLE_PBKDF_PASSPHRASE" - schema: - type: string - default: "changeme" - - variable: CONSOLE_PBKDF_SALT - label: "CONSOLE_PBKDF_SALT" - schema: - type: string - default: "changeme" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: CONSOLE_MINIO_SERVER - label: "CONSOLE_MINIO_SERVER" - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 9090 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/minio-console/5.0.14/CHANGELOG.md b/stable/minio-console/5.0.14/CHANGELOG.md new file mode 100644 index 00000000000..e85be994f1a --- /dev/null +++ b/stable/minio-console/5.0.14/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [minio-console-5.0.14](https://github.com/truecharts/charts/compare/minio-console-5.0.13...minio-console-5.0.14) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [minio-console-5.0.13](https://github.com/truecharts/charts/compare/minio-console-5.0.12...minio-console-5.0.13) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/minio-console to v0.22.5 + + + + +## [minio-console-5.0.12](https://github.com/truecharts/charts/compare/minio-console-5.0.11...minio-console-5.0.12) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [minio-console-5.0.11](https://github.com/truecharts/charts/compare/minio-console-5.0.10...minio-console-5.0.11) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [minio-console-5.0.10](https://github.com/truecharts/charts/compare/minio-console-5.0.9...minio-console-5.0.10) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [minio-console-5.0.9](https://github.com/truecharts/charts/compare/minio-console-5.0.8...minio-console-5.0.9) (2022-12-22) + +### Chore + +- update container image tccr.io/truecharts/minio-console to v0.22.3 + + + + +## [minio-console-5.0.8](https://github.com/truecharts/charts/compare/minio-console-5.0.7...minio-console-5.0.8) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [minio-console-5.0.7](https://github.com/truecharts/charts/compare/minio-console-5.0.6...minio-console-5.0.7) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [minio-console-5.0.6](https://github.com/truecharts/charts/compare/minio-console-5.0.5...minio-console-5.0.6) (2022-12-11) + +### Chore + +- update container image tccr.io/truecharts/minio-console to v0.22.2 + + + + +## [minio-console-5.0.5](https://github.com/truecharts/charts/compare/minio-console-5.0.4...minio-console-5.0.5) (2022-12-07) + +### Chore + +- update container image tccr.io/truecharts/minio-console to v0.22.1 + + + + +## [minio-console-5.0.4](https://github.com/truecharts/charts/compare/minio-console-5.0.3...minio-console-5.0.4) (2022-12-03) + + diff --git a/stable/minio-console/5.0.14/Chart.yaml b/stable/minio-console/5.0.14/Chart.yaml new file mode 100644 index 00000000000..8d49d6c0e8d --- /dev/null +++ b/stable/minio-console/5.0.14/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "0.22.5" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: A management console for minio server and operator +home: https://truecharts.org/charts/stable/minio-console +icon: https://truecharts.org/img/hotlink-ok/chart-icons/minio-console.png +keywords: + - minio-console + - minio + - s3 +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: minio-console +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/minio-console + - https://hub.docker.com/minio/console + - https://github.com/minio/console +version: 5.0.14 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/outline/6.0.20/README.md b/stable/minio-console/5.0.14/README.md similarity index 100% rename from stable/outline/6.0.20/README.md rename to stable/minio-console/5.0.14/README.md diff --git a/stable/minio-console/5.0.14/app-changelog.md b/stable/minio-console/5.0.14/app-changelog.md new file mode 100644 index 00000000000..3bd20bc871d --- /dev/null +++ b/stable/minio-console/5.0.14/app-changelog.md @@ -0,0 +1,9 @@ + + +## [minio-console-5.0.14](https://github.com/truecharts/charts/compare/minio-console-5.0.13...minio-console-5.0.14) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/minio-console/5.0.13/app-readme.md b/stable/minio-console/5.0.14/app-readme.md similarity index 100% rename from stable/minio-console/5.0.13/app-readme.md rename to stable/minio-console/5.0.14/app-readme.md diff --git a/stable/owncast/8.0.8/charts/common-11.1.2.tgz b/stable/minio-console/5.0.14/charts/common-11.1.2.tgz similarity index 100% rename from stable/owncast/8.0.8/charts/common-11.1.2.tgz rename to stable/minio-console/5.0.14/charts/common-11.1.2.tgz diff --git a/stable/minio-console/5.0.13/ix_values.yaml b/stable/minio-console/5.0.14/ix_values.yaml similarity index 100% rename from stable/minio-console/5.0.13/ix_values.yaml rename to stable/minio-console/5.0.14/ix_values.yaml diff --git a/stable/minio-console/5.0.14/questions.yaml b/stable/minio-console/5.0.14/questions.yaml new file mode 100644 index 00000000000..c1a72707af5 --- /dev/null +++ b/stable/minio-console/5.0.14/questions.yaml @@ -0,0 +1,1899 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: CONSOLE_PBKDF_PASSPHRASE + label: "CONSOLE_PBKDF_PASSPHRASE" + schema: + type: string + default: "changeme" + - variable: CONSOLE_PBKDF_SALT + label: "CONSOLE_PBKDF_SALT" + schema: + type: string + default: "changeme" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: CONSOLE_MINIO_SERVER + label: "CONSOLE_MINIO_SERVER" + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9090 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/photoview/7.0.19/templates/common.yaml b/stable/minio-console/5.0.14/templates/common.yaml similarity index 100% rename from stable/photoview/7.0.19/templates/common.yaml rename to stable/minio-console/5.0.14/templates/common.yaml diff --git a/stable/owncast/8.0.8/values.yaml b/stable/minio-console/5.0.14/values.yaml similarity index 100% rename from stable/owncast/8.0.8/values.yaml rename to stable/minio-console/5.0.14/values.yaml diff --git a/stable/mkvcleaver/3.0.7/CHANGELOG.md b/stable/mkvcleaver/3.0.7/CHANGELOG.md deleted file mode 100644 index 904254c62e6..00000000000 --- a/stable/mkvcleaver/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mkvcleaver-3.0.7](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.6...mkvcleaver-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mkvcleaver-3.0.6](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.5...mkvcleaver-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mkvcleaver-3.0.5](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.4...mkvcleaver-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mkvcleaver-3.0.4](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.3...mkvcleaver-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mkvcleaver-3.0.3](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.2...mkvcleaver-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - - - -## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) - - diff --git a/stable/mkvcleaver/3.0.7/Chart.yaml b/stable/mkvcleaver/3.0.7/Chart.yaml deleted file mode 100644 index 03abcc2a8b1..00000000000 --- a/stable/mkvcleaver/3.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "1.3.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: MKVCleaver is a tool for batch extraction of data from MKV files -home: https://truecharts.org/charts/stable/mkvcleaver -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mkvcleaver.png -keywords: - - media - - mkvcleaver -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mkvcleaver -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/mkvcleaver - - https://github.com/jlesage/docker-mkvcleaver - - https://hub.docker.com/r/jlesage/mkvcleaver/ -type: application -version: 3.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/mkvcleaver/3.0.7/app-changelog.md b/stable/mkvcleaver/3.0.7/app-changelog.md deleted file mode 100644 index 3baf6d069f4..00000000000 --- a/stable/mkvcleaver/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mkvcleaver-3.0.7](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.6...mkvcleaver-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/mkvcleaver/3.0.7/app-readme.md b/stable/mkvcleaver/3.0.7/app-readme.md deleted file mode 100644 index 1301ebc40a7..00000000000 --- a/stable/mkvcleaver/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -MKVCleaver is a tool for batch extraction of data from MKV files - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/mkvcleaver](https://truecharts.org/charts/stable/mkvcleaver) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/mkvcleaver/3.0.7/questions.yaml b/stable/mkvcleaver/3.0.7/questions.yaml deleted file mode 100644 index eee6d449067..00000000000 --- a/stable/mkvcleaver/3.0.7/questions.yaml +++ /dev/null @@ -1,2013 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - # Portal - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: mkvcleaver - group: "App Configuration" - label: "MKV Cleaver Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10270 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10271 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage" - description: "Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/mkvcleaver/3.0.8/CHANGELOG.md b/stable/mkvcleaver/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..ff3718a9f1f --- /dev/null +++ b/stable/mkvcleaver/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mkvcleaver-3.0.8](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.7...mkvcleaver-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mkvcleaver-3.0.7](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.6...mkvcleaver-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mkvcleaver-3.0.6](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.5...mkvcleaver-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mkvcleaver-3.0.5](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.4...mkvcleaver-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mkvcleaver-3.0.4](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.3...mkvcleaver-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mkvcleaver-3.0.3](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.2...mkvcleaver-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) + + + + +## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) + + + + +## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) + + + + +## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) + + + + +## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) + + + + +## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) + + + + +## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) + + + + +## [mkvcleaver-3.0.2](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.1...mkvcleaver-3.0.2) (2022-11-30) + + + diff --git a/stable/mkvcleaver/3.0.8/Chart.yaml b/stable/mkvcleaver/3.0.8/Chart.yaml new file mode 100644 index 00000000000..f3da13b691c --- /dev/null +++ b/stable/mkvcleaver/3.0.8/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "1.3.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: MKVCleaver is a tool for batch extraction of data from MKV files +home: https://truecharts.org/charts/stable/mkvcleaver +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mkvcleaver.png +keywords: + - media + - mkvcleaver +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mkvcleaver +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/mkvcleaver + - https://hub.docker.com/jlesage/mkvcleaver + - https://github.com/jlesage/docker-mkvcleaver +type: application +version: 3.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/owncast/8.0.8/README.md b/stable/mkvcleaver/3.0.8/README.md similarity index 100% rename from stable/owncast/8.0.8/README.md rename to stable/mkvcleaver/3.0.8/README.md diff --git a/stable/mkvcleaver/3.0.8/app-changelog.md b/stable/mkvcleaver/3.0.8/app-changelog.md new file mode 100644 index 00000000000..24792e337ad --- /dev/null +++ b/stable/mkvcleaver/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mkvcleaver-3.0.8](https://github.com/truecharts/charts/compare/mkvcleaver-3.0.7...mkvcleaver-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/mkvcleaver/3.0.8/app-readme.md b/stable/mkvcleaver/3.0.8/app-readme.md new file mode 100644 index 00000000000..364aad1f0fb --- /dev/null +++ b/stable/mkvcleaver/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +MKVCleaver is a tool for batch extraction of data from MKV files + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/mkvcleaver](https://truecharts.org/charts/stable/mkvcleaver) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/pasta/3.0.7/charts/common-11.1.2.tgz b/stable/mkvcleaver/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/pasta/3.0.7/charts/common-11.1.2.tgz rename to stable/mkvcleaver/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/mkvcleaver/3.0.7/ix_values.yaml b/stable/mkvcleaver/3.0.8/ix_values.yaml similarity index 100% rename from stable/mkvcleaver/3.0.7/ix_values.yaml rename to stable/mkvcleaver/3.0.8/ix_values.yaml diff --git a/stable/mkvcleaver/3.0.8/questions.yaml b/stable/mkvcleaver/3.0.8/questions.yaml new file mode 100644 index 00000000000..c53ee12e4a0 --- /dev/null +++ b/stable/mkvcleaver/3.0.8/questions.yaml @@ -0,0 +1,2054 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + # Portal + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: mkvcleaver + group: "App Configuration" + label: "MKV Cleaver Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10270 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10271 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage" + description: "Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/phpldapadmin/8.0.7/templates/common.yaml b/stable/mkvcleaver/3.0.8/templates/common.yaml similarity index 100% rename from stable/phpldapadmin/8.0.7/templates/common.yaml rename to stable/mkvcleaver/3.0.8/templates/common.yaml diff --git a/stable/pasta/3.0.7/values.yaml b/stable/mkvcleaver/3.0.8/values.yaml similarity index 100% rename from stable/pasta/3.0.7/values.yaml rename to stable/mkvcleaver/3.0.8/values.yaml diff --git a/stable/mkvtoolnix/4.0.10/CHANGELOG.md b/stable/mkvtoolnix/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..d6257f66267 --- /dev/null +++ b/stable/mkvtoolnix/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mkvtoolnix-4.0.10](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.9...mkvtoolnix-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mkvtoolnix-4.0.9](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.8...mkvtoolnix-4.0.9) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/mkvtoolnix to v23.01.1 + + + + +## [mkvtoolnix-4.0.8](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.7...mkvtoolnix-4.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mkvtoolnix-4.0.7](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.6...mkvtoolnix-4.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mkvtoolnix-4.0.6](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.5...mkvtoolnix-4.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mkvtoolnix-4.0.5](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.4...mkvtoolnix-4.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mkvtoolnix-4.0.4](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.3...mkvtoolnix-4.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) + + + + +## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) + + + + +## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) + + + + +## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) + + + + +## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) + + + + +## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) + + + + diff --git a/stable/mkvtoolnix/4.0.10/Chart.yaml b/stable/mkvtoolnix/4.0.10/Chart.yaml new file mode 100644 index 00000000000..4b9dd48c5e8 --- /dev/null +++ b/stable/mkvtoolnix/4.0.10/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "23.01.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: MKVToolNix is a set of tools to create, alter and inspect Matroska files. +home: https://truecharts.org/charts/stable/mkvtoolnix +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mkvtoolnix.png +keywords: + - media + - mkvtoolnix + - mkv +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: mkvtoolnix +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/mkvtoolnix + - https://hub.docker.com/jlesage/mkvtoolnix + - https://github.com/jlesage/docker-mkvtoolnix + - https://mkvtoolnix.download/ +type: application +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/pasta/3.0.7/README.md b/stable/mkvtoolnix/4.0.10/README.md similarity index 100% rename from stable/pasta/3.0.7/README.md rename to stable/mkvtoolnix/4.0.10/README.md diff --git a/stable/mkvtoolnix/4.0.10/app-changelog.md b/stable/mkvtoolnix/4.0.10/app-changelog.md new file mode 100644 index 00000000000..15fe6a63004 --- /dev/null +++ b/stable/mkvtoolnix/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mkvtoolnix-4.0.10](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.9...mkvtoolnix-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/mkvtoolnix/4.0.10/app-readme.md b/stable/mkvtoolnix/4.0.10/app-readme.md new file mode 100644 index 00000000000..e287651357e --- /dev/null +++ b/stable/mkvtoolnix/4.0.10/app-readme.md @@ -0,0 +1,8 @@ +MKVToolNix is a set of tools to create, alter and inspect Matroska files. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/mkvtoolnix](https://truecharts.org/charts/stable/mkvtoolnix) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/photoview/7.0.19/charts/common-11.1.2.tgz b/stable/mkvtoolnix/4.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/photoview/7.0.19/charts/common-11.1.2.tgz rename to stable/mkvtoolnix/4.0.10/charts/common-11.1.2.tgz diff --git a/stable/mkvtoolnix/4.0.9/ix_values.yaml b/stable/mkvtoolnix/4.0.10/ix_values.yaml similarity index 100% rename from stable/mkvtoolnix/4.0.9/ix_values.yaml rename to stable/mkvtoolnix/4.0.10/ix_values.yaml diff --git a/stable/mkvtoolnix/4.0.10/questions.yaml b/stable/mkvtoolnix/4.0.10/questions.yaml new file mode 100644 index 00000000000..479c2320cd5 --- /dev/null +++ b/stable/mkvtoolnix/4.0.10/questions.yaml @@ -0,0 +1,2054 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + # Portal + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: mkvtoolnix + group: "App Configuration" + label: "MKVToolNix Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10236 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10237 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage" + description: "Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/piaware/8.0.7/templates/common.yaml b/stable/mkvtoolnix/4.0.10/templates/common.yaml similarity index 100% rename from stable/piaware/8.0.7/templates/common.yaml rename to stable/mkvtoolnix/4.0.10/templates/common.yaml diff --git a/stable/photoview/7.0.19/values.yaml b/stable/mkvtoolnix/4.0.10/values.yaml similarity index 100% rename from stable/photoview/7.0.19/values.yaml rename to stable/mkvtoolnix/4.0.10/values.yaml diff --git a/stable/mkvtoolnix/4.0.9/CHANGELOG.md b/stable/mkvtoolnix/4.0.9/CHANGELOG.md deleted file mode 100644 index 767cf11b84e..00000000000 --- a/stable/mkvtoolnix/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mkvtoolnix-4.0.9](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.8...mkvtoolnix-4.0.9) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/mkvtoolnix to v23.01.1 - - - - -## [mkvtoolnix-4.0.8](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.7...mkvtoolnix-4.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mkvtoolnix-4.0.7](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.6...mkvtoolnix-4.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mkvtoolnix-4.0.6](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.5...mkvtoolnix-4.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mkvtoolnix-4.0.5](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.4...mkvtoolnix-4.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mkvtoolnix-4.0.4](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.3...mkvtoolnix-4.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) - - - - -## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) - - - - -## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) - - - - -## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) - - - - -## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) - - - - -## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) - - - - -## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) - - - - -## [mkvtoolnix-4.0.3](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.2...mkvtoolnix-4.0.3) (2022-11-30) - - - diff --git a/stable/mkvtoolnix/4.0.9/Chart.yaml b/stable/mkvtoolnix/4.0.9/Chart.yaml deleted file mode 100644 index a42cf3ab5ed..00000000000 --- a/stable/mkvtoolnix/4.0.9/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "23.01.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: MKVToolNix is a set of tools to create, alter and inspect Matroska files. -home: https://truecharts.org/charts/stable/mkvtoolnix -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mkvtoolnix.png -keywords: - - media - - mkvtoolnix - - mkv -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: mkvtoolnix -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/mkvtoolnix - - https://github.com/jlesage/docker-mkvtoolnix - - https://hub.docker.com/r/jlesage/mkvtoolnix - - https://mkvtoolnix.download/ -type: application -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/mkvtoolnix/4.0.9/app-changelog.md b/stable/mkvtoolnix/4.0.9/app-changelog.md deleted file mode 100644 index 3572c750a3d..00000000000 --- a/stable/mkvtoolnix/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mkvtoolnix-4.0.9](https://github.com/truecharts/charts/compare/mkvtoolnix-4.0.8...mkvtoolnix-4.0.9) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/mkvtoolnix to v23.01.1 - - \ No newline at end of file diff --git a/stable/mkvtoolnix/4.0.9/app-readme.md b/stable/mkvtoolnix/4.0.9/app-readme.md deleted file mode 100644 index 1ca5ac5afac..00000000000 --- a/stable/mkvtoolnix/4.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -MKVToolNix is a set of tools to create, alter and inspect Matroska files. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/mkvtoolnix](https://truecharts.org/charts/stable/mkvtoolnix) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/mkvtoolnix/4.0.9/questions.yaml b/stable/mkvtoolnix/4.0.9/questions.yaml deleted file mode 100644 index 154c1f1134f..00000000000 --- a/stable/mkvtoolnix/4.0.9/questions.yaml +++ /dev/null @@ -1,2013 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - # Portal - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: mkvtoolnix - group: "App Configuration" - label: "MKVToolNix Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10236 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10237 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage" - description: "Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/mymediaforalexa/3.0.7/CHANGELOG.md b/stable/mymediaforalexa/3.0.7/CHANGELOG.md deleted file mode 100644 index 0c131f34245..00000000000 --- a/stable/mymediaforalexa/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [mymediaforalexa-3.0.7](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.6...mymediaforalexa-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [mymediaforalexa-3.0.6](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.5...mymediaforalexa-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [mymediaforalexa-3.0.5](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.4...mymediaforalexa-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [mymediaforalexa-3.0.4](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.3...mymediaforalexa-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [mymediaforalexa-3.0.3](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.2...mymediaforalexa-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - - - -## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) - - diff --git a/stable/mymediaforalexa/3.0.7/Chart.yaml b/stable/mymediaforalexa/3.0.7/Chart.yaml deleted file mode 100644 index 4b74336c0fa..00000000000 --- a/stable/mymediaforalexa/3.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: mymediaforalexa -version: 3.0.7 -appVersion: "1.3.147.99" -description: This is the multi-platform Docker image for My Media for Alexa - https://www.mymediaalexa.com . -type: application -deprecated: false -home: https://truecharts.org/charts/stable/mymediaforalexa -icon: https://truecharts.org/img/hotlink-ok/chart-icons/mymediaforalexa.png -keywords: - - media - - alexa -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/mymediaforalexa - - https://hub.docker.com/r/bizmodeller/mymediaforalexa - - https://www.mymediaalexa.com/home/docker#dockerhub -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - # condition: -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/mymediaforalexa/3.0.7/app-changelog.md b/stable/mymediaforalexa/3.0.7/app-changelog.md deleted file mode 100644 index ea6a055152e..00000000000 --- a/stable/mymediaforalexa/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mymediaforalexa-3.0.7](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.6...mymediaforalexa-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/mymediaforalexa/3.0.7/app-readme.md b/stable/mymediaforalexa/3.0.7/app-readme.md deleted file mode 100644 index 134fd115059..00000000000 --- a/stable/mymediaforalexa/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This is the multi-platform Docker image for My Media for Alexa - https://www.mymediaalexa.com . - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/mymediaforalexa](https://truecharts.org/charts/stable/mymediaforalexa) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/mymediaforalexa/3.0.7/questions.yaml b/stable/mymediaforalexa/3.0.7/questions.yaml deleted file mode 100644 index 7624182d955..00000000000 --- a/stable/mymediaforalexa/3.0.7/questions.yaml +++ /dev/null @@ -1,1951 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 52051 - required: true - - variable: sub - label: "Sub Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: sub - label: "Sub Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 52050 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: media - label: "App Media Library Storage" - description: "Stores the Application Media Library." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/mymediaforalexa/3.0.8/CHANGELOG.md b/stable/mymediaforalexa/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..09cdbfaf277 --- /dev/null +++ b/stable/mymediaforalexa/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [mymediaforalexa-3.0.8](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.7...mymediaforalexa-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [mymediaforalexa-3.0.7](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.6...mymediaforalexa-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [mymediaforalexa-3.0.6](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.5...mymediaforalexa-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [mymediaforalexa-3.0.5](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.4...mymediaforalexa-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [mymediaforalexa-3.0.4](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.3...mymediaforalexa-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [mymediaforalexa-3.0.3](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.2...mymediaforalexa-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) + + + + +## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) + + + + +## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) + + + + +## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) + + + + +## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) + + + + +## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) + + + + +## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) + + + + +## [mymediaforalexa-3.0.2](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.1...mymediaforalexa-3.0.2) (2022-11-30) + + + diff --git a/stable/mymediaforalexa/3.0.8/Chart.yaml b/stable/mymediaforalexa/3.0.8/Chart.yaml new file mode 100644 index 00000000000..96d76740081 --- /dev/null +++ b/stable/mymediaforalexa/3.0.8/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: mymediaforalexa +version: 3.0.8 +appVersion: "1.3.147.99" +description: This is the multi-platform Docker image for My Media for Alexa - https://www.mymediaalexa.com . +type: application +deprecated: false +home: https://truecharts.org/charts/stable/mymediaforalexa +icon: https://truecharts.org/img/hotlink-ok/chart-icons/mymediaforalexa.png +keywords: + - media + - alexa +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/mymediaforalexa + - https://hub.docker.com/bizmodeller/mymediaforalexa + - https://www.mymediaalexa.com/home/docker#dockerhub +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/photoview/7.0.19/README.md b/stable/mymediaforalexa/3.0.8/README.md similarity index 100% rename from stable/photoview/7.0.19/README.md rename to stable/mymediaforalexa/3.0.8/README.md diff --git a/stable/mymediaforalexa/3.0.8/app-changelog.md b/stable/mymediaforalexa/3.0.8/app-changelog.md new file mode 100644 index 00000000000..acaf2a5af7c --- /dev/null +++ b/stable/mymediaforalexa/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [mymediaforalexa-3.0.8](https://github.com/truecharts/charts/compare/mymediaforalexa-3.0.7...mymediaforalexa-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/mymediaforalexa/3.0.8/app-readme.md b/stable/mymediaforalexa/3.0.8/app-readme.md new file mode 100644 index 00000000000..0e46c525045 --- /dev/null +++ b/stable/mymediaforalexa/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +This is the multi-platform Docker image for My Media for Alexa - https://www.mymediaalexa.com . + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/mymediaforalexa](https://truecharts.org/charts/stable/mymediaforalexa) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/phpldapadmin/8.0.7/charts/common-11.1.2.tgz b/stable/mymediaforalexa/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/phpldapadmin/8.0.7/charts/common-11.1.2.tgz rename to stable/mymediaforalexa/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/mymediaforalexa/3.0.7/ix_values.yaml b/stable/mymediaforalexa/3.0.8/ix_values.yaml similarity index 100% rename from stable/mymediaforalexa/3.0.7/ix_values.yaml rename to stable/mymediaforalexa/3.0.8/ix_values.yaml diff --git a/stable/mymediaforalexa/3.0.8/questions.yaml b/stable/mymediaforalexa/3.0.8/questions.yaml new file mode 100644 index 00000000000..2e96ae77ebf --- /dev/null +++ b/stable/mymediaforalexa/3.0.8/questions.yaml @@ -0,0 +1,1992 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 52051 + required: true + - variable: sub + label: "Sub Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: sub + label: "Sub Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 52050 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: media + label: "App Media Library Storage" + description: "Stores the Application Media Library." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/pretend-youre-xyzzy/8.0.7/templates/common.yaml b/stable/mymediaforalexa/3.0.8/templates/common.yaml similarity index 100% rename from stable/pretend-youre-xyzzy/8.0.7/templates/common.yaml rename to stable/mymediaforalexa/3.0.8/templates/common.yaml diff --git a/stable/phpldapadmin/8.0.7/values.yaml b/stable/mymediaforalexa/3.0.8/values.yaml similarity index 100% rename from stable/phpldapadmin/8.0.7/values.yaml rename to stable/mymediaforalexa/3.0.8/values.yaml diff --git a/stable/navidrome/14.0.2/CHANGELOG.md b/stable/navidrome/14.0.2/CHANGELOG.md new file mode 100644 index 00000000000..4fa586c5e4a --- /dev/null +++ b/stable/navidrome/14.0.2/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [navidrome-14.0.2](https://github.com/truecharts/charts/compare/navidrome-14.0.1...navidrome-14.0.2) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [navidrome-14.0.1](https://github.com/truecharts/charts/compare/navidrome-14.0.0...navidrome-14.0.1) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/navidrome to v0.49.0 + + + + +## [navidrome-14.0.0](https://github.com/truecharts/charts/compare/navidrome-13.0.7...navidrome-14.0.0) (2023-01-30) + +### Fix + +- Breaking Change - Expose `Music` persistence persistence to GUI. ([#6581](https://github.com/truecharts/charts/issues/6581)) + + + + +## [navidrome-13.0.7](https://github.com/truecharts/charts/compare/navidrome-13.0.6...navidrome-13.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [navidrome-13.0.6](https://github.com/truecharts/charts/compare/navidrome-13.0.5...navidrome-13.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [navidrome-13.0.5](https://github.com/truecharts/charts/compare/navidrome-13.0.4...navidrome-13.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [navidrome-13.0.4](https://github.com/truecharts/charts/compare/navidrome-13.0.3...navidrome-13.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [navidrome-13.0.3](https://github.com/truecharts/charts/compare/navidrome-13.0.2...navidrome-13.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [navidrome-13.0.2](https://github.com/truecharts/charts/compare/navidrome-13.0.1...navidrome-13.0.2) (2022-11-30) + + + + +## [navidrome-13.0.2](https://github.com/truecharts/charts/compare/navidrome-13.0.1...navidrome-13.0.2) (2022-11-30) + + + + +## [navidrome-13.0.2](https://github.com/truecharts/charts/compare/navidrome-13.0.1...navidrome-13.0.2) (2022-11-30) + + + + +## [navidrome-13.0.2](https://github.com/truecharts/charts/compare/navidrome-13.0.1...navidrome-13.0.2) (2022-11-30) + + + + +## [navidrome-13.0.2](https://github.com/truecharts/charts/compare/navidrome-13.0.1...navidrome-13.0.2) (2022-11-30) diff --git a/stable/navidrome/14.0.2/Chart.yaml b/stable/navidrome/14.0.2/Chart.yaml new file mode 100644 index 00000000000..d1b8547afb8 --- /dev/null +++ b/stable/navidrome/14.0.2/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "0.49.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Navidrome is an open source web-based music collection server and streamer +home: https://truecharts.org/charts/stable/navidrome +icon: https://truecharts.org/img/hotlink-ok/chart-icons/navidrome.png +keywords: + - navidrome + - music + - streaming +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: navidrome +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/navidrome + - https://hub.docker.com/deluan/navidrome + - https://github.com/deluan/navidrome +type: application +version: 14.0.2 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/phpldapadmin/8.0.7/README.md b/stable/navidrome/14.0.2/README.md similarity index 100% rename from stable/phpldapadmin/8.0.7/README.md rename to stable/navidrome/14.0.2/README.md diff --git a/stable/navidrome/14.0.2/app-changelog.md b/stable/navidrome/14.0.2/app-changelog.md new file mode 100644 index 00000000000..0c85fa90c17 --- /dev/null +++ b/stable/navidrome/14.0.2/app-changelog.md @@ -0,0 +1,9 @@ + + +## [navidrome-14.0.2](https://github.com/truecharts/charts/compare/navidrome-14.0.1...navidrome-14.0.2) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/navidrome/14.0.2/app-readme.md b/stable/navidrome/14.0.2/app-readme.md new file mode 100644 index 00000000000..73d0c017c08 --- /dev/null +++ b/stable/navidrome/14.0.2/app-readme.md @@ -0,0 +1,8 @@ +Navidrome is an open source web-based music collection server and streamer + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/navidrome](https://truecharts.org/charts/stable/navidrome) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/piaware/8.0.7/charts/common-11.1.2.tgz b/stable/navidrome/14.0.2/charts/common-11.1.2.tgz similarity index 100% rename from stable/piaware/8.0.7/charts/common-11.1.2.tgz rename to stable/navidrome/14.0.2/charts/common-11.1.2.tgz diff --git a/stable/navidrome/14.0.2/ix_values.yaml b/stable/navidrome/14.0.2/ix_values.yaml new file mode 100644 index 00000000000..28858af1f5b --- /dev/null +++ b/stable/navidrome/14.0.2/ix_values.yaml @@ -0,0 +1,29 @@ +image: + repository: tccr.io/truecharts/navidrome + pullPolicy: IfNotPresent + tag: 0.49.0@sha256:fa734369c106a978df306b4229bdf256a99ef5e36874064c03af4e00bf63987d + +service: + main: + ports: + main: + port: 4533 + targetPort: 4533 + +env: + ND_SCANINTERVAL: "15m" + ND_LOGLEVEL: "info" + ND_SESSIONTIMEOUT: "24h" + ND_ENABLETRANSCODINGCONFIG: "true" + ND_MUSICFOLDER: "/music" + +persistence: + data: + enabled: true + mountPath: "/data" + music: + enabled: true + mountPath: "/music" + +portal: + enabled: true diff --git a/stable/navidrome/14.0.2/questions.yaml b/stable/navidrome/14.0.2/questions.yaml new file mode 100644 index 00000000000..5dab0296a45 --- /dev/null +++ b/stable/navidrome/14.0.2/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 4533 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: App Config Storage + description: Stores the Application Configuration. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: music + label: App Music Storage + description: Stores the Application Music. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/putty/3.0.8/templates/common.yaml b/stable/navidrome/14.0.2/templates/common.yaml similarity index 100% rename from stable/putty/3.0.8/templates/common.yaml rename to stable/navidrome/14.0.2/templates/common.yaml diff --git a/stable/piaware/8.0.7/values.yaml b/stable/navidrome/14.0.2/values.yaml similarity index 100% rename from stable/piaware/8.0.7/values.yaml rename to stable/navidrome/14.0.2/values.yaml diff --git a/stable/netdata/4.0.10/CHANGELOG.md b/stable/netdata/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..6f526a1c7a4 --- /dev/null +++ b/stable/netdata/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [netdata-4.0.10](https://github.com/truecharts/charts/compare/netdata-4.0.9...netdata-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [netdata-4.0.9](https://github.com/truecharts/charts/compare/netdata-4.0.8...netdata-4.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [netdata-4.0.8](https://github.com/truecharts/charts/compare/netdata-4.0.7...netdata-4.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [netdata-4.0.7](https://github.com/truecharts/charts/compare/netdata-4.0.6...netdata-4.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [netdata-4.0.6](https://github.com/truecharts/charts/compare/netdata-4.0.5...netdata-4.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [netdata-4.0.5](https://github.com/truecharts/charts/compare/netdata-4.0.4...netdata-4.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [netdata-4.0.4](https://github.com/truecharts/charts/compare/netdata-4.0.3...netdata-4.0.4) (2022-12-06) + +### Chore + +- update container image tccr.io/truecharts/netdata to v1.37.1 + + + + +## [netdata-4.0.3](https://github.com/truecharts/charts/compare/netdata-4.0.2...netdata-4.0.3) (2022-11-30) + + + + +## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) + + + + +## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) + + + + +## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) + + + + +## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) + + + + +## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) + + + + diff --git a/stable/netdata/4.0.10/Chart.yaml b/stable/netdata/4.0.10/Chart.yaml new file mode 100644 index 00000000000..77697c1f997 --- /dev/null +++ b/stable/netdata/4.0.10/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "1.37.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Netdata is high-fidelity infrastructure monitoring and troubleshooting. +home: https://truecharts.org/charts/stable/netdata +icon: https://truecharts.org/img/hotlink-ok/chart-icons/netdata.png +keywords: + - netdata + - monitoring +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: netdata +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/netdata + - https://hub.docker.com/netdata/netdata + - https://github.com/netdata +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/piaware/8.0.7/README.md b/stable/netdata/4.0.10/README.md similarity index 100% rename from stable/piaware/8.0.7/README.md rename to stable/netdata/4.0.10/README.md diff --git a/stable/netdata/4.0.10/app-changelog.md b/stable/netdata/4.0.10/app-changelog.md new file mode 100644 index 00000000000..71805efc21c --- /dev/null +++ b/stable/netdata/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [netdata-4.0.10](https://github.com/truecharts/charts/compare/netdata-4.0.9...netdata-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/netdata/4.0.10/app-readme.md b/stable/netdata/4.0.10/app-readme.md new file mode 100644 index 00000000000..39fbf9fb595 --- /dev/null +++ b/stable/netdata/4.0.10/app-readme.md @@ -0,0 +1,8 @@ +Netdata is high-fidelity infrastructure monitoring and troubleshooting. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/netdata](https://truecharts.org/charts/stable/netdata) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/picoshare/4.0.8/charts/common-11.1.2.tgz b/stable/netdata/4.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/picoshare/4.0.8/charts/common-11.1.2.tgz rename to stable/netdata/4.0.10/charts/common-11.1.2.tgz diff --git a/stable/netdata/4.0.9/ix_values.yaml b/stable/netdata/4.0.10/ix_values.yaml similarity index 100% rename from stable/netdata/4.0.9/ix_values.yaml rename to stable/netdata/4.0.10/ix_values.yaml diff --git a/stable/netdata/4.0.10/questions.yaml b/stable/netdata/4.0.10/questions.yaml new file mode 100644 index 00000000000..06cdd04aa43 --- /dev/null +++ b/stable/netdata/4.0.10/questions.yaml @@ -0,0 +1,2034 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: NETDATA_CLAIM_URL + label: "NETDATA_CLAIM_URL" + schema: + type: string + default: "https://app.netdata.cloud" + - variable: NETDATA_CLAIM_TOKEN + label: "NETDATA_CLAIM_TOKEN" + schema: + type: string + private: true + default: "" + - variable: NETDATA_CLAIM_ROOMS + label: "NETDATA_CLAIM_ROOMS" + schema: + type: string + private: true + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 19999 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "The directory configuration files are kept." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: lib + label: "App lib Storage" + description: "Contains the alarm log and the Netdata instance guid." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: cache + label: "App cache Storage" + description: "Contains the db files for the collected metrics" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 201 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/netdata/4.0.9/templates/common.yaml b/stable/netdata/4.0.10/templates/common.yaml similarity index 100% rename from stable/netdata/4.0.9/templates/common.yaml rename to stable/netdata/4.0.10/templates/common.yaml diff --git a/stable/picoshare/4.0.8/values.yaml b/stable/netdata/4.0.10/values.yaml similarity index 100% rename from stable/picoshare/4.0.8/values.yaml rename to stable/netdata/4.0.10/values.yaml diff --git a/stable/netdata/4.0.9/CHANGELOG.md b/stable/netdata/4.0.9/CHANGELOG.md deleted file mode 100644 index d5f88d8cd5e..00000000000 --- a/stable/netdata/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [netdata-4.0.9](https://github.com/truecharts/charts/compare/netdata-4.0.8...netdata-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [netdata-4.0.8](https://github.com/truecharts/charts/compare/netdata-4.0.7...netdata-4.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [netdata-4.0.7](https://github.com/truecharts/charts/compare/netdata-4.0.6...netdata-4.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [netdata-4.0.6](https://github.com/truecharts/charts/compare/netdata-4.0.5...netdata-4.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [netdata-4.0.5](https://github.com/truecharts/charts/compare/netdata-4.0.4...netdata-4.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [netdata-4.0.4](https://github.com/truecharts/charts/compare/netdata-4.0.3...netdata-4.0.4) (2022-12-06) - -### Chore - -- update container image tccr.io/truecharts/netdata to v1.37.1 - - - - -## [netdata-4.0.3](https://github.com/truecharts/charts/compare/netdata-4.0.2...netdata-4.0.3) (2022-11-30) - - - - -## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) - - - - -## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) - - - - -## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) - - - - -## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) - - - - -## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) - - - - -## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) - - - - -## [netdata-4.0.2](https://github.com/truecharts/charts/compare/netdata-4.0.1...netdata-4.0.2) (2022-11-30) - - - diff --git a/stable/netdata/4.0.9/Chart.yaml b/stable/netdata/4.0.9/Chart.yaml deleted file mode 100644 index 3137927ff38..00000000000 --- a/stable/netdata/4.0.9/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.37.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Netdata is high-fidelity infrastructure monitoring and troubleshooting. -home: https://truecharts.org/charts/stable/netdata -icon: https://truecharts.org/img/hotlink-ok/chart-icons/netdata.png -keywords: - - netdata - - monitoring -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: netdata -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/netdata - - https://github.com/netdata -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/netdata/4.0.9/app-changelog.md b/stable/netdata/4.0.9/app-changelog.md deleted file mode 100644 index 04fb83beafc..00000000000 --- a/stable/netdata/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [netdata-4.0.9](https://github.com/truecharts/charts/compare/netdata-4.0.8...netdata-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/netdata/4.0.9/app-readme.md b/stable/netdata/4.0.9/app-readme.md deleted file mode 100644 index 8e6cfed2a94..00000000000 --- a/stable/netdata/4.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Netdata is high-fidelity infrastructure monitoring and troubleshooting. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/netdata](https://truecharts.org/charts/stable/netdata) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/netdata/4.0.9/questions.yaml b/stable/netdata/4.0.9/questions.yaml deleted file mode 100644 index 53fc0a98cf3..00000000000 --- a/stable/netdata/4.0.9/questions.yaml +++ /dev/null @@ -1,1993 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: NETDATA_CLAIM_URL - label: "NETDATA_CLAIM_URL" - schema: - type: string - default: "https://app.netdata.cloud" - - variable: NETDATA_CLAIM_TOKEN - label: "NETDATA_CLAIM_TOKEN" - schema: - type: string - private: true - default: "" - - variable: NETDATA_CLAIM_ROOMS - label: "NETDATA_CLAIM_ROOMS" - schema: - type: string - private: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 19999 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "The directory configuration files are kept." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: lib - label: "App lib Storage" - description: "Contains the alarm log and the Netdata instance guid." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: cache - label: "App cache Storage" - description: "Contains the db files for the collected metrics" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 201 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/nocodb/6.0.27/CHANGELOG.md b/stable/nocodb/6.0.27/CHANGELOG.md deleted file mode 100644 index 56a7b53409c..00000000000 --- a/stable/nocodb/6.0.27/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [nocodb-6.0.27](https://github.com/truecharts/charts/compare/nocodb-6.0.26...nocodb-6.0.27) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/nocodb to v0.104.2 - - - - -## [nocodb-6.0.26](https://github.com/truecharts/charts/compare/nocodb-6.0.25...nocodb-6.0.26) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [nocodb-6.0.25](https://github.com/truecharts/charts/compare/nocodb-6.0.24...nocodb-6.0.25) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [nocodb-6.0.24](https://github.com/truecharts/charts/compare/nocodb-6.0.23...nocodb-6.0.24) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [nocodb-6.0.23](https://github.com/truecharts/charts/compare/nocodb-6.0.22...nocodb-6.0.23) (2023-01-17) - -### Chore - -- update container image tccr.io/truecharts/nocodb to v0.101.2 - - - - -## [nocodb-6.0.22](https://github.com/truecharts/charts/compare/nocodb-6.0.21...nocodb-6.0.22) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [nocodb-6.0.21](https://github.com/truecharts/charts/compare/nocodb-6.0.20...nocodb-6.0.21) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [nocodb-6.0.20](https://github.com/truecharts/charts/compare/nocodb-6.0.19...nocodb-6.0.20) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [nocodb-6.0.19](https://github.com/truecharts/charts/compare/nocodb-6.0.18...nocodb-6.0.19) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [nocodb-6.0.18](https://github.com/truecharts/charts/compare/nocodb-6.0.17...nocodb-6.0.18) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [nocodb-6.0.17](https://github.com/truecharts/charts/compare/nocodb-6.0.16...nocodb-6.0.17) (2022-12-19) - -### Chore diff --git a/stable/nocodb/6.0.27/Chart.yaml b/stable/nocodb/6.0.27/Chart.yaml deleted file mode 100644 index 53e4ad1d381..00000000000 --- a/stable/nocodb/6.0.27/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v2 -appVersion: "0.104.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -description: Turns any MySQL, PostgreSQL, SQL Server, SQLite & MariaDB into a smart-spreadsheet. -home: https://truecharts.org/charts/stable/nocodb -icon: https://truecharts.org/img/hotlink-ok/chart-icons/nocodb.png -keywords: - - nocodb -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: nocodb -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/nocodb - - https://hub.docker.com/r/nocodb/nocodb - - https://github.com/nocodb/nocodb -version: 6.0.27 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/nocodb/6.0.27/app-changelog.md b/stable/nocodb/6.0.27/app-changelog.md deleted file mode 100644 index 2ead22fdbf2..00000000000 --- a/stable/nocodb/6.0.27/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [nocodb-6.0.27](https://github.com/truecharts/charts/compare/nocodb-6.0.26...nocodb-6.0.27) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/nocodb to v0.104.2 - - \ No newline at end of file diff --git a/stable/nocodb/6.0.28/CHANGELOG.md b/stable/nocodb/6.0.28/CHANGELOG.md new file mode 100644 index 00000000000..d17a7fdcebe --- /dev/null +++ b/stable/nocodb/6.0.28/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [nocodb-6.0.28](https://github.com/truecharts/charts/compare/nocodb-6.0.27...nocodb-6.0.28) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [nocodb-6.0.27](https://github.com/truecharts/charts/compare/nocodb-6.0.26...nocodb-6.0.27) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/nocodb to v0.104.2 + + + + +## [nocodb-6.0.26](https://github.com/truecharts/charts/compare/nocodb-6.0.25...nocodb-6.0.26) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [nocodb-6.0.25](https://github.com/truecharts/charts/compare/nocodb-6.0.24...nocodb-6.0.25) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [nocodb-6.0.24](https://github.com/truecharts/charts/compare/nocodb-6.0.23...nocodb-6.0.24) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [nocodb-6.0.23](https://github.com/truecharts/charts/compare/nocodb-6.0.22...nocodb-6.0.23) (2023-01-17) + +### Chore + +- update container image tccr.io/truecharts/nocodb to v0.101.2 + + + + +## [nocodb-6.0.22](https://github.com/truecharts/charts/compare/nocodb-6.0.21...nocodb-6.0.22) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [nocodb-6.0.21](https://github.com/truecharts/charts/compare/nocodb-6.0.20...nocodb-6.0.21) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [nocodb-6.0.20](https://github.com/truecharts/charts/compare/nocodb-6.0.19...nocodb-6.0.20) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [nocodb-6.0.19](https://github.com/truecharts/charts/compare/nocodb-6.0.18...nocodb-6.0.19) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [nocodb-6.0.18](https://github.com/truecharts/charts/compare/nocodb-6.0.17...nocodb-6.0.18) (2022-12-25) + +### Chore diff --git a/stable/nocodb/6.0.28/Chart.yaml b/stable/nocodb/6.0.28/Chart.yaml new file mode 100644 index 00000000000..b214670aaa2 --- /dev/null +++ b/stable/nocodb/6.0.28/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +appVersion: "0.104.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: Turns any MySQL, PostgreSQL, SQL Server, SQLite & MariaDB into a smart-spreadsheet. +home: https://truecharts.org/charts/stable/nocodb +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nocodb.png +keywords: + - nocodb +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: nocodb +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/nocodb + - https://hub.docker.com/nocodb/nocodb + - https://github.com/nocodb/nocodb +version: 6.0.28 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/picoshare/4.0.8/README.md b/stable/nocodb/6.0.28/README.md similarity index 100% rename from stable/picoshare/4.0.8/README.md rename to stable/nocodb/6.0.28/README.md diff --git a/stable/nocodb/6.0.28/app-changelog.md b/stable/nocodb/6.0.28/app-changelog.md new file mode 100644 index 00000000000..a8196be4d3c --- /dev/null +++ b/stable/nocodb/6.0.28/app-changelog.md @@ -0,0 +1,9 @@ + + +## [nocodb-6.0.28](https://github.com/truecharts/charts/compare/nocodb-6.0.27...nocodb-6.0.28) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/nocodb/6.0.27/app-readme.md b/stable/nocodb/6.0.28/app-readme.md similarity index 100% rename from stable/nocodb/6.0.27/app-readme.md rename to stable/nocodb/6.0.28/app-readme.md diff --git a/stable/pihole/8.0.14/charts/common-11.1.2.tgz b/stable/nocodb/6.0.28/charts/common-11.1.2.tgz similarity index 100% rename from stable/pihole/8.0.14/charts/common-11.1.2.tgz rename to stable/nocodb/6.0.28/charts/common-11.1.2.tgz diff --git a/stable/synapse/7.0.22/charts/postgresql-11.0.22.tgz b/stable/nocodb/6.0.28/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/synapse/7.0.22/charts/postgresql-11.0.22.tgz rename to stable/nocodb/6.0.28/charts/postgresql-11.0.22.tgz diff --git a/stable/outline/6.0.20/charts/redis-5.0.29.tgz b/stable/nocodb/6.0.28/charts/redis-5.0.29.tgz similarity index 100% rename from stable/outline/6.0.20/charts/redis-5.0.29.tgz rename to stable/nocodb/6.0.28/charts/redis-5.0.29.tgz diff --git a/stable/nocodb/6.0.27/ix_values.yaml b/stable/nocodb/6.0.28/ix_values.yaml similarity index 100% rename from stable/nocodb/6.0.27/ix_values.yaml rename to stable/nocodb/6.0.28/ix_values.yaml diff --git a/stable/nocodb/6.0.27/questions.yaml b/stable/nocodb/6.0.28/questions.yaml similarity index 100% rename from stable/nocodb/6.0.27/questions.yaml rename to stable/nocodb/6.0.28/questions.yaml diff --git a/stable/nocodb/6.0.27/templates/_configmap.tpl b/stable/nocodb/6.0.28/templates/_configmap.tpl similarity index 100% rename from stable/nocodb/6.0.27/templates/_configmap.tpl rename to stable/nocodb/6.0.28/templates/_configmap.tpl diff --git a/stable/nocodb/6.0.27/templates/_secrets.tpl b/stable/nocodb/6.0.28/templates/_secrets.tpl similarity index 100% rename from stable/nocodb/6.0.27/templates/_secrets.tpl rename to stable/nocodb/6.0.28/templates/_secrets.tpl diff --git a/stable/nocodb/6.0.27/templates/common.yaml b/stable/nocodb/6.0.28/templates/common.yaml similarity index 100% rename from stable/nocodb/6.0.27/templates/common.yaml rename to stable/nocodb/6.0.28/templates/common.yaml diff --git a/stable/pihole/8.0.14/values.yaml b/stable/nocodb/6.0.28/values.yaml similarity index 100% rename from stable/pihole/8.0.14/values.yaml rename to stable/nocodb/6.0.28/values.yaml diff --git a/stable/ntfy/4.0.10/CHANGELOG.md b/stable/ntfy/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..58cd93a9465 --- /dev/null +++ b/stable/ntfy/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ntfy-4.0.10](https://github.com/truecharts/charts/compare/ntfy-4.0.9...ntfy-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ntfy-4.0.9](https://github.com/truecharts/charts/compare/ntfy-4.0.8...ntfy-4.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [ntfy-4.0.8](https://github.com/truecharts/charts/compare/ntfy-4.0.7...ntfy-4.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [ntfy-4.0.7](https://github.com/truecharts/charts/compare/ntfy-4.0.6...ntfy-4.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [ntfy-4.0.6](https://github.com/truecharts/charts/compare/ntfy-4.0.5...ntfy-4.0.6) (2022-12-23) + +### Chore + +- update container image tccr.io/truecharts/ntfy to v1.30.1 + + + + +## [ntfy-4.0.5](https://github.com/truecharts/charts/compare/ntfy-4.0.4...ntfy-4.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [ntfy-4.0.4](https://github.com/truecharts/charts/compare/ntfy-4.0.3...ntfy-4.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) + + + + +## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) + + + + +## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) + + + + +## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) + + + + +## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) + + + + +## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) + + + + diff --git a/stable/ntfy/4.0.10/Chart.yaml b/stable/ntfy/4.0.10/Chart.yaml new file mode 100644 index 00000000000..fda434056fb --- /dev/null +++ b/stable/ntfy/4.0.10/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.30.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: ntfy is a simple HTTP-based pub-sub notification service. It allows you to send notifications to your phone or desktop via scripts from any computer. +home: https://truecharts.org/charts/stable/ntfy +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ntfy.png +keywords: + - ntfy +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ntfy +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/ntfy + - https://hub.docker.com/binwiederhier/ntfy + - https://github.com/binwiederhier/ntfy/ +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/pihole/8.0.14/README.md b/stable/ntfy/4.0.10/README.md similarity index 100% rename from stable/pihole/8.0.14/README.md rename to stable/ntfy/4.0.10/README.md diff --git a/stable/ntfy/4.0.10/app-changelog.md b/stable/ntfy/4.0.10/app-changelog.md new file mode 100644 index 00000000000..2cdfd606e0c --- /dev/null +++ b/stable/ntfy/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ntfy-4.0.10](https://github.com/truecharts/charts/compare/ntfy-4.0.9...ntfy-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/ntfy/4.0.10/app-readme.md b/stable/ntfy/4.0.10/app-readme.md new file mode 100644 index 00000000000..b592677b628 --- /dev/null +++ b/stable/ntfy/4.0.10/app-readme.md @@ -0,0 +1,8 @@ +ntfy is a simple HTTP-based pub-sub notification service. It allows you to send notifications to your phone or desktop via scripts from any computer. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/ntfy](https://truecharts.org/charts/stable/ntfy) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/pinry/4.0.7/charts/common-11.1.2.tgz b/stable/ntfy/4.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/pinry/4.0.7/charts/common-11.1.2.tgz rename to stable/ntfy/4.0.10/charts/common-11.1.2.tgz diff --git a/stable/ntfy/4.0.9/ix_values.yaml b/stable/ntfy/4.0.10/ix_values.yaml similarity index 100% rename from stable/ntfy/4.0.9/ix_values.yaml rename to stable/ntfy/4.0.10/ix_values.yaml diff --git a/stable/ntfy/4.0.10/questions.yaml b/stable/ntfy/4.0.10/questions.yaml new file mode 100644 index 00000000000..61d29708c48 --- /dev/null +++ b/stable/ntfy/4.0.10/questions.yaml @@ -0,0 +1,2170 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "/app" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: NTFY_BASE_URL + label: "Base URL" + description: "Public facing base URL of the service (e.g. https://ntfy.sh)" + schema: + type: string + required: true + default: "" + - variable: NTFY_BEHIND_PROXY + label: "Behind Proxy" + description: "If set, the X-Forwarded-For header is used to determine the visitor IP address instead of the remote address of the connection." + schema: + type: boolean + default: false + - variable: ENABLE_CACHE_FILE + label: "Enable Firebase File" + description: "If set to true, it enables the firebase file by setting the NTFY_FIREBASE_KEY_FILE to \"/etc/ntfy/firebase-key.json\"" + schema: + type: boolean + default: false + - variable: ENABLE_CACHE_FILE + label: "Enable Cache File" + description: "If set to true, it enables the cache file by setting the NTFY_CACHE_FILE to \"/var/cache/ntfy/cache.db\"" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: NTFY_CACHE_DURATION + label: "Cache Duration" + description: "Duration for which messages will be buffered before they are deleted. This is required to support the since=... and poll=1 parameter. Set this to 0 to disable the cache entirely." + schema: + type: string + required: true + default: "12h" + - variable: NTFY_KEEPALIVE_INTERVAL + label: "Keepalive interval" + description: "Interval in which keepalive messages are sent to the client. This is to prevent intermediaries closing the connection for inactivity. Note that the Android app has a hardcoded timeout at 77s, so it should be less than that." + schema: + type: string + required: true + default: "45s" + - variable: NTFY_MANAGER_INTERVAL + label: "Manager Interval" + description: "Interval in which the manager prunes old messages, deletes topics and prints the stats." + schema: + type: string + required: true + default: "1m" + - variable: NTFY_GLOBAL_TOPIC_LIMIT + label: "Global Topic Limit" + description: "Rate limiting: Total number of topics before the server rejects new topics." + schema: + type: int + required: true + default: 15000 + - variable: ENABLE_VISITOR_SETTINGS + label: "Enable Visitor Settings" + description: "If set to true, it enables the visitor settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: NTFY_VISITOR_SUBSCRIPTION_LIMIT + label: "Visitor Ssubscription Limit" + description: "Rate limiting: Number of subscriptions per visitor (IP address)" + schema: + type: int + required: true + default: 30 + - variable: NTFY_VISITOR_ATTACHMENT_TOTAL_SIZE_LIMIT + label: "Visitor Attachment Total Size Limit" + description: "Rate limiting: Total storage limit used for attachments per visitor, for all attachments combined. Storage is freed after attachments expire. See NTFY_ATTACHMENT_EXPIRY_DURATION" + schema: + type: string + required: true + default: "100M" + - variable: NTFY_VISITOR_ATTACHMENT_DAILY_BANDWIDTH_LIMIT + label: "Visitor Attachment Daily Bandwidth Limit" + description: "Rate limiting: Total daily attachment download/upload traffic limit per visitor. This is to protect your bandwidth costs from exploding." + schema: + type: string + required: true + default: "500M" + - variable: NTFY_VISITOR_REQUEST_LIMIT_BURST + label: "Visitor Request Limit Burst" + description: "Rate limiting: Allowed GET/PUT/POST requests per second, per visitor. This setting is the initial bucket of requests each visitor has" + schema: + type: int + required: true + default: 60 + - variable: NTFY_VISITOR_REQUEST_LIMIT_REPLENISH + label: "Visitor Request Limit Replenish" + description: "Rate limiting: Strongly related to NTFY_VISITOR_REQUEST_LIMIT_BURST: The rate at which the bucket is refilled." + schema: + type: string + required: true + default: "5s" + - variable: NTFY_VISITOR_REQUEST_LIMIT_EXEMPT_HOSTS + label: "Visitor Request Limit Exempt Hosts" + description: "Rate limiting: List of hostnames and IPs to be exempt from request rate limiting." + schema: + type: string + default: "" + - variable: NTFY_VISITOR_EMAIL_LIMIT_BURST + label: "Visitor Email Limit Burst" + description: "Rate limiting:Initial limit of e-mails per visitor" + schema: + type: int + required: true + default: 16 + - variable: NTFY_VISITOR_EMAIL_LIMIT_REPLENISH + label: "Visitor Email Limit Replenish" + description: "Rate limiting: Strongly related to NTFY_VISITOR_EMAIL_LIMIT_BURST: The rate at which the bucket is refilled." + schema: + type: string + required: true + default: "1h" + - variable: ENABLE_ATTACHMENT_CACHE_DIR + label: "Enable Attachment Cache Directory" + description: "If set to true, it enables the attachment dir by setting the NTFY_ATTACHMENT_CACHE_DIR to \"/var/cache/ntfy/attachments\"" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT + label: "Attachment Total Size Limit" + description: "Limit of the on-disk attachment cache directory. If the limits is exceeded, new attachments will be rejected." + schema: + type: string + required: true + default: "5G" + - variable: NTFY_ATTACHMENT_FILE_SIZE_LIMIT + label: "Attachment File Size Limit" + description: "Per-file attachment size limit (e.g. 300k, 2M, 100M). Larger attachment will be rejected." + schema: + type: string + required: true + default: "15M" + - variable: NTFY_ATTACHMENT_EXPIRY_DURATION + label: "Attachment Expiry Duration" + description: "Duration after which uploaded attachments will be deleted (e.g. 3h, 20h). Strongly affects NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT." + schema: + type: string + required: true + default: "3h" + - variable: ENABLE_AUTH_FILE + label: "Enable Auth File" + description: "If set to true, it enables the auth file by setting the NTFY_AUTH_FILE to \"/etc/ntfy/user.db\"" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: NTFY_AUTH_DEFAULT_ACCESS + label: "Auth Default Access" + description: "Default permissions if no matching entries in the auth database are found." + schema: + type: string + required: true + default: "read-write" + enum: + - value: "read-write" + description: "read-write" + - value: "read-only" + description: "read-only" + - value: "write-only" + description: "write-only" + - value: "deny-all" + description: "deny-all" + - variable: ENABLE_SMTP_SETTINGS + label: "Enable SMTP Settings" + description: "If set to true, it enables the SMTP settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: NTFY_SMTP_SENDER_ADDR + label: "SMTP Sender Address" + description: "SMTP server address to allow email sending" + schema: + type: string + default: "" + - variable: NTFY_SMTP_SENDER_USER + label: "SMTP Sender User" + description: "SMTP user. Only used if e-mail sending is enabled" + schema: + type: string + default: "" + - variable: NTFY_SMTP_SENDER_PASS + label: "SMTP Sender Password" + description: SMTP password. Only used if e-mail sending is enabled" + schema: + type: string + private: true + default: "" + - variable: NTFY_SMTP_SENDER_FROM + label: "SMTP Sender From Address" + description: "SMTP sender e-mail address. Only used if e-mail sending is enabled" + schema: + type: string + default: "" + - variable: NTFY_SMTP_SERVER_LISTEN + label: "SMTP Server Listen" + description: "Defines the IP address and port the SMTP server will listen on, e.g. :25 or 1.2.3.4:25" + schema: + type: string + default: "" + - variable: NTFY_SMTP_SERVER_DOMAIN + label: "SMTP Server Domain" + description: "SMTP server e-mail domain, e.g. ntfy.sh" + schema: + type: string + default: "" + - variable: NTFY_SMTP_SERVER_ADDR_PREFIX + label: "SMTP Server Address Prefix" + description: "Optional prefix for the e-mail addresses to prevent spam, e.g. ntfy-" + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10222 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: cache + label: "App Cache Storage" + description: "Stores the Application Cache." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/qdirstat/3.0.9/templates/common.yaml b/stable/ntfy/4.0.10/templates/common.yaml similarity index 100% rename from stable/qdirstat/3.0.9/templates/common.yaml rename to stable/ntfy/4.0.10/templates/common.yaml diff --git a/stable/pinry/4.0.7/values.yaml b/stable/ntfy/4.0.10/values.yaml similarity index 100% rename from stable/pinry/4.0.7/values.yaml rename to stable/ntfy/4.0.10/values.yaml diff --git a/stable/ntfy/4.0.9/CHANGELOG.md b/stable/ntfy/4.0.9/CHANGELOG.md deleted file mode 100644 index b6e137bbe08..00000000000 --- a/stable/ntfy/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ntfy-4.0.9](https://github.com/truecharts/charts/compare/ntfy-4.0.8...ntfy-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [ntfy-4.0.8](https://github.com/truecharts/charts/compare/ntfy-4.0.7...ntfy-4.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [ntfy-4.0.7](https://github.com/truecharts/charts/compare/ntfy-4.0.6...ntfy-4.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [ntfy-4.0.6](https://github.com/truecharts/charts/compare/ntfy-4.0.5...ntfy-4.0.6) (2022-12-23) - -### Chore - -- update container image tccr.io/truecharts/ntfy to v1.30.1 - - - - -## [ntfy-4.0.5](https://github.com/truecharts/charts/compare/ntfy-4.0.4...ntfy-4.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [ntfy-4.0.4](https://github.com/truecharts/charts/compare/ntfy-4.0.3...ntfy-4.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) - - - - -## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) - - - - -## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) - - - - -## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) - - - - -## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) - - - - -## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) - - - - -## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) - - - - -## [ntfy-4.0.3](https://github.com/truecharts/charts/compare/ntfy-4.0.2...ntfy-4.0.3) (2022-11-30) - - - diff --git a/stable/ntfy/4.0.9/Chart.yaml b/stable/ntfy/4.0.9/Chart.yaml deleted file mode 100644 index 724fcd4a33d..00000000000 --- a/stable/ntfy/4.0.9/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "1.30.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: ntfy is a simple HTTP-based pub-sub notification service. It allows you to send notifications to your phone or desktop via scripts from any computer. -home: https://truecharts.org/charts/stable/ntfy -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ntfy.png -keywords: - - ntfy -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ntfy -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/ntfy - - https://github.com/binwiederhier/ntfy/ -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/ntfy/4.0.9/app-changelog.md b/stable/ntfy/4.0.9/app-changelog.md deleted file mode 100644 index 4093ea952e5..00000000000 --- a/stable/ntfy/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ntfy-4.0.9](https://github.com/truecharts/charts/compare/ntfy-4.0.8...ntfy-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/ntfy/4.0.9/app-readme.md b/stable/ntfy/4.0.9/app-readme.md deleted file mode 100644 index 7bd678f182b..00000000000 --- a/stable/ntfy/4.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -ntfy is a simple HTTP-based pub-sub notification service. It allows you to send notifications to your phone or desktop via scripts from any computer. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/ntfy](https://truecharts.org/charts/stable/ntfy) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/ntfy/4.0.9/questions.yaml b/stable/ntfy/4.0.9/questions.yaml deleted file mode 100644 index 50b2ccee9b4..00000000000 --- a/stable/ntfy/4.0.9/questions.yaml +++ /dev/null @@ -1,2129 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - path: "/app" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: NTFY_BASE_URL - label: "Base URL" - description: "Public facing base URL of the service (e.g. https://ntfy.sh)" - schema: - type: string - required: true - default: "" - - variable: NTFY_BEHIND_PROXY - label: "Behind Proxy" - description: "If set, the X-Forwarded-For header is used to determine the visitor IP address instead of the remote address of the connection." - schema: - type: boolean - default: false - - variable: ENABLE_CACHE_FILE - label: "Enable Firebase File" - description: "If set to true, it enables the firebase file by setting the NTFY_FIREBASE_KEY_FILE to \"/etc/ntfy/firebase-key.json\"" - schema: - type: boolean - default: false - - variable: ENABLE_CACHE_FILE - label: "Enable Cache File" - description: "If set to true, it enables the cache file by setting the NTFY_CACHE_FILE to \"/var/cache/ntfy/cache.db\"" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: NTFY_CACHE_DURATION - label: "Cache Duration" - description: "Duration for which messages will be buffered before they are deleted. This is required to support the since=... and poll=1 parameter. Set this to 0 to disable the cache entirely." - schema: - type: string - required: true - default: "12h" - - variable: NTFY_KEEPALIVE_INTERVAL - label: "Keepalive interval" - description: "Interval in which keepalive messages are sent to the client. This is to prevent intermediaries closing the connection for inactivity. Note that the Android app has a hardcoded timeout at 77s, so it should be less than that." - schema: - type: string - required: true - default: "45s" - - variable: NTFY_MANAGER_INTERVAL - label: "Manager Interval" - description: "Interval in which the manager prunes old messages, deletes topics and prints the stats." - schema: - type: string - required: true - default: "1m" - - variable: NTFY_GLOBAL_TOPIC_LIMIT - label: "Global Topic Limit" - description: "Rate limiting: Total number of topics before the server rejects new topics." - schema: - type: int - required: true - default: 15000 - - variable: ENABLE_VISITOR_SETTINGS - label: "Enable Visitor Settings" - description: "If set to true, it enables the visitor settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: NTFY_VISITOR_SUBSCRIPTION_LIMIT - label: "Visitor Ssubscription Limit" - description: "Rate limiting: Number of subscriptions per visitor (IP address)" - schema: - type: int - required: true - default: 30 - - variable: NTFY_VISITOR_ATTACHMENT_TOTAL_SIZE_LIMIT - label: "Visitor Attachment Total Size Limit" - description: "Rate limiting: Total storage limit used for attachments per visitor, for all attachments combined. Storage is freed after attachments expire. See NTFY_ATTACHMENT_EXPIRY_DURATION" - schema: - type: string - required: true - default: "100M" - - variable: NTFY_VISITOR_ATTACHMENT_DAILY_BANDWIDTH_LIMIT - label: "Visitor Attachment Daily Bandwidth Limit" - description: "Rate limiting: Total daily attachment download/upload traffic limit per visitor. This is to protect your bandwidth costs from exploding." - schema: - type: string - required: true - default: "500M" - - variable: NTFY_VISITOR_REQUEST_LIMIT_BURST - label: "Visitor Request Limit Burst" - description: "Rate limiting: Allowed GET/PUT/POST requests per second, per visitor. This setting is the initial bucket of requests each visitor has" - schema: - type: int - required: true - default: 60 - - variable: NTFY_VISITOR_REQUEST_LIMIT_REPLENISH - label: "Visitor Request Limit Replenish" - description: "Rate limiting: Strongly related to NTFY_VISITOR_REQUEST_LIMIT_BURST: The rate at which the bucket is refilled." - schema: - type: string - required: true - default: "5s" - - variable: NTFY_VISITOR_REQUEST_LIMIT_EXEMPT_HOSTS - label: "Visitor Request Limit Exempt Hosts" - description: "Rate limiting: List of hostnames and IPs to be exempt from request rate limiting." - schema: - type: string - default: "" - - variable: NTFY_VISITOR_EMAIL_LIMIT_BURST - label: "Visitor Email Limit Burst" - description: "Rate limiting:Initial limit of e-mails per visitor" - schema: - type: int - required: true - default: 16 - - variable: NTFY_VISITOR_EMAIL_LIMIT_REPLENISH - label: "Visitor Email Limit Replenish" - description: "Rate limiting: Strongly related to NTFY_VISITOR_EMAIL_LIMIT_BURST: The rate at which the bucket is refilled." - schema: - type: string - required: true - default: "1h" - - variable: ENABLE_ATTACHMENT_CACHE_DIR - label: "Enable Attachment Cache Directory" - description: "If set to true, it enables the attachment dir by setting the NTFY_ATTACHMENT_CACHE_DIR to \"/var/cache/ntfy/attachments\"" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT - label: "Attachment Total Size Limit" - description: "Limit of the on-disk attachment cache directory. If the limits is exceeded, new attachments will be rejected." - schema: - type: string - required: true - default: "5G" - - variable: NTFY_ATTACHMENT_FILE_SIZE_LIMIT - label: "Attachment File Size Limit" - description: "Per-file attachment size limit (e.g. 300k, 2M, 100M). Larger attachment will be rejected." - schema: - type: string - required: true - default: "15M" - - variable: NTFY_ATTACHMENT_EXPIRY_DURATION - label: "Attachment Expiry Duration" - description: "Duration after which uploaded attachments will be deleted (e.g. 3h, 20h). Strongly affects NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT." - schema: - type: string - required: true - default: "3h" - - variable: ENABLE_AUTH_FILE - label: "Enable Auth File" - description: "If set to true, it enables the auth file by setting the NTFY_AUTH_FILE to \"/etc/ntfy/user.db\"" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: NTFY_AUTH_DEFAULT_ACCESS - label: "Auth Default Access" - description: "Default permissions if no matching entries in the auth database are found." - schema: - type: string - required: true - default: "read-write" - enum: - - value: "read-write" - description: "read-write" - - value: "read-only" - description: "read-only" - - value: "write-only" - description: "write-only" - - value: "deny-all" - description: "deny-all" - - variable: ENABLE_SMTP_SETTINGS - label: "Enable SMTP Settings" - description: "If set to true, it enables the SMTP settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: NTFY_SMTP_SENDER_ADDR - label: "SMTP Sender Address" - description: "SMTP server address to allow email sending" - schema: - type: string - default: "" - - variable: NTFY_SMTP_SENDER_USER - label: "SMTP Sender User" - description: "SMTP user. Only used if e-mail sending is enabled" - schema: - type: string - default: "" - - variable: NTFY_SMTP_SENDER_PASS - label: "SMTP Sender Password" - description: SMTP password. Only used if e-mail sending is enabled" - schema: - type: string - private: true - default: "" - - variable: NTFY_SMTP_SENDER_FROM - label: "SMTP Sender From Address" - description: "SMTP sender e-mail address. Only used if e-mail sending is enabled" - schema: - type: string - default: "" - - variable: NTFY_SMTP_SERVER_LISTEN - label: "SMTP Server Listen" - description: "Defines the IP address and port the SMTP server will listen on, e.g. :25 or 1.2.3.4:25" - schema: - type: string - default: "" - - variable: NTFY_SMTP_SERVER_DOMAIN - label: "SMTP Server Domain" - description: "SMTP server e-mail domain, e.g. ntfy.sh" - schema: - type: string - default: "" - - variable: NTFY_SMTP_SERVER_ADDR_PREFIX - label: "SMTP Server Address Prefix" - description: "Optional prefix for the e-mail addresses to prevent spam, e.g. ntfy-" - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10222 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: cache - label: "App Cache Storage" - description: "Stores the Application Cache." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/octoprint/8.0.7/CHANGELOG.md b/stable/octoprint/8.0.7/CHANGELOG.md deleted file mode 100644 index bb56e3752ae..00000000000 --- a/stable/octoprint/8.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [octoprint-8.0.7](https://github.com/truecharts/charts/compare/octoprint-8.0.6...octoprint-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [octoprint-8.0.6](https://github.com/truecharts/charts/compare/octoprint-8.0.5...octoprint-8.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [octoprint-8.0.5](https://github.com/truecharts/charts/compare/octoprint-8.0.4...octoprint-8.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [octoprint-8.0.4](https://github.com/truecharts/charts/compare/octoprint-8.0.3...octoprint-8.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [octoprint-8.0.3](https://github.com/truecharts/charts/compare/octoprint-8.0.2...octoprint-8.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - - - -## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) - - diff --git a/stable/octoprint/8.0.7/Chart.yaml b/stable/octoprint/8.0.7/Chart.yaml deleted file mode 100644 index 630f9e36b5c..00000000000 --- a/stable/octoprint/8.0.7/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "1.8.6" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: OctoPrint is the snappy web interface for your 3D printer -home: https://truecharts.org/charts/stable/octoprint -icon: https://truecharts.org/img/hotlink-ok/chart-icons/octoprint.png -keywords: - - octoprint - - 3d - - printer -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: octoprint -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/octoprint - - https://github.com/OctoPrint/OctoPrint - - https://hub.docker.com/r/octoprint/octoprint -version: 8.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/octoprint/8.0.7/app-changelog.md b/stable/octoprint/8.0.7/app-changelog.md deleted file mode 100644 index aad0d38f930..00000000000 --- a/stable/octoprint/8.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [octoprint-8.0.7](https://github.com/truecharts/charts/compare/octoprint-8.0.6...octoprint-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/octoprint/8.0.7/app-readme.md b/stable/octoprint/8.0.7/app-readme.md deleted file mode 100644 index c879919c180..00000000000 --- a/stable/octoprint/8.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -OctoPrint is the snappy web interface for your 3D printer - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/octoprint](https://truecharts.org/charts/stable/octoprint) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/octoprint/8.0.7/questions.yaml b/stable/octoprint/8.0.7/questions.yaml deleted file mode 100644 index 7b027b568af..00000000000 --- a/stable/octoprint/8.0.7/questions.yaml +++ /dev/null @@ -1,1854 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_MJPG_STREAMER - label: "ENABLE_MJPG_STREAMER" - description: "Enable this to ensure camera streaming is enabled you add a video device" - schema: - type: string - default: "false" - - variable: MJPG_STREAMER_INPUT - label: "MJPG_STREAMER_INPUT" - description: "MJPG Streamer input parameters" - schema: - type: string - default: "" - - variable: CAMERA_DEV - label: "CAMERA_DEV" - description: "MJPG Streamer camera device" - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10021 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/octoprint/8.0.8/CHANGELOG.md b/stable/octoprint/8.0.8/CHANGELOG.md new file mode 100644 index 00000000000..565852fb5c0 --- /dev/null +++ b/stable/octoprint/8.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [octoprint-8.0.8](https://github.com/truecharts/charts/compare/octoprint-8.0.7...octoprint-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [octoprint-8.0.7](https://github.com/truecharts/charts/compare/octoprint-8.0.6...octoprint-8.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [octoprint-8.0.6](https://github.com/truecharts/charts/compare/octoprint-8.0.5...octoprint-8.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [octoprint-8.0.5](https://github.com/truecharts/charts/compare/octoprint-8.0.4...octoprint-8.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [octoprint-8.0.4](https://github.com/truecharts/charts/compare/octoprint-8.0.3...octoprint-8.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [octoprint-8.0.3](https://github.com/truecharts/charts/compare/octoprint-8.0.2...octoprint-8.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) + + + + +## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) + + + + +## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) + + + + +## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) + + + + +## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) + + + + +## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) + + + + +## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) + + + + +## [octoprint-8.0.2](https://github.com/truecharts/charts/compare/octoprint-8.0.1...octoprint-8.0.2) (2022-11-30) + + + diff --git a/stable/octoprint/8.0.8/Chart.yaml b/stable/octoprint/8.0.8/Chart.yaml new file mode 100644 index 00000000000..36b1c1a7809 --- /dev/null +++ b/stable/octoprint/8.0.8/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "1.8.6" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: OctoPrint is the snappy web interface for your 3D printer +home: https://truecharts.org/charts/stable/octoprint +icon: https://truecharts.org/img/hotlink-ok/chart-icons/octoprint.png +keywords: + - octoprint + - 3d + - printer +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: octoprint +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/octoprint + - https://hub.docker.com/octoprint/octoprint + - https://github.com/OctoPrint/OctoPrint +version: 8.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/pinry/4.0.7/README.md b/stable/octoprint/8.0.8/README.md similarity index 100% rename from stable/pinry/4.0.7/README.md rename to stable/octoprint/8.0.8/README.md diff --git a/stable/octoprint/8.0.8/app-changelog.md b/stable/octoprint/8.0.8/app-changelog.md new file mode 100644 index 00000000000..45685d860ca --- /dev/null +++ b/stable/octoprint/8.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [octoprint-8.0.8](https://github.com/truecharts/charts/compare/octoprint-8.0.7...octoprint-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/octoprint/8.0.8/app-readme.md b/stable/octoprint/8.0.8/app-readme.md new file mode 100644 index 00000000000..d0f0a5cc922 --- /dev/null +++ b/stable/octoprint/8.0.8/app-readme.md @@ -0,0 +1,8 @@ +OctoPrint is the snappy web interface for your 3D printer + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/octoprint](https://truecharts.org/charts/stable/octoprint) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/plaxt/3.0.7/charts/common-11.1.2.tgz b/stable/octoprint/8.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/plaxt/3.0.7/charts/common-11.1.2.tgz rename to stable/octoprint/8.0.8/charts/common-11.1.2.tgz diff --git a/stable/octoprint/8.0.7/ix_values.yaml b/stable/octoprint/8.0.8/ix_values.yaml similarity index 100% rename from stable/octoprint/8.0.7/ix_values.yaml rename to stable/octoprint/8.0.8/ix_values.yaml diff --git a/stable/octoprint/8.0.8/questions.yaml b/stable/octoprint/8.0.8/questions.yaml new file mode 100644 index 00000000000..18bb1b6f385 --- /dev/null +++ b/stable/octoprint/8.0.8/questions.yaml @@ -0,0 +1,1895 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_MJPG_STREAMER + label: "ENABLE_MJPG_STREAMER" + description: "Enable this to ensure camera streaming is enabled you add a video device" + schema: + type: string + default: "false" + - variable: MJPG_STREAMER_INPUT + label: "MJPG_STREAMER_INPUT" + description: "MJPG Streamer input parameters" + schema: + type: string + default: "" + - variable: CAMERA_DEV + label: "CAMERA_DEV" + description: "MJPG Streamer camera device" + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10021 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/qinglong/4.0.14/templates/common.yaml b/stable/octoprint/8.0.8/templates/common.yaml similarity index 100% rename from stable/qinglong/4.0.14/templates/common.yaml rename to stable/octoprint/8.0.8/templates/common.yaml diff --git a/stable/plaxt/3.0.7/values.yaml b/stable/octoprint/8.0.8/values.yaml similarity index 100% rename from stable/plaxt/3.0.7/values.yaml rename to stable/octoprint/8.0.8/values.yaml diff --git a/stable/openhab/4.0.10/CHANGELOG.md b/stable/openhab/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..4e08b495c7b --- /dev/null +++ b/stable/openhab/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [openhab-4.0.10](https://github.com/truecharts/charts/compare/openhab-4.0.9...openhab-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [openhab-4.0.9](https://github.com/truecharts/charts/compare/openhab-4.0.8...openhab-4.0.9) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/openhab to v3.4.1 + + + + +## [openhab-4.0.8](https://github.com/truecharts/charts/compare/openhab-4.0.7...openhab-4.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [openhab-4.0.7](https://github.com/truecharts/charts/compare/openhab-4.0.6...openhab-4.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [openhab-4.0.6](https://github.com/truecharts/charts/compare/openhab-4.0.5...openhab-4.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [openhab-4.0.5](https://github.com/truecharts/charts/compare/openhab-4.0.4...openhab-4.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [openhab-4.0.4](https://github.com/truecharts/charts/compare/openhab-4.0.3...openhab-4.0.4) (2022-12-19) + +### Chore + +- update container image tccr.io/truecharts/openhab to v3.4.0 + + + + +## [openhab-4.0.3](https://github.com/truecharts/charts/compare/openhab-4.0.2...openhab-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) + + + + +## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) + + + + +## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) + + + + +## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) + + + + +## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) diff --git a/stable/openhab/4.0.10/Chart.yaml b/stable/openhab/4.0.10/Chart.yaml new file mode 100644 index 00000000000..6d272286dfa --- /dev/null +++ b/stable/openhab/4.0.10/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "3.4.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: OpenHab is a home-automation application +home: https://truecharts.org/charts/stable/openhab +icon: https://truecharts.org/img/hotlink-ok/chart-icons/openhab.png +keywords: + - openhab +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: openhab +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/openhab + - https://hub.docker.com/openhab/openhab +type: application +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - media + - test + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/plaxt/3.0.7/README.md b/stable/openhab/4.0.10/README.md similarity index 100% rename from stable/plaxt/3.0.7/README.md rename to stable/openhab/4.0.10/README.md diff --git a/stable/openhab/4.0.10/app-changelog.md b/stable/openhab/4.0.10/app-changelog.md new file mode 100644 index 00000000000..e0a2065ecfa --- /dev/null +++ b/stable/openhab/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [openhab-4.0.10](https://github.com/truecharts/charts/compare/openhab-4.0.9...openhab-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/openhab/4.0.10/app-readme.md b/stable/openhab/4.0.10/app-readme.md new file mode 100644 index 00000000000..c0008f49956 --- /dev/null +++ b/stable/openhab/4.0.10/app-readme.md @@ -0,0 +1,8 @@ +OpenHab is a home-automation application + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/openhab](https://truecharts.org/charts/stable/openhab) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/posterr/3.0.7/charts/common-11.1.2.tgz b/stable/openhab/4.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/posterr/3.0.7/charts/common-11.1.2.tgz rename to stable/openhab/4.0.10/charts/common-11.1.2.tgz diff --git a/stable/openhab/4.0.9/ix_values.yaml b/stable/openhab/4.0.10/ix_values.yaml similarity index 100% rename from stable/openhab/4.0.9/ix_values.yaml rename to stable/openhab/4.0.10/ix_values.yaml diff --git a/stable/openhab/4.0.10/questions.yaml b/stable/openhab/4.0.10/questions.yaml new file mode 100644 index 00000000000..05f08018188 --- /dev/null +++ b/stable/openhab/4.0.10/questions.yaml @@ -0,0 +1,2062 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10169 + required: true + - variable: https + label: "https Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: https + label: "https Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10170 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: addons + label: "App addons Storage" + description: "Stores the Application addons." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: userdata + label: "App userdata Storage" + description: "Stores the Application userdata." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/openhab/4.0.9/templates/common.yaml b/stable/openhab/4.0.10/templates/common.yaml similarity index 100% rename from stable/openhab/4.0.9/templates/common.yaml rename to stable/openhab/4.0.10/templates/common.yaml diff --git a/stable/posterr/3.0.7/values.yaml b/stable/openhab/4.0.10/values.yaml similarity index 100% rename from stable/posterr/3.0.7/values.yaml rename to stable/openhab/4.0.10/values.yaml diff --git a/stable/openhab/4.0.9/CHANGELOG.md b/stable/openhab/4.0.9/CHANGELOG.md deleted file mode 100644 index 83254498e49..00000000000 --- a/stable/openhab/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [openhab-4.0.9](https://github.com/truecharts/charts/compare/openhab-4.0.8...openhab-4.0.9) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/openhab to v3.4.1 - - - - -## [openhab-4.0.8](https://github.com/truecharts/charts/compare/openhab-4.0.7...openhab-4.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [openhab-4.0.7](https://github.com/truecharts/charts/compare/openhab-4.0.6...openhab-4.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [openhab-4.0.6](https://github.com/truecharts/charts/compare/openhab-4.0.5...openhab-4.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [openhab-4.0.5](https://github.com/truecharts/charts/compare/openhab-4.0.4...openhab-4.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [openhab-4.0.4](https://github.com/truecharts/charts/compare/openhab-4.0.3...openhab-4.0.4) (2022-12-19) - -### Chore - -- update container image tccr.io/truecharts/openhab to v3.4.0 - - - - -## [openhab-4.0.3](https://github.com/truecharts/charts/compare/openhab-4.0.2...openhab-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) - - - - -## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) - - - - -## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) - - - - -## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) - - - - -## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) - - - - -## [openhab-4.0.2](https://github.com/truecharts/charts/compare/openhab-4.0.1...openhab-4.0.2) (2022-11-30) - - - - diff --git a/stable/openhab/4.0.9/Chart.yaml b/stable/openhab/4.0.9/Chart.yaml deleted file mode 100644 index a1d49d01501..00000000000 --- a/stable/openhab/4.0.9/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "3.4.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: OpenHab is a home-automation application -home: https://truecharts.org/charts/stable/openhab -icon: https://truecharts.org/img/hotlink-ok/chart-icons/openhab.png -keywords: - - openhab -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: openhab -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/openhab - - https://hub.docker.com/r/openhab/openhab -type: application -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - media - - test - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/openhab/4.0.9/app-changelog.md b/stable/openhab/4.0.9/app-changelog.md deleted file mode 100644 index 368d3f38926..00000000000 --- a/stable/openhab/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [openhab-4.0.9](https://github.com/truecharts/charts/compare/openhab-4.0.8...openhab-4.0.9) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/openhab to v3.4.1 - - \ No newline at end of file diff --git a/stable/openhab/4.0.9/app-readme.md b/stable/openhab/4.0.9/app-readme.md deleted file mode 100644 index 27a0b0afd23..00000000000 --- a/stable/openhab/4.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -OpenHab is a home-automation application - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/openhab](https://truecharts.org/charts/stable/openhab) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/openhab/4.0.9/questions.yaml b/stable/openhab/4.0.9/questions.yaml deleted file mode 100644 index fac0a013279..00000000000 --- a/stable/openhab/4.0.9/questions.yaml +++ /dev/null @@ -1,2021 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10169 - required: true - - variable: https - label: "https Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: https - label: "https Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10170 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: addons - label: "App addons Storage" - description: "Stores the Application addons." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: userdata - label: "App userdata Storage" - description: "Stores the Application userdata." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/openldap/9.0.7/CHANGELOG.md b/stable/openldap/9.0.7/CHANGELOG.md deleted file mode 100644 index 985f4f90a4e..00000000000 --- a/stable/openldap/9.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [openldap-9.0.7](https://github.com/truecharts/charts/compare/openldap-9.0.6...openldap-9.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [openldap-9.0.6](https://github.com/truecharts/charts/compare/openldap-9.0.5...openldap-9.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [openldap-9.0.5](https://github.com/truecharts/charts/compare/openldap-9.0.4...openldap-9.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [openldap-9.0.4](https://github.com/truecharts/charts/compare/openldap-9.0.3...openldap-9.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [openldap-9.0.3](https://github.com/truecharts/charts/compare/openldap-9.0.2...openldap-9.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - - - -## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) - - diff --git a/stable/openldap/9.0.7/Chart.yaml b/stable/openldap/9.0.7/Chart.yaml deleted file mode 100644 index 51bb121afd5..00000000000 --- a/stable/openldap/9.0.7/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "1.5.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Community developed LDAP software -home: https://truecharts.org/charts/stable/openldap -icon: https://truecharts.org/img/hotlink-ok/chart-icons/openldap.png -keywords: - - ldap - - openldap - - iam-stack - - high availability -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: openldap -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/openldap - - https://github.com/jp-gouin/helm-openldap - - https://github.com/osixia/docker-openldap -type: application -version: 9.0.7 -annotations: - truecharts.org/catagories: | - - cloud - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/openldap/9.0.7/app-changelog.md b/stable/openldap/9.0.7/app-changelog.md deleted file mode 100644 index 8bfdf503a1c..00000000000 --- a/stable/openldap/9.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [openldap-9.0.7](https://github.com/truecharts/charts/compare/openldap-9.0.6...openldap-9.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/openldap/9.0.7/app-readme.md b/stable/openldap/9.0.7/app-readme.md deleted file mode 100644 index b7fbaf78a82..00000000000 --- a/stable/openldap/9.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Community developed LDAP software - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/openldap](https://truecharts.org/charts/stable/openldap) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/openldap/9.0.7/questions.yaml b/stable/openldap/9.0.7/questions.yaml deleted file mode 100644 index 1b449383606..00000000000 --- a/stable/openldap/9.0.7/questions.yaml +++ /dev/null @@ -1,1827 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: LDAP_READONLY_USER_USERNAME - label: "LDAP_READONLY_USER_USERNAME" - schema: - type: string - required: true - default: "readonly" - - variable: LDAP_READONLY_USER_PASSWORD - label: "LDAP_READONLY_USER_PASSWORD" - schema: - type: string - required: true - private: true - default: "REPLACETHIS" - - variable: LDAP_ADMIN_PASSWORD - label: "LDAP_ADMIN_PASSWORD" - schema: - type: string - required: true - private: true - default: "REPLACETHIS" - - variable: LDAP_CONFIG_PASSWORD - label: "LDAP_CONFIG_PASSWORD" - schema: - type: string - required: true - private: true - default: "REPLACETHIS" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: LDAP_LOG_LEVEL - label: "LDAP_LOG_LEVEL" - schema: - type: int - required: true - default: 256 - - variable: LDAP_ORGANISATION - label: "LDAP_ORGANISATION" - schema: - type: string - required: true - default: "Example Company or Household" - - variable: LDAP_DOMAIN - label: "LDAP_DOMAIN" - schema: - type: string - required: true - default: "example.org" - - variable: LDAP_READONLY_USER - label: "LDAP_READONLY_USER" - schema: - type: boolean - default: false - - variable: LDAP_RFC2307BIS_SCHEMA - label: "LDAP_RFC2307BIS_SCHEMA" - schema: - type: boolean - default: false - - variable: LDAP_BACKEND - label: "LDAP_BACKEND" - schema: - type: string - required: true - default: "mdb" - - variable: LDAP_TLS - label: "LDAP_TLS" - schema: - type: boolean - default: true - - variable: LDAP_TLS_ENFORCE - label: "LDAP_TLS_ENFORCE" - schema: - type: boolean - default: false - - variable: LDAP_TLS_VERIFY_CLIENT - label: "LDAP_TLS_VERIFY_CLIENT" - schema: - type: string - required: true - default: "never" - - variable: LDAP_TLS_PROTOCOL_MIN - label: "LDAP_TLS_PROTOCOL_MIN" - schema: - type: string - required: true - default: "3.0" - - variable: LDAP_TLS_CIPHER_SUITE - label: "LDAP_TLS_CIPHER_SUITE" - schema: - type: string - required: true - default: "NORMAL" - - variable: LDAP_TLS_REQCERT - label: "LDAP_TLS_REQCERT" - schema: - type: string - required: true - default: "never" - - variable: CONTAINER_LOG_LEVEL - label: "CONTAINER_LOG_LEVEL" - schema: - type: int - required: true - default: 4 - - variable: KEEP_EXISTING_CONFIG - label: "KEEP_EXISTING_CONFIG" - schema: - type: boolean - default: false - - variable: LDAP_REMOVE_CONFIG_AFTER_SETUP - label: "LDAP_REMOVE_CONFIG_AFTER_SETUP" - schema: - type: boolean - default: true - - variable: LDAP_SSL_HELPER_PREFIX - label: "LDAP_SSL_HELPER_PREFIX" - schema: - type: string - required: true - default: "ldap" - - variable: LDAP_BASE_DN - label: "LDAP_BASE_DN" - schema: - type: string - required: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 389 - required: true - - variable: ldaps - label: "ldaps Service" - description: "The ldaps service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ldaps - label: "ldaps Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 636 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: volumeClaimTemplates - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: slapd - label: "App slapd Storage" - description: "Stores the Application slapd." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/openldap/9.0.8/CHANGELOG.md b/stable/openldap/9.0.8/CHANGELOG.md new file mode 100644 index 00000000000..fd0d922b0f4 --- /dev/null +++ b/stable/openldap/9.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [openldap-9.0.8](https://github.com/truecharts/charts/compare/openldap-9.0.7...openldap-9.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [openldap-9.0.7](https://github.com/truecharts/charts/compare/openldap-9.0.6...openldap-9.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [openldap-9.0.6](https://github.com/truecharts/charts/compare/openldap-9.0.5...openldap-9.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [openldap-9.0.5](https://github.com/truecharts/charts/compare/openldap-9.0.4...openldap-9.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [openldap-9.0.4](https://github.com/truecharts/charts/compare/openldap-9.0.3...openldap-9.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [openldap-9.0.3](https://github.com/truecharts/charts/compare/openldap-9.0.2...openldap-9.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) + + + + +## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) + + + + +## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) + + + + +## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) + + + + +## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) + + + + +## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) + + + + +## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) + + + + +## [openldap-9.0.2](https://github.com/truecharts/charts/compare/openldap-9.0.1...openldap-9.0.2) (2022-11-30) + + + diff --git a/stable/openldap/9.0.8/Chart.yaml b/stable/openldap/9.0.8/Chart.yaml new file mode 100644 index 00000000000..0963f26566a --- /dev/null +++ b/stable/openldap/9.0.8/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "1.5.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Community developed LDAP software +home: https://truecharts.org/charts/stable/openldap +icon: https://truecharts.org/img/hotlink-ok/chart-icons/openldap.png +keywords: + - ldap + - openldap + - iam-stack + - high availability +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: openldap +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/openldap + - https://hub.docker.com/osixia/openldap + - https://github.com/jp-gouin/helm-openldap + - https://github.com/osixia/docker-openldap +type: application +version: 9.0.8 +annotations: + truecharts.org/catagories: | + - cloud + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/posterr/3.0.7/README.md b/stable/openldap/9.0.8/README.md similarity index 100% rename from stable/posterr/3.0.7/README.md rename to stable/openldap/9.0.8/README.md diff --git a/stable/openldap/9.0.8/app-changelog.md b/stable/openldap/9.0.8/app-changelog.md new file mode 100644 index 00000000000..e4085b78980 --- /dev/null +++ b/stable/openldap/9.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [openldap-9.0.8](https://github.com/truecharts/charts/compare/openldap-9.0.7...openldap-9.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/openldap/9.0.8/app-readme.md b/stable/openldap/9.0.8/app-readme.md new file mode 100644 index 00000000000..5619e34317a --- /dev/null +++ b/stable/openldap/9.0.8/app-readme.md @@ -0,0 +1,8 @@ +Community developed LDAP software + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/openldap](https://truecharts.org/charts/stable/openldap) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/pretend-youre-xyzzy/8.0.7/charts/common-11.1.2.tgz b/stable/openldap/9.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/pretend-youre-xyzzy/8.0.7/charts/common-11.1.2.tgz rename to stable/openldap/9.0.8/charts/common-11.1.2.tgz diff --git a/stable/openldap/9.0.7/ix_values.yaml b/stable/openldap/9.0.8/ix_values.yaml similarity index 100% rename from stable/openldap/9.0.7/ix_values.yaml rename to stable/openldap/9.0.8/ix_values.yaml diff --git a/stable/openldap/9.0.8/questions.yaml b/stable/openldap/9.0.8/questions.yaml new file mode 100644 index 00000000000..f76fafc6ba5 --- /dev/null +++ b/stable/openldap/9.0.8/questions.yaml @@ -0,0 +1,1827 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: LDAP_READONLY_USER_USERNAME + label: "LDAP_READONLY_USER_USERNAME" + schema: + type: string + required: true + default: "readonly" + - variable: LDAP_READONLY_USER_PASSWORD + label: "LDAP_READONLY_USER_PASSWORD" + schema: + type: string + required: true + private: true + default: "REPLACETHIS" + - variable: LDAP_ADMIN_PASSWORD + label: "LDAP_ADMIN_PASSWORD" + schema: + type: string + required: true + private: true + default: "REPLACETHIS" + - variable: LDAP_CONFIG_PASSWORD + label: "LDAP_CONFIG_PASSWORD" + schema: + type: string + required: true + private: true + default: "REPLACETHIS" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: LDAP_LOG_LEVEL + label: "LDAP_LOG_LEVEL" + schema: + type: int + required: true + default: 256 + - variable: LDAP_ORGANISATION + label: "LDAP_ORGANISATION" + schema: + type: string + required: true + default: "Example Company or Household" + - variable: LDAP_DOMAIN + label: "LDAP_DOMAIN" + schema: + type: string + required: true + default: "example.org" + - variable: LDAP_READONLY_USER + label: "LDAP_READONLY_USER" + schema: + type: boolean + default: false + - variable: LDAP_RFC2307BIS_SCHEMA + label: "LDAP_RFC2307BIS_SCHEMA" + schema: + type: boolean + default: false + - variable: LDAP_BACKEND + label: "LDAP_BACKEND" + schema: + type: string + required: true + default: "mdb" + - variable: LDAP_TLS + label: "LDAP_TLS" + schema: + type: boolean + default: true + - variable: LDAP_TLS_ENFORCE + label: "LDAP_TLS_ENFORCE" + schema: + type: boolean + default: false + - variable: LDAP_TLS_VERIFY_CLIENT + label: "LDAP_TLS_VERIFY_CLIENT" + schema: + type: string + required: true + default: "never" + - variable: LDAP_TLS_PROTOCOL_MIN + label: "LDAP_TLS_PROTOCOL_MIN" + schema: + type: string + required: true + default: "3.0" + - variable: LDAP_TLS_CIPHER_SUITE + label: "LDAP_TLS_CIPHER_SUITE" + schema: + type: string + required: true + default: "NORMAL" + - variable: LDAP_TLS_REQCERT + label: "LDAP_TLS_REQCERT" + schema: + type: string + required: true + default: "never" + - variable: CONTAINER_LOG_LEVEL + label: "CONTAINER_LOG_LEVEL" + schema: + type: int + required: true + default: 4 + - variable: KEEP_EXISTING_CONFIG + label: "KEEP_EXISTING_CONFIG" + schema: + type: boolean + default: false + - variable: LDAP_REMOVE_CONFIG_AFTER_SETUP + label: "LDAP_REMOVE_CONFIG_AFTER_SETUP" + schema: + type: boolean + default: true + - variable: LDAP_SSL_HELPER_PREFIX + label: "LDAP_SSL_HELPER_PREFIX" + schema: + type: string + required: true + default: "ldap" + - variable: LDAP_BASE_DN + label: "LDAP_BASE_DN" + schema: + type: string + required: true + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 389 + required: true + - variable: ldaps + label: "ldaps Service" + description: "The ldaps service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ldaps + label: "ldaps Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 636 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: volumeClaimTemplates + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: slapd + label: "App slapd Storage" + description: "Stores the Application slapd." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/openldap/9.0.7/templates/_configmap.tpl b/stable/openldap/9.0.8/templates/_configmap.tpl similarity index 100% rename from stable/openldap/9.0.7/templates/_configmap.tpl rename to stable/openldap/9.0.8/templates/_configmap.tpl diff --git a/stable/openldap/9.0.7/templates/common.yaml b/stable/openldap/9.0.8/templates/common.yaml similarity index 100% rename from stable/openldap/9.0.7/templates/common.yaml rename to stable/openldap/9.0.8/templates/common.yaml diff --git a/stable/pretend-youre-xyzzy/8.0.7/values.yaml b/stable/openldap/9.0.8/values.yaml similarity index 100% rename from stable/pretend-youre-xyzzy/8.0.7/values.yaml rename to stable/openldap/9.0.8/values.yaml diff --git a/stable/openspeedtest/3.0.14/CHANGELOG.md b/stable/openspeedtest/3.0.14/CHANGELOG.md deleted file mode 100644 index ba4f87da249..00000000000 --- a/stable/openspeedtest/3.0.14/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [openspeedtest-3.0.14](https://github.com/truecharts/charts/compare/openspeedtest-3.0.13...openspeedtest-3.0.14) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/openspeedtest to latest - - - - -## [openspeedtest-3.0.13](https://github.com/truecharts/charts/compare/openspeedtest-3.0.12...openspeedtest-3.0.13) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/openspeedtest to latest - - - - -## [openspeedtest-3.0.12](https://github.com/truecharts/charts/compare/openspeedtest-3.0.11...openspeedtest-3.0.12) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/openspeedtest to latest - - - - -## [openspeedtest-3.0.11](https://github.com/truecharts/charts/compare/openspeedtest-3.0.10...openspeedtest-3.0.11) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [openspeedtest-3.0.10](https://github.com/truecharts/charts/compare/openspeedtest-3.0.9...openspeedtest-3.0.10) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [openspeedtest-3.0.9](https://github.com/truecharts/charts/compare/openspeedtest-3.0.8...openspeedtest-3.0.9) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [openspeedtest-3.0.8](https://github.com/truecharts/charts/compare/openspeedtest-3.0.7...openspeedtest-3.0.8) (2022-12-24) - -### Chore - -- update container image tccr.io/truecharts/openspeedtest to latest - - - - -## [openspeedtest-3.0.7](https://github.com/truecharts/charts/compare/openspeedtest-3.0.6...openspeedtest-3.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [openspeedtest-3.0.6](https://github.com/truecharts/charts/compare/openspeedtest-3.0.5...openspeedtest-3.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [openspeedtest-3.0.5](https://github.com/truecharts/charts/compare/openspeedtest-3.0.4...openspeedtest-3.0.5) (2022-12-12) - -### Chore - -- update container image tccr.io/truecharts/openspeedtest to latest - - - - -## [openspeedtest-3.0.4](https://github.com/truecharts/charts/compare/openspeedtest-3.0.3...openspeedtest-3.0.4) (2022-11-30) - - diff --git a/stable/openspeedtest/3.0.14/Chart.yaml b/stable/openspeedtest/3.0.14/Chart.yaml deleted file mode 100644 index be7ac72c920..00000000000 --- a/stable/openspeedtest/3.0.14/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: HTML5 Network Speed Test Server. You can test download & upload speed from any device within your network with a web browser that is IE10 or new. -home: https://truecharts.org/charts/stable/openspeedtest -icon: https://truecharts.org/img/hotlink-ok/chart-icons/openspeedtest.png -keywords: - - speedtest - - speed test - - openspeedtest -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: openspeedtest -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/openspeedtest - - https://github.com/openspeedtest/Speed-Test -type: application -version: 3.0.14 -annotations: - truecharts.org/catagories: | - - utilities - - test - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/openspeedtest/3.0.14/app-changelog.md b/stable/openspeedtest/3.0.14/app-changelog.md deleted file mode 100644 index 73434be76c5..00000000000 --- a/stable/openspeedtest/3.0.14/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [openspeedtest-3.0.14](https://github.com/truecharts/charts/compare/openspeedtest-3.0.13...openspeedtest-3.0.14) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/openspeedtest to latest - - \ No newline at end of file diff --git a/stable/openspeedtest/3.0.15/CHANGELOG.md b/stable/openspeedtest/3.0.15/CHANGELOG.md new file mode 100644 index 00000000000..d798a5c587c --- /dev/null +++ b/stable/openspeedtest/3.0.15/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [openspeedtest-3.0.15](https://github.com/truecharts/charts/compare/openspeedtest-3.0.14...openspeedtest-3.0.15) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [openspeedtest-3.0.14](https://github.com/truecharts/charts/compare/openspeedtest-3.0.13...openspeedtest-3.0.14) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/openspeedtest to latest + + + + +## [openspeedtest-3.0.13](https://github.com/truecharts/charts/compare/openspeedtest-3.0.12...openspeedtest-3.0.13) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/openspeedtest to latest + + + + +## [openspeedtest-3.0.12](https://github.com/truecharts/charts/compare/openspeedtest-3.0.11...openspeedtest-3.0.12) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/openspeedtest to latest + + + + +## [openspeedtest-3.0.11](https://github.com/truecharts/charts/compare/openspeedtest-3.0.10...openspeedtest-3.0.11) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [openspeedtest-3.0.10](https://github.com/truecharts/charts/compare/openspeedtest-3.0.9...openspeedtest-3.0.10) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [openspeedtest-3.0.9](https://github.com/truecharts/charts/compare/openspeedtest-3.0.8...openspeedtest-3.0.9) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [openspeedtest-3.0.8](https://github.com/truecharts/charts/compare/openspeedtest-3.0.7...openspeedtest-3.0.8) (2022-12-24) + +### Chore + +- update container image tccr.io/truecharts/openspeedtest to latest + + + + +## [openspeedtest-3.0.7](https://github.com/truecharts/charts/compare/openspeedtest-3.0.6...openspeedtest-3.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [openspeedtest-3.0.6](https://github.com/truecharts/charts/compare/openspeedtest-3.0.5...openspeedtest-3.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [openspeedtest-3.0.5](https://github.com/truecharts/charts/compare/openspeedtest-3.0.4...openspeedtest-3.0.5) (2022-12-12) + +### Chore diff --git a/stable/openspeedtest/3.0.15/Chart.yaml b/stable/openspeedtest/3.0.15/Chart.yaml new file mode 100644 index 00000000000..89daee0516f --- /dev/null +++ b/stable/openspeedtest/3.0.15/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: HTML5 Network Speed Test Server. You can test download & upload speed from any device within your network with a web browser that is IE10 or new. +home: https://truecharts.org/charts/stable/openspeedtest +icon: https://truecharts.org/img/hotlink-ok/chart-icons/openspeedtest.png +keywords: + - speedtest + - speed test + - openspeedtest +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: openspeedtest +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/openspeedtest + - https://hub.docker.com/openspeedtest/latest + - https://github.com/openspeedtest/Speed-Test +type: application +version: 3.0.15 +annotations: + truecharts.org/catagories: | + - utilities + - test + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/pretend-youre-xyzzy/8.0.7/README.md b/stable/openspeedtest/3.0.15/README.md similarity index 100% rename from stable/pretend-youre-xyzzy/8.0.7/README.md rename to stable/openspeedtest/3.0.15/README.md diff --git a/stable/openspeedtest/3.0.15/app-changelog.md b/stable/openspeedtest/3.0.15/app-changelog.md new file mode 100644 index 00000000000..80456d32c7d --- /dev/null +++ b/stable/openspeedtest/3.0.15/app-changelog.md @@ -0,0 +1,9 @@ + + +## [openspeedtest-3.0.15](https://github.com/truecharts/charts/compare/openspeedtest-3.0.14...openspeedtest-3.0.15) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/openspeedtest/3.0.14/app-readme.md b/stable/openspeedtest/3.0.15/app-readme.md similarity index 100% rename from stable/openspeedtest/3.0.14/app-readme.md rename to stable/openspeedtest/3.0.15/app-readme.md diff --git a/stable/promcord/6.0.10/charts/common-11.1.2.tgz b/stable/openspeedtest/3.0.15/charts/common-11.1.2.tgz similarity index 100% rename from stable/promcord/6.0.10/charts/common-11.1.2.tgz rename to stable/openspeedtest/3.0.15/charts/common-11.1.2.tgz diff --git a/stable/openspeedtest/3.0.14/ix_values.yaml b/stable/openspeedtest/3.0.15/ix_values.yaml similarity index 100% rename from stable/openspeedtest/3.0.14/ix_values.yaml rename to stable/openspeedtest/3.0.15/ix_values.yaml diff --git a/stable/openspeedtest/3.0.14/questions.yaml b/stable/openspeedtest/3.0.15/questions.yaml similarity index 100% rename from stable/openspeedtest/3.0.14/questions.yaml rename to stable/openspeedtest/3.0.15/questions.yaml diff --git a/stable/retrobot/3.0.8/templates/common.yaml b/stable/openspeedtest/3.0.15/templates/common.yaml similarity index 100% rename from stable/retrobot/3.0.8/templates/common.yaml rename to stable/openspeedtest/3.0.15/templates/common.yaml diff --git a/stable/promcord/6.0.10/values.yaml b/stable/openspeedtest/3.0.15/values.yaml similarity index 100% rename from stable/promcord/6.0.10/values.yaml rename to stable/openspeedtest/3.0.15/values.yaml diff --git a/stable/organizr/13.0.9/CHANGELOG.md b/stable/organizr/13.0.9/CHANGELOG.md new file mode 100644 index 00000000000..d7578d61090 --- /dev/null +++ b/stable/organizr/13.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [organizr-13.0.9](https://github.com/truecharts/charts/compare/organizr-13.0.8...organizr-13.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [organizr-13.0.8](https://github.com/truecharts/charts/compare/organizr-13.0.7...organizr-13.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [organizr-13.0.7](https://github.com/truecharts/charts/compare/organizr-13.0.6...organizr-13.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [organizr-13.0.6](https://github.com/truecharts/charts/compare/organizr-13.0.5...organizr-13.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [organizr-13.0.5](https://github.com/truecharts/charts/compare/organizr-13.0.4...organizr-13.0.5) (2022-12-24) + +### Feat + +- organizr forwardauth guide ([#5639](https://github.com/truecharts/charts/issues/5639)) + + + + +## [organizr-13.0.4](https://github.com/truecharts/charts/compare/organizr-13.0.3...organizr-13.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [organizr-13.0.3](https://github.com/truecharts/charts/compare/organizr-13.0.2...organizr-13.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [organizr-13.0.2](https://github.com/truecharts/charts/compare/organizr-13.0.1...organizr-13.0.2) (2022-11-30) + + + + +## [organizr-13.0.2](https://github.com/truecharts/charts/compare/organizr-13.0.1...organizr-13.0.2) (2022-11-30) + + + + +## [organizr-13.0.2](https://github.com/truecharts/charts/compare/organizr-13.0.1...organizr-13.0.2) (2022-11-30) + + + + +## [organizr-13.0.2](https://github.com/truecharts/charts/compare/organizr-13.0.1...organizr-13.0.2) (2022-11-30) + + + + +## [organizr-13.0.2](https://github.com/truecharts/charts/compare/organizr-13.0.1...organizr-13.0.2) (2022-11-30) + + + + +## [organizr-13.0.2](https://github.com/truecharts/charts/compare/organizr-13.0.1...organizr-13.0.2) (2022-11-30) + + + + diff --git a/stable/organizr/13.0.9/Chart.yaml b/stable/organizr/13.0.9/Chart.yaml new file mode 100644 index 00000000000..c89c30880c4 --- /dev/null +++ b/stable/organizr/13.0.9/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: HTPC/Homelab Services Organizer +home: https://truecharts.org/charts/stable/organizr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/organizr.png +keywords: + - organizr +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: organizr +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/organizr + - https://hub.docker.com/organizr/organizr + - https://github.com/causefx/Organizr +type: application +version: 13.0.9 +annotations: + truecharts.org/catagories: | + - organizers + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/promcord/6.0.10/README.md b/stable/organizr/13.0.9/README.md similarity index 100% rename from stable/promcord/6.0.10/README.md rename to stable/organizr/13.0.9/README.md diff --git a/stable/organizr/13.0.9/app-changelog.md b/stable/organizr/13.0.9/app-changelog.md new file mode 100644 index 00000000000..d7146587ac0 --- /dev/null +++ b/stable/organizr/13.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [organizr-13.0.9](https://github.com/truecharts/charts/compare/organizr-13.0.8...organizr-13.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/organizr/13.0.9/app-readme.md b/stable/organizr/13.0.9/app-readme.md new file mode 100644 index 00000000000..71119255288 --- /dev/null +++ b/stable/organizr/13.0.9/app-readme.md @@ -0,0 +1,8 @@ +HTPC/Homelab Services Organizer + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/organizr](https://truecharts.org/charts/stable/organizr) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/putty/3.0.8/charts/common-11.1.2.tgz b/stable/organizr/13.0.9/charts/common-11.1.2.tgz similarity index 100% rename from stable/putty/3.0.8/charts/common-11.1.2.tgz rename to stable/organizr/13.0.9/charts/common-11.1.2.tgz diff --git a/stable/organizr/13.0.9/ix_values.yaml b/stable/organizr/13.0.9/ix_values.yaml new file mode 100644 index 00000000000..a74e71dc394 --- /dev/null +++ b/stable/organizr/13.0.9/ix_values.yaml @@ -0,0 +1,30 @@ +image: + repository: tccr.io/truecharts/organizr + pullPolicy: Always + tag: latest@sha256:aa4357e9fdd9d1c2fc887fb2b06be0daf58149495733810964363d295caec647 + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +service: + main: + ports: + main: + port: 10022 + targetPort: 80 + +persistence: + config: + enabled: true + mountPath: "/config" + data: + enabled: true + mountPath: "/data" + +portal: + enabled: true diff --git a/stable/organizr/13.0.9/questions.yaml b/stable/organizr/13.0.9/questions.yaml new file mode 100644 index 00000000000..7921811bf57 --- /dev/null +++ b/stable/organizr/13.0.9/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10022 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/rsshub/6.0.29/templates/common.yaml b/stable/organizr/13.0.9/templates/common.yaml similarity index 100% rename from stable/rsshub/6.0.29/templates/common.yaml rename to stable/organizr/13.0.9/templates/common.yaml diff --git a/stable/putty/3.0.8/values.yaml b/stable/organizr/13.0.9/values.yaml similarity index 100% rename from stable/putty/3.0.8/values.yaml rename to stable/organizr/13.0.9/values.yaml diff --git a/stable/outline/6.0.20/CHANGELOG.md b/stable/outline/6.0.20/CHANGELOG.md deleted file mode 100644 index 75be29c6276..00000000000 --- a/stable/outline/6.0.20/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [outline-6.0.20](https://github.com/truecharts/charts/compare/outline-6.0.19...outline-6.0.20) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [outline-6.0.19](https://github.com/truecharts/charts/compare/outline-6.0.18...outline-6.0.19) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [outline-6.0.18](https://github.com/truecharts/charts/compare/outline-6.0.17...outline-6.0.18) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [outline-6.0.17](https://github.com/truecharts/charts/compare/outline-6.0.16...outline-6.0.17) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [outline-6.0.16](https://github.com/truecharts/charts/compare/outline-6.0.15...outline-6.0.16) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [outline-6.0.15](https://github.com/truecharts/charts/compare/outline-6.0.14...outline-6.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [outline-6.0.14](https://github.com/truecharts/charts/compare/outline-6.0.13...outline-6.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [outline-6.0.13](https://github.com/truecharts/charts/compare/outline-6.0.12...outline-6.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [outline-6.0.12](https://github.com/truecharts/charts/compare/outline-6.0.11...outline-6.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [outline-6.0.11](https://github.com/truecharts/charts/compare/outline-6.0.10...outline-6.0.11) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - update helm chart redis to v5.0.16 - - - - -## [outline-6.0.10](https://github.com/truecharts/charts/compare/outline-6.0.9...outline-6.0.10) (2022-12-13) - diff --git a/stable/outline/6.0.20/Chart.yaml b/stable/outline/6.0.20/Chart.yaml deleted file mode 100644 index 657c7d6f87e..00000000000 --- a/stable/outline/6.0.20/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: v2 -appVersion: "0.66.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -deprecated: false -description: A fast, collaborative, knowledge base for your team built using React and Node.js. -home: https://truecharts.org/charts/stable/outline -icon: https://truecharts.org/img/hotlink-ok/chart-icons/outline.png -keywords: - - outline - - knowledge -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: outline -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/outline - - https://github.com/outline/outline -type: application -version: 6.0.20 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/outline/6.0.20/app-changelog.md b/stable/outline/6.0.20/app-changelog.md deleted file mode 100644 index ce80596dc01..00000000000 --- a/stable/outline/6.0.20/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [outline-6.0.20](https://github.com/truecharts/charts/compare/outline-6.0.19...outline-6.0.20) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/outline/6.0.21/CHANGELOG.md b/stable/outline/6.0.21/CHANGELOG.md new file mode 100644 index 00000000000..b5518cadb27 --- /dev/null +++ b/stable/outline/6.0.21/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [outline-6.0.21](https://github.com/truecharts/charts/compare/outline-6.0.20...outline-6.0.21) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [outline-6.0.20](https://github.com/truecharts/charts/compare/outline-6.0.19...outline-6.0.20) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [outline-6.0.19](https://github.com/truecharts/charts/compare/outline-6.0.18...outline-6.0.19) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [outline-6.0.18](https://github.com/truecharts/charts/compare/outline-6.0.17...outline-6.0.18) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [outline-6.0.17](https://github.com/truecharts/charts/compare/outline-6.0.16...outline-6.0.17) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [outline-6.0.16](https://github.com/truecharts/charts/compare/outline-6.0.15...outline-6.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [outline-6.0.15](https://github.com/truecharts/charts/compare/outline-6.0.14...outline-6.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [outline-6.0.14](https://github.com/truecharts/charts/compare/outline-6.0.13...outline-6.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [outline-6.0.13](https://github.com/truecharts/charts/compare/outline-6.0.12...outline-6.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [outline-6.0.12](https://github.com/truecharts/charts/compare/outline-6.0.11...outline-6.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [outline-6.0.11](https://github.com/truecharts/charts/compare/outline-6.0.10...outline-6.0.11) (2022-12-18) + +### Chore diff --git a/stable/outline/6.0.21/Chart.yaml b/stable/outline/6.0.21/Chart.yaml new file mode 100644 index 00000000000..3186e87c88e --- /dev/null +++ b/stable/outline/6.0.21/Chart.yaml @@ -0,0 +1,38 @@ +apiVersion: v2 +appVersion: "0.66.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +deprecated: false +description: A fast, collaborative, knowledge base for your team built using React and Node.js. +home: https://truecharts.org/charts/stable/outline +icon: https://truecharts.org/img/hotlink-ok/chart-icons/outline.png +keywords: + - outline + - knowledge +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: outline +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/outline + - https://hub.docker.com/outlinewiki/outline + - https://github.com/outline/outline +type: application +version: 6.0.21 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/putty/3.0.8/README.md b/stable/outline/6.0.21/README.md similarity index 100% rename from stable/putty/3.0.8/README.md rename to stable/outline/6.0.21/README.md diff --git a/stable/outline/6.0.21/app-changelog.md b/stable/outline/6.0.21/app-changelog.md new file mode 100644 index 00000000000..227a6fff4e2 --- /dev/null +++ b/stable/outline/6.0.21/app-changelog.md @@ -0,0 +1,9 @@ + + +## [outline-6.0.21](https://github.com/truecharts/charts/compare/outline-6.0.20...outline-6.0.21) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/outline/6.0.20/app-readme.md b/stable/outline/6.0.21/app-readme.md similarity index 100% rename from stable/outline/6.0.20/app-readme.md rename to stable/outline/6.0.21/app-readme.md diff --git a/stable/pydio-cells/7.0.19/charts/common-11.1.2.tgz b/stable/outline/6.0.21/charts/common-11.1.2.tgz similarity index 100% rename from stable/pydio-cells/7.0.19/charts/common-11.1.2.tgz rename to stable/outline/6.0.21/charts/common-11.1.2.tgz diff --git a/stable/weblate/7.0.21/charts/postgresql-11.0.22.tgz b/stable/outline/6.0.21/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/weblate/7.0.21/charts/postgresql-11.0.22.tgz rename to stable/outline/6.0.21/charts/postgresql-11.0.22.tgz diff --git a/stable/rsshub/6.0.29/charts/redis-5.0.29.tgz b/stable/outline/6.0.21/charts/redis-5.0.29.tgz similarity index 100% rename from stable/rsshub/6.0.29/charts/redis-5.0.29.tgz rename to stable/outline/6.0.21/charts/redis-5.0.29.tgz diff --git a/stable/outline/6.0.20/ix_values.yaml b/stable/outline/6.0.21/ix_values.yaml similarity index 100% rename from stable/outline/6.0.20/ix_values.yaml rename to stable/outline/6.0.21/ix_values.yaml diff --git a/stable/outline/6.0.20/questions.yaml b/stable/outline/6.0.21/questions.yaml similarity index 100% rename from stable/outline/6.0.20/questions.yaml rename to stable/outline/6.0.21/questions.yaml diff --git a/stable/outline/6.0.20/templates/_secrets.tpl b/stable/outline/6.0.21/templates/_secrets.tpl similarity index 100% rename from stable/outline/6.0.20/templates/_secrets.tpl rename to stable/outline/6.0.21/templates/_secrets.tpl diff --git a/stable/outline/6.0.20/templates/common.yaml b/stable/outline/6.0.21/templates/common.yaml similarity index 100% rename from stable/outline/6.0.20/templates/common.yaml rename to stable/outline/6.0.21/templates/common.yaml diff --git a/stable/pydio-cells/7.0.19/values.yaml b/stable/outline/6.0.21/values.yaml similarity index 100% rename from stable/pydio-cells/7.0.19/values.yaml rename to stable/outline/6.0.21/values.yaml diff --git a/stable/owncast/8.0.8/CHANGELOG.md b/stable/owncast/8.0.8/CHANGELOG.md deleted file mode 100644 index c9ef64f875c..00000000000 --- a/stable/owncast/8.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [owncast-8.0.8](https://github.com/truecharts/charts/compare/owncast-8.0.7...owncast-8.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [owncast-8.0.7](https://github.com/truecharts/charts/compare/owncast-8.0.6...owncast-8.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [owncast-8.0.6](https://github.com/truecharts/charts/compare/owncast-8.0.5...owncast-8.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [owncast-8.0.5](https://github.com/truecharts/charts/compare/owncast-8.0.4...owncast-8.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [owncast-8.0.4](https://github.com/truecharts/charts/compare/owncast-8.0.3...owncast-8.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/owncast to v0.0.13 - - - - -## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/owncast to v0.0.13 - - - - -## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/owncast to v0.0.13 - - - - -## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/owncast to v0.0.13 - - - - -## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) - -### Chore - -- update container image tccr.io/truecharts/owncast to v0.0.13 - - - - -## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) - -### Chore diff --git a/stable/owncast/8.0.8/Chart.yaml b/stable/owncast/8.0.8/Chart.yaml deleted file mode 100644 index 498b67f8b10..00000000000 --- a/stable/owncast/8.0.8/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "0.0.13" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Take control over your live stream video by running it yourself. Streaming + chat out of the box. -home: https://truecharts.org/charts/stable/owncast -icon: https://truecharts.org/img/hotlink-ok/chart-icons/owncast.png -keywords: - - owncast - - stream - - open source - - chat -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: owncast -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/owncast - - https://owncast.online/ - - https://github.com/owncast/owncast -version: 8.0.8 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/owncast/8.0.8/app-changelog.md b/stable/owncast/8.0.8/app-changelog.md deleted file mode 100644 index c7cf6b101ce..00000000000 --- a/stable/owncast/8.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [owncast-8.0.8](https://github.com/truecharts/charts/compare/owncast-8.0.7...owncast-8.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/owncast/8.0.8/app-readme.md b/stable/owncast/8.0.8/app-readme.md deleted file mode 100644 index 28f4e90095e..00000000000 --- a/stable/owncast/8.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Take control over your live stream video by running it yourself. Streaming + chat out of the box. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/owncast](https://truecharts.org/charts/stable/owncast) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/owncast/8.0.8/questions.yaml b/stable/owncast/8.0.8/questions.yaml deleted file mode 100644 index 136b3b24072..00000000000 --- a/stable/owncast/8.0.8/questions.yaml +++ /dev/null @@ -1,1889 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - admin: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" - path: "/admin/" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10088 - required: true - - variable: rtmp - label: "rtmp Service" - description: "The rtmp service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: rtmp - label: "rtmp Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 1935 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/owncast/8.0.9/CHANGELOG.md b/stable/owncast/8.0.9/CHANGELOG.md new file mode 100644 index 00000000000..b9ae8bf1ea4 --- /dev/null +++ b/stable/owncast/8.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [owncast-8.0.9](https://github.com/truecharts/charts/compare/owncast-8.0.8...owncast-8.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [owncast-8.0.8](https://github.com/truecharts/charts/compare/owncast-8.0.7...owncast-8.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [owncast-8.0.7](https://github.com/truecharts/charts/compare/owncast-8.0.6...owncast-8.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [owncast-8.0.6](https://github.com/truecharts/charts/compare/owncast-8.0.5...owncast-8.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [owncast-8.0.5](https://github.com/truecharts/charts/compare/owncast-8.0.4...owncast-8.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [owncast-8.0.4](https://github.com/truecharts/charts/compare/owncast-8.0.3...owncast-8.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/owncast to v0.0.13 + + + + +## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/owncast to v0.0.13 + + + + +## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/owncast to v0.0.13 + + + + +## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) + +### Chore + +- update container image tccr.io/truecharts/owncast to v0.0.13 + + + + +## [owncast-8.0.3](https://github.com/truecharts/charts/compare/owncast-8.0.1...owncast-8.0.3) (2022-11-30) + +### Chore diff --git a/stable/owncast/8.0.9/Chart.yaml b/stable/owncast/8.0.9/Chart.yaml new file mode 100644 index 00000000000..f3d9e7d049f --- /dev/null +++ b/stable/owncast/8.0.9/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "0.0.13" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Take control over your live stream video by running it yourself. Streaming + chat out of the box. +home: https://truecharts.org/charts/stable/owncast +icon: https://truecharts.org/img/hotlink-ok/chart-icons/owncast.png +keywords: + - owncast + - stream + - open source + - chat +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: owncast +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/owncast + - https://hub.docker.com/gabekangas/owncast + - https://owncast.online/ + - https://github.com/owncast/owncast +version: 8.0.9 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/pydio-cells/7.0.19/README.md b/stable/owncast/8.0.9/README.md similarity index 100% rename from stable/pydio-cells/7.0.19/README.md rename to stable/owncast/8.0.9/README.md diff --git a/stable/owncast/8.0.9/app-changelog.md b/stable/owncast/8.0.9/app-changelog.md new file mode 100644 index 00000000000..474c8c75bc6 --- /dev/null +++ b/stable/owncast/8.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [owncast-8.0.9](https://github.com/truecharts/charts/compare/owncast-8.0.8...owncast-8.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/owncast/8.0.9/app-readme.md b/stable/owncast/8.0.9/app-readme.md new file mode 100644 index 00000000000..288cc3e4bb8 --- /dev/null +++ b/stable/owncast/8.0.9/app-readme.md @@ -0,0 +1,8 @@ +Take control over your live stream video by running it yourself. Streaming + chat out of the box. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/owncast](https://truecharts.org/charts/stable/owncast) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/qdirstat/3.0.9/charts/common-11.1.2.tgz b/stable/owncast/8.0.9/charts/common-11.1.2.tgz similarity index 100% rename from stable/qdirstat/3.0.9/charts/common-11.1.2.tgz rename to stable/owncast/8.0.9/charts/common-11.1.2.tgz diff --git a/stable/owncast/8.0.8/ix_values.yaml b/stable/owncast/8.0.9/ix_values.yaml similarity index 100% rename from stable/owncast/8.0.8/ix_values.yaml rename to stable/owncast/8.0.9/ix_values.yaml diff --git a/stable/owncast/8.0.9/questions.yaml b/stable/owncast/8.0.9/questions.yaml new file mode 100644 index 00000000000..1df24884f75 --- /dev/null +++ b/stable/owncast/8.0.9/questions.yaml @@ -0,0 +1,1930 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + admin: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "/admin/" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10088 + required: true + - variable: rtmp + label: "rtmp Service" + description: "The rtmp service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: rtmp + label: "rtmp Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 1935 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/snapdrop/4.0.12/templates/common.yaml b/stable/owncast/8.0.9/templates/common.yaml similarity index 100% rename from stable/snapdrop/4.0.12/templates/common.yaml rename to stable/owncast/8.0.9/templates/common.yaml diff --git a/stable/qdirstat/3.0.9/values.yaml b/stable/owncast/8.0.9/values.yaml similarity index 100% rename from stable/qdirstat/3.0.9/values.yaml rename to stable/owncast/8.0.9/values.yaml diff --git a/stable/pasta/3.0.7/CHANGELOG.md b/stable/pasta/3.0.7/CHANGELOG.md deleted file mode 100644 index fd9d75e63ab..00000000000 --- a/stable/pasta/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [pasta-3.0.7](https://github.com/truecharts/charts/compare/pasta-3.0.6...pasta-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [pasta-3.0.6](https://github.com/truecharts/charts/compare/pasta-3.0.5...pasta-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [pasta-3.0.5](https://github.com/truecharts/charts/compare/pasta-3.0.4...pasta-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [pasta-3.0.4](https://github.com/truecharts/charts/compare/pasta-3.0.3...pasta-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [pasta-3.0.3](https://github.com/truecharts/charts/compare/pasta-3.0.2...pasta-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - - - -## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) - - diff --git a/stable/pasta/3.0.7/Chart.yaml b/stable/pasta/3.0.7/Chart.yaml deleted file mode 100644 index 7877e2e128e..00000000000 --- a/stable/pasta/3.0.7/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "1.6.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "PASTA - Audio and Subtitle Track Changer for Plex" -home: https://truecharts.org/charts/stable/pasta -icon: https://truecharts.org/img/hotlink-ok/chart-icons/pasta.png -keywords: - - pasta - - MediaApp-Other - - Tools-Utilities - - Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: pasta -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/pasta - - https://github.com/cglatot/pasta - - https://hub.docker.com/r/cglatot/pasta -type: application -version: 3.0.7 -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - MediaApp-Other - - Tools-Utilities - - Other diff --git a/stable/pasta/3.0.7/app-changelog.md b/stable/pasta/3.0.7/app-changelog.md deleted file mode 100644 index fa55d8bf9e4..00000000000 --- a/stable/pasta/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [pasta-3.0.7](https://github.com/truecharts/charts/compare/pasta-3.0.6...pasta-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/pasta/3.0.7/app-readme.md b/stable/pasta/3.0.7/app-readme.md deleted file mode 100644 index ac08fd513aa..00000000000 --- a/stable/pasta/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -PASTA - Audio and Subtitle Track Changer for Plex - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/pasta](https://truecharts.org/charts/stable/pasta) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/pasta/3.0.7/questions.yaml b/stable/pasta/3.0.7/questions.yaml deleted file mode 100644 index 021d471b3d5..00000000000 --- a/stable/pasta/3.0.7/questions.yaml +++ /dev/null @@ -1,1751 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10302 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/pasta/3.0.8/CHANGELOG.md b/stable/pasta/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..d78f8afb087 --- /dev/null +++ b/stable/pasta/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [pasta-3.0.8](https://github.com/truecharts/charts/compare/pasta-3.0.7...pasta-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [pasta-3.0.7](https://github.com/truecharts/charts/compare/pasta-3.0.6...pasta-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [pasta-3.0.6](https://github.com/truecharts/charts/compare/pasta-3.0.5...pasta-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [pasta-3.0.5](https://github.com/truecharts/charts/compare/pasta-3.0.4...pasta-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [pasta-3.0.4](https://github.com/truecharts/charts/compare/pasta-3.0.3...pasta-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [pasta-3.0.3](https://github.com/truecharts/charts/compare/pasta-3.0.2...pasta-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) + + + + +## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) + + + + +## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) + + + + +## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) + + + + +## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) + + + + +## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) + + + + +## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) + + + + +## [pasta-3.0.2](https://github.com/truecharts/charts/compare/pasta-3.0.1...pasta-3.0.2) (2022-11-30) + + + diff --git a/stable/pasta/3.0.8/Chart.yaml b/stable/pasta/3.0.8/Chart.yaml new file mode 100644 index 00000000000..87dce3cddcf --- /dev/null +++ b/stable/pasta/3.0.8/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "1.6.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "PASTA - Audio and Subtitle Track Changer for Plex" +home: https://truecharts.org/charts/stable/pasta +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pasta.png +keywords: + - pasta + - MediaApp-Other + - Tools-Utilities + - Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: pasta +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/pasta + - https://hub.docker.com/cglatot/pasta + - https://github.com/cglatot/pasta +type: application +version: 3.0.8 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - MediaApp-Other + - Tools-Utilities + - Other diff --git a/stable/qdirstat/3.0.9/README.md b/stable/pasta/3.0.8/README.md similarity index 100% rename from stable/qdirstat/3.0.9/README.md rename to stable/pasta/3.0.8/README.md diff --git a/stable/pasta/3.0.8/app-changelog.md b/stable/pasta/3.0.8/app-changelog.md new file mode 100644 index 00000000000..7ea3cb3b429 --- /dev/null +++ b/stable/pasta/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pasta-3.0.8](https://github.com/truecharts/charts/compare/pasta-3.0.7...pasta-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/pasta/3.0.8/app-readme.md b/stable/pasta/3.0.8/app-readme.md new file mode 100644 index 00000000000..6d034e30fb2 --- /dev/null +++ b/stable/pasta/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +PASTA - Audio and Subtitle Track Changer for Plex + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/pasta](https://truecharts.org/charts/stable/pasta) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/qinglong/4.0.14/charts/common-11.1.2.tgz b/stable/pasta/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/qinglong/4.0.14/charts/common-11.1.2.tgz rename to stable/pasta/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/pasta/3.0.7/ix_values.yaml b/stable/pasta/3.0.8/ix_values.yaml similarity index 100% rename from stable/pasta/3.0.7/ix_values.yaml rename to stable/pasta/3.0.8/ix_values.yaml diff --git a/stable/pasta/3.0.8/questions.yaml b/stable/pasta/3.0.8/questions.yaml new file mode 100644 index 00000000000..6b2bfba4ead --- /dev/null +++ b/stable/pasta/3.0.8/questions.yaml @@ -0,0 +1,1792 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10302 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/pasta/3.0.7/templates/common.yaml b/stable/pasta/3.0.8/templates/common.yaml similarity index 100% rename from stable/pasta/3.0.7/templates/common.yaml rename to stable/pasta/3.0.8/templates/common.yaml diff --git a/stable/qinglong/4.0.14/values.yaml b/stable/pasta/3.0.8/values.yaml similarity index 100% rename from stable/qinglong/4.0.14/values.yaml rename to stable/pasta/3.0.8/values.yaml diff --git a/stable/photoprism/13.0.23/CHANGELOG.md b/stable/photoprism/13.0.23/CHANGELOG.md new file mode 100644 index 00000000000..5a24b336cd5 --- /dev/null +++ b/stable/photoprism/13.0.23/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [photoprism-13.0.23](https://github.com/truecharts/charts/compare/photoprism-13.0.22...photoprism-13.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [photoprism-13.0.22](https://github.com/truecharts/charts/compare/photoprism-13.0.21...photoprism-13.0.22) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [photoprism-13.0.21](https://github.com/truecharts/charts/compare/photoprism-13.0.20...photoprism-13.0.21) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [photoprism-13.0.20](https://github.com/truecharts/charts/compare/photoprism-13.0.19...photoprism-13.0.20) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [photoprism-13.0.19](https://github.com/truecharts/charts/compare/photoprism-13.0.18...photoprism-13.0.19) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [photoprism-13.0.18](https://github.com/truecharts/charts/compare/photoprism-13.0.17...photoprism-13.0.18) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [photoprism-13.0.17](https://github.com/truecharts/charts/compare/photoprism-13.0.16...photoprism-13.0.17) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [photoprism-13.0.16](https://github.com/truecharts/charts/compare/photoprism-13.0.15...photoprism-13.0.16) (2022-12-26) + + + + +## [photoprism-13.0.15](https://github.com/truecharts/charts/compare/photoprism-13.0.14...photoprism-13.0.15) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [photoprism-13.0.14](https://github.com/truecharts/charts/compare/photoprism-13.0.13...photoprism-13.0.14) (2022-12-25) + +### Fix + +- don't overwrite `temp` key from common ([#5780](https://github.com/truecharts/charts/issues/5780)) + + + + +## [photoprism-13.0.13](https://github.com/truecharts/charts/compare/photoprism-13.0.12...photoprism-13.0.13) (2022-12-25) + +### Chore + +- move temp outside of photoprism folder ([#5776](https://github.com/truecharts/charts/issues/5776)) + + diff --git a/stable/photoprism/13.0.23/Chart.yaml b/stable/photoprism/13.0.23/Chart.yaml new file mode 100644 index 00000000000..f3edc1d84d0 --- /dev/null +++ b/stable/photoprism/13.0.23/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "221118" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 +description: "PhotoPrism® is a server-based application for browsing, organizing and sharing your personal photo collection" +home: https://truecharts.org/charts/stable/photoprism +icon: https://truecharts.org/img/hotlink-ok/chart-icons/photoprism.png +keywords: + - photos + - photoprism + - pictures + - sharing +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: photoprism +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/photoprism + - https://hub.docker.com/photoprism/photoprism + - https://github.com/photoprism/photoprism +version: 13.0.23 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/qinglong/4.0.14/README.md b/stable/photoprism/13.0.23/README.md similarity index 100% rename from stable/qinglong/4.0.14/README.md rename to stable/photoprism/13.0.23/README.md diff --git a/stable/photoprism/13.0.23/app-changelog.md b/stable/photoprism/13.0.23/app-changelog.md new file mode 100644 index 00000000000..cd7c466a5bb --- /dev/null +++ b/stable/photoprism/13.0.23/app-changelog.md @@ -0,0 +1,9 @@ + + +## [photoprism-13.0.23](https://github.com/truecharts/charts/compare/photoprism-13.0.22...photoprism-13.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/photoprism/13.0.23/app-readme.md b/stable/photoprism/13.0.23/app-readme.md new file mode 100644 index 00000000000..234e1825de0 --- /dev/null +++ b/stable/photoprism/13.0.23/app-readme.md @@ -0,0 +1,8 @@ +PhotoPrism® is a server-based application for browsing, organizing and sharing your personal photo collection + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/photoprism](https://truecharts.org/charts/stable/photoprism) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/rcon-webadmin/3.0.10/charts/common-11.1.2.tgz b/stable/photoprism/13.0.23/charts/common-11.1.2.tgz similarity index 100% rename from stable/rcon-webadmin/3.0.10/charts/common-11.1.2.tgz rename to stable/photoprism/13.0.23/charts/common-11.1.2.tgz diff --git a/stable/typecho/7.0.17/charts/mariadb-5.0.25.tgz b/stable/photoprism/13.0.23/charts/mariadb-5.0.25.tgz similarity index 100% rename from stable/typecho/7.0.17/charts/mariadb-5.0.25.tgz rename to stable/photoprism/13.0.23/charts/mariadb-5.0.25.tgz diff --git a/stable/photoprism/13.0.23/ix_values.yaml b/stable/photoprism/13.0.23/ix_values.yaml new file mode 100644 index 00000000000..23ac8b6b4a5 --- /dev/null +++ b/stable/photoprism/13.0.23/ix_values.yaml @@ -0,0 +1,61 @@ +image: + repository: tccr.io/truecharts/photoprism + tag: v221118@sha256:eed14e57bf198d5263bbd5e6631a77f78a3bb812556cfc1d3267e107e5b23baa + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + +secretEnv: + PHOTOPRISM_ADMIN_PASSWORD: "please-change" + +env: + HOME: "/photoprism" + PHOTOPRISM_ORIGINALS_PATH: "/photoprism/originals" + PHOTOPRISM_IMPORT_PATH: "/photoprism/import" + PHOTOPRISM_TEMP_PATH: "/photoprism_temp" + PHOTOPRISM_STORAGE_PATH: "/assets/storage" + PHOTOPRISM_SIDECAR_PATH: "/assets/sidecar" + PHOTOPRISM_CACHE_PATH: "/assets/cache" + PHOTOPRISM_CONFIG_PATH: "/assets/config" + PROTOPRISM_BACKUP_PATH: "/assets/backup" + PHOTOPRISM_PUBLIC: false + PHOTOPRISM_UID: "{{ .Values.podSecurityContext.runAsUser }}" + PHOTOPRISM_GID: "{{ .Values.podSecurityContext.runAsGroup }}" + PHOTOPRISM_UMASK: "{{ .Values.env.UMASK }}" + PHOTOPRISM_DATABASE_DRIVER: "mysql" + PHOTOPRISM_DATABASE_NAME: "photoprism" + PHOTOPRISM_DATABASE_USER: "photoprism" + PHOTOPRISM_DATABASE_SERVER: + secretKeyRef: + name: mariadbcreds + key: plainporthost + PHOTOPRISM_DATABASE_PASSWORD: + secretKeyRef: + name: mariadbcreds + key: mariadb-password + +service: + main: + ports: + main: + port: 2342 + targetPort: 2342 + +persistence: + storage: + enabled: true + mountPath: "/assets" + photoprismtemp: + enabled: true + mountPath: "/photoprism_temp" + type: emptyDir + +mariadb: + enabled: true + mariadbUsername: photoprism + mariadbDatabase: photoprism + existingSecret: "mariadbcreds" + +portal: + enabled: true diff --git a/stable/photoprism/13.0.23/questions.yaml b/stable/photoprism/13.0.23/questions.yaml new file mode 100644 index 00000000000..e05e722950d --- /dev/null +++ b/stable/photoprism/13.0.23/questions.yaml @@ -0,0 +1,1980 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PHOTOPRISM_ADMIN_PASSWORD + label: "PHOTOPRISM_ADMIN_PASSWORD (First Install Only)" + description: "Initial admin password. **BE SURE TO CHANGE THIS!**" + schema: + type: string + required: true + private: true + default: "" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PHOTOPRISM_ORIGINALS_PATH + label: "PHOTOPRISM_ORIGINALS_PATH" + description: "Photoprism originals path" + schema: + type: string + default: "/photoprism/originals" + - variable: PHOTOPRISM_IMPORT_PATH + label: "PHOTOPRISM_IMPORT_PATH" + description: "Photoprism import path" + schema: + type: string + default: "/photoprism/import" + - variable: PHOTOPRISM_PUBLIC + label: "PHOTOPRISM_PUBLIC" + description: "Disable authentication / password protection" + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 2342 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: storage + label: "App Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: photoprismtemp + label: "App Temp Files" + description: "Stores the Application Temp Files." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/storj-node/4.0.17/templates/common.yaml b/stable/photoprism/13.0.23/templates/common.yaml similarity index 100% rename from stable/storj-node/4.0.17/templates/common.yaml rename to stable/photoprism/13.0.23/templates/common.yaml diff --git a/stable/rcon-webadmin/3.0.10/values.yaml b/stable/photoprism/13.0.23/values.yaml similarity index 100% rename from stable/rcon-webadmin/3.0.10/values.yaml rename to stable/photoprism/13.0.23/values.yaml diff --git a/stable/photoview/7.0.19/CHANGELOG.md b/stable/photoview/7.0.19/CHANGELOG.md deleted file mode 100644 index 05f23c4148c..00000000000 --- a/stable/photoview/7.0.19/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [photoview-7.0.19](https://github.com/truecharts/charts/compare/photoview-7.0.18...photoview-7.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [photoview-7.0.18](https://github.com/truecharts/charts/compare/photoview-7.0.17...photoview-7.0.18) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [photoview-7.0.17](https://github.com/truecharts/charts/compare/photoview-7.0.16...photoview-7.0.17) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [photoview-7.0.16](https://github.com/truecharts/charts/compare/photoview-7.0.15...photoview-7.0.16) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [photoview-7.0.15](https://github.com/truecharts/charts/compare/photoview-7.0.14...photoview-7.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [photoview-7.0.14](https://github.com/truecharts/charts/compare/photoview-7.0.13...photoview-7.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [photoview-7.0.13](https://github.com/truecharts/charts/compare/photoview-7.0.12...photoview-7.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [photoview-7.0.12](https://github.com/truecharts/charts/compare/photoview-7.0.11...photoview-7.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [photoview-7.0.11](https://github.com/truecharts/charts/compare/photoview-7.0.10...photoview-7.0.11) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - - - -## [photoview-7.0.10](https://github.com/truecharts/charts/compare/photoview-7.0.9...photoview-7.0.10) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [photoview-7.0.9](https://github.com/truecharts/charts/compare/photoview-7.0.8...photoview-7.0.9) (2022-12-05) - -### Chore diff --git a/stable/photoview/7.0.19/Chart.yaml b/stable/photoview/7.0.19/Chart.yaml deleted file mode 100644 index b7c6163dc7f..00000000000 --- a/stable/photoview/7.0.19/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "2.3.13" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -description: Photoview is a simple and user-friendly photo gallery. -home: https://truecharts.org/charts/stable/photoview -icon: https://truecharts.org/img/hotlink-ok/chart-icons/photoview.png -keywords: - - photo - - gallery -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: photoview -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/photoview - - https://github.com/photoview/photoview - - https://hub.docker.com/r/viktorstrate/photoview -version: 7.0.19 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/photoview/7.0.19/app-changelog.md b/stable/photoview/7.0.19/app-changelog.md deleted file mode 100644 index 6c58c4be99c..00000000000 --- a/stable/photoview/7.0.19/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [photoview-7.0.19](https://github.com/truecharts/charts/compare/photoview-7.0.18...photoview-7.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/photoview/7.0.20/CHANGELOG.md b/stable/photoview/7.0.20/CHANGELOG.md new file mode 100644 index 00000000000..a6aa335c8b2 --- /dev/null +++ b/stable/photoview/7.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [photoview-7.0.20](https://github.com/truecharts/charts/compare/photoview-7.0.19...photoview-7.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [photoview-7.0.19](https://github.com/truecharts/charts/compare/photoview-7.0.18...photoview-7.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [photoview-7.0.18](https://github.com/truecharts/charts/compare/photoview-7.0.17...photoview-7.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [photoview-7.0.17](https://github.com/truecharts/charts/compare/photoview-7.0.16...photoview-7.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [photoview-7.0.16](https://github.com/truecharts/charts/compare/photoview-7.0.15...photoview-7.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [photoview-7.0.15](https://github.com/truecharts/charts/compare/photoview-7.0.14...photoview-7.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [photoview-7.0.14](https://github.com/truecharts/charts/compare/photoview-7.0.13...photoview-7.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [photoview-7.0.13](https://github.com/truecharts/charts/compare/photoview-7.0.12...photoview-7.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [photoview-7.0.12](https://github.com/truecharts/charts/compare/photoview-7.0.11...photoview-7.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [photoview-7.0.11](https://github.com/truecharts/charts/compare/photoview-7.0.10...photoview-7.0.11) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [photoview-7.0.10](https://github.com/truecharts/charts/compare/photoview-7.0.9...photoview-7.0.10) (2022-12-13) + +### Chore diff --git a/stable/photoview/7.0.20/Chart.yaml b/stable/photoview/7.0.20/Chart.yaml new file mode 100644 index 00000000000..3f2ced7b236 --- /dev/null +++ b/stable/photoview/7.0.20/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "2.3.13" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +description: Photoview is a simple and user-friendly photo gallery. +home: https://truecharts.org/charts/stable/photoview +icon: https://truecharts.org/img/hotlink-ok/chart-icons/photoview.png +keywords: + - photo + - gallery +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: photoview +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/photoview + - https://hub.docker.com/viktorstrate/photoview + - https://github.com/photoview/photoview +version: 7.0.20 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/rcon-webadmin/3.0.10/README.md b/stable/photoview/7.0.20/README.md similarity index 100% rename from stable/rcon-webadmin/3.0.10/README.md rename to stable/photoview/7.0.20/README.md diff --git a/stable/photoview/7.0.20/app-changelog.md b/stable/photoview/7.0.20/app-changelog.md new file mode 100644 index 00000000000..9b703d5e641 --- /dev/null +++ b/stable/photoview/7.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [photoview-7.0.20](https://github.com/truecharts/charts/compare/photoview-7.0.19...photoview-7.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/photoview/7.0.19/app-readme.md b/stable/photoview/7.0.20/app-readme.md similarity index 100% rename from stable/photoview/7.0.19/app-readme.md rename to stable/photoview/7.0.20/app-readme.md diff --git a/stable/retrobot/3.0.8/charts/common-11.1.2.tgz b/stable/photoview/7.0.20/charts/common-11.1.2.tgz similarity index 100% rename from stable/retrobot/3.0.8/charts/common-11.1.2.tgz rename to stable/photoview/7.0.20/charts/common-11.1.2.tgz diff --git a/stable/wger/4.0.33/charts/postgresql-11.0.22.tgz b/stable/photoview/7.0.20/charts/postgresql-11.0.22.tgz similarity index 100% rename from stable/wger/4.0.33/charts/postgresql-11.0.22.tgz rename to stable/photoview/7.0.20/charts/postgresql-11.0.22.tgz diff --git a/stable/photoview/7.0.19/ix_values.yaml b/stable/photoview/7.0.20/ix_values.yaml similarity index 100% rename from stable/photoview/7.0.19/ix_values.yaml rename to stable/photoview/7.0.20/ix_values.yaml diff --git a/stable/photoview/7.0.19/questions.yaml b/stable/photoview/7.0.20/questions.yaml similarity index 100% rename from stable/photoview/7.0.19/questions.yaml rename to stable/photoview/7.0.20/questions.yaml diff --git a/stable/strapi/8.0.26/templates/common.yaml b/stable/photoview/7.0.20/templates/common.yaml similarity index 100% rename from stable/strapi/8.0.26/templates/common.yaml rename to stable/photoview/7.0.20/templates/common.yaml diff --git a/stable/retrobot/3.0.8/values.yaml b/stable/photoview/7.0.20/values.yaml similarity index 100% rename from stable/retrobot/3.0.8/values.yaml rename to stable/photoview/7.0.20/values.yaml diff --git a/stable/phpldapadmin/8.0.7/CHANGELOG.md b/stable/phpldapadmin/8.0.7/CHANGELOG.md deleted file mode 100644 index e0b7d4c59f1..00000000000 --- a/stable/phpldapadmin/8.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [phpldapadmin-8.0.7](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.6...phpldapadmin-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [phpldapadmin-8.0.6](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.5...phpldapadmin-8.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [phpldapadmin-8.0.5](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.4...phpldapadmin-8.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [phpldapadmin-8.0.4](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.3...phpldapadmin-8.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [phpldapadmin-8.0.3](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.2...phpldapadmin-8.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - - - -## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) - - diff --git a/stable/phpldapadmin/8.0.7/Chart.yaml b/stable/phpldapadmin/8.0.7/Chart.yaml deleted file mode 100644 index 5dec669df9d..00000000000 --- a/stable/phpldapadmin/8.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "0.9.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Web-based LDAP browser to manage your LDAP server -home: https://truecharts.org/charts/stable/phpldapadmin -icon: https://truecharts.org/img/hotlink-ok/chart-icons/phpldapadmin.png -keywords: - - phpldapadmin - - openldap - - userrights -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: phpldapadmin -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/phpldapadmin - - https://gitlab.v2.rancher.geohub.space/g3s/i3s/i3s-helm-catalog -type: application -version: 8.0.7 -annotations: - truecharts.org/catagories: | - - management - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/phpldapadmin/8.0.7/app-changelog.md b/stable/phpldapadmin/8.0.7/app-changelog.md deleted file mode 100644 index 7bd2993c575..00000000000 --- a/stable/phpldapadmin/8.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [phpldapadmin-8.0.7](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.6...phpldapadmin-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/phpldapadmin/8.0.7/app-readme.md b/stable/phpldapadmin/8.0.7/app-readme.md deleted file mode 100644 index ea9e2d0fb22..00000000000 --- a/stable/phpldapadmin/8.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Web-based LDAP browser to manage your LDAP server - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/phpldapadmin](https://truecharts.org/charts/stable/phpldapadmin) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/phpldapadmin/8.0.7/questions.yaml b/stable/phpldapadmin/8.0.7/questions.yaml deleted file mode 100644 index 3908209d777..00000000000 --- a/stable/phpldapadmin/8.0.7/questions.yaml +++ /dev/null @@ -1,1770 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PHPLDAPADMIN_HTTPS - label: "PHPLDAPADMIN_HTTPS" - schema: - type: string - required: true - default: "false" - - variable: PHPLDAPADMIN_TRUST_PROXY_SSL - label: "PHPLDAPADMIN_TRUST_PROXY_SSL" - schema: - type: string - required: true - default: "true" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10026 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/phpldapadmin/8.0.8/CHANGELOG.md b/stable/phpldapadmin/8.0.8/CHANGELOG.md new file mode 100644 index 00000000000..d0712d26c5e --- /dev/null +++ b/stable/phpldapadmin/8.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [phpldapadmin-8.0.8](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.7...phpldapadmin-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [phpldapadmin-8.0.7](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.6...phpldapadmin-8.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [phpldapadmin-8.0.6](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.5...phpldapadmin-8.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [phpldapadmin-8.0.5](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.4...phpldapadmin-8.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [phpldapadmin-8.0.4](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.3...phpldapadmin-8.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [phpldapadmin-8.0.3](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.2...phpldapadmin-8.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) + + + + +## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) + + + + +## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) + + + + +## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) + + + + +## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) + + + + +## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) + + + + +## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) + + + + +## [phpldapadmin-8.0.2](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.1...phpldapadmin-8.0.2) (2022-11-30) + + + diff --git a/stable/phpldapadmin/8.0.8/Chart.yaml b/stable/phpldapadmin/8.0.8/Chart.yaml new file mode 100644 index 00000000000..c53cfafd2ac --- /dev/null +++ b/stable/phpldapadmin/8.0.8/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "0.9.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Web-based LDAP browser to manage your LDAP server +home: https://truecharts.org/charts/stable/phpldapadmin +icon: https://truecharts.org/img/hotlink-ok/chart-icons/phpldapadmin.png +keywords: + - phpldapadmin + - openldap + - userrights +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: phpldapadmin +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/phpldapadmin + - https://hub.docker.com/osixia/phpldapadmin + - https://gitlab.v2.rancher.geohub.space/g3s/i3s/i3s-helm-catalog +type: application +version: 8.0.8 +annotations: + truecharts.org/catagories: | + - management + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/retrobot/3.0.8/README.md b/stable/phpldapadmin/8.0.8/README.md similarity index 100% rename from stable/retrobot/3.0.8/README.md rename to stable/phpldapadmin/8.0.8/README.md diff --git a/stable/phpldapadmin/8.0.8/app-changelog.md b/stable/phpldapadmin/8.0.8/app-changelog.md new file mode 100644 index 00000000000..7eccf7d32f8 --- /dev/null +++ b/stable/phpldapadmin/8.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [phpldapadmin-8.0.8](https://github.com/truecharts/charts/compare/phpldapadmin-8.0.7...phpldapadmin-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/phpldapadmin/8.0.8/app-readme.md b/stable/phpldapadmin/8.0.8/app-readme.md new file mode 100644 index 00000000000..ac95250a596 --- /dev/null +++ b/stable/phpldapadmin/8.0.8/app-readme.md @@ -0,0 +1,8 @@ +Web-based LDAP browser to manage your LDAP server + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/phpldapadmin](https://truecharts.org/charts/stable/phpldapadmin) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/rsshub/6.0.29/charts/common-11.1.2.tgz b/stable/phpldapadmin/8.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/rsshub/6.0.29/charts/common-11.1.2.tgz rename to stable/phpldapadmin/8.0.8/charts/common-11.1.2.tgz diff --git a/stable/phpldapadmin/8.0.7/ix_values.yaml b/stable/phpldapadmin/8.0.8/ix_values.yaml similarity index 100% rename from stable/phpldapadmin/8.0.7/ix_values.yaml rename to stable/phpldapadmin/8.0.8/ix_values.yaml diff --git a/stable/phpldapadmin/8.0.8/questions.yaml b/stable/phpldapadmin/8.0.8/questions.yaml new file mode 100644 index 00000000000..040e4c3248c --- /dev/null +++ b/stable/phpldapadmin/8.0.8/questions.yaml @@ -0,0 +1,1811 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PHPLDAPADMIN_HTTPS + label: "PHPLDAPADMIN_HTTPS" + schema: + type: string + required: true + default: "false" + - variable: PHPLDAPADMIN_TRUST_PROXY_SSL + label: "PHPLDAPADMIN_TRUST_PROXY_SSL" + schema: + type: string + required: true + default: "true" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10026 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/tdarr/4.0.7/templates/common.yaml b/stable/phpldapadmin/8.0.8/templates/common.yaml similarity index 100% rename from stable/tdarr/4.0.7/templates/common.yaml rename to stable/phpldapadmin/8.0.8/templates/common.yaml diff --git a/stable/rsshub/6.0.29/values.yaml b/stable/phpldapadmin/8.0.8/values.yaml similarity index 100% rename from stable/rsshub/6.0.29/values.yaml rename to stable/phpldapadmin/8.0.8/values.yaml diff --git a/stable/piaware/8.0.7/CHANGELOG.md b/stable/piaware/8.0.7/CHANGELOG.md deleted file mode 100644 index 59d05dbfb1c..00000000000 --- a/stable/piaware/8.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [piaware-8.0.7](https://github.com/truecharts/charts/compare/piaware-8.0.6...piaware-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [piaware-8.0.6](https://github.com/truecharts/charts/compare/piaware-8.0.5...piaware-8.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [piaware-8.0.5](https://github.com/truecharts/charts/compare/piaware-8.0.4...piaware-8.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [piaware-8.0.4](https://github.com/truecharts/charts/compare/piaware-8.0.3...piaware-8.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [piaware-8.0.3](https://github.com/truecharts/charts/compare/piaware-8.0.2...piaware-8.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - - - -## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) - - diff --git a/stable/piaware/8.0.7/Chart.yaml b/stable/piaware/8.0.7/Chart.yaml deleted file mode 100644 index 7d31c07fc4d..00000000000 --- a/stable/piaware/8.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "7.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Program for forwarding ADS-B data to FlightAware -home: https://truecharts.org/charts/stable/piaware -icon: https://truecharts.org/img/hotlink-ok/chart-icons/piaware.png -keywords: - - piaware - - flight-aware - - flight-tracker -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: piaware -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/piaware - - https://github.com/flightaware/piaware -version: 8.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/piaware/8.0.7/app-changelog.md b/stable/piaware/8.0.7/app-changelog.md deleted file mode 100644 index 841a462a317..00000000000 --- a/stable/piaware/8.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [piaware-8.0.7](https://github.com/truecharts/charts/compare/piaware-8.0.6...piaware-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/piaware/8.0.7/app-readme.md b/stable/piaware/8.0.7/app-readme.md deleted file mode 100644 index 0dc49e910cf..00000000000 --- a/stable/piaware/8.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Program for forwarding ADS-B data to FlightAware - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/piaware](https://truecharts.org/charts/stable/piaware) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/piaware/8.0.7/questions.yaml b/stable/piaware/8.0.7/questions.yaml deleted file mode 100644 index 0d1f9a6a3d1..00000000000 --- a/stable/piaware/8.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10092 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/piaware/8.0.8/CHANGELOG.md b/stable/piaware/8.0.8/CHANGELOG.md new file mode 100644 index 00000000000..3ae321230fc --- /dev/null +++ b/stable/piaware/8.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [piaware-8.0.8](https://github.com/truecharts/charts/compare/piaware-8.0.7...piaware-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [piaware-8.0.7](https://github.com/truecharts/charts/compare/piaware-8.0.6...piaware-8.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [piaware-8.0.6](https://github.com/truecharts/charts/compare/piaware-8.0.5...piaware-8.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [piaware-8.0.5](https://github.com/truecharts/charts/compare/piaware-8.0.4...piaware-8.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [piaware-8.0.4](https://github.com/truecharts/charts/compare/piaware-8.0.3...piaware-8.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [piaware-8.0.3](https://github.com/truecharts/charts/compare/piaware-8.0.2...piaware-8.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) + + + + +## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) + + + + +## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) + + + + +## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) + + + + +## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) + + + + +## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) + + + + +## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) + + + + +## [piaware-8.0.2](https://github.com/truecharts/charts/compare/piaware-8.0.1...piaware-8.0.2) (2022-11-30) + + + diff --git a/stable/piaware/8.0.8/Chart.yaml b/stable/piaware/8.0.8/Chart.yaml new file mode 100644 index 00000000000..788c8a734fe --- /dev/null +++ b/stable/piaware/8.0.8/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "7.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Program for forwarding ADS-B data to FlightAware +home: https://truecharts.org/charts/stable/piaware +icon: https://truecharts.org/img/hotlink-ok/chart-icons/piaware.png +keywords: + - piaware + - flight-aware + - flight-tracker +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: piaware +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/piaware + - https://hub.docker.com/mikenye/piaware + - https://github.com/flightaware/piaware +version: 8.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/rsshub/6.0.29/README.md b/stable/piaware/8.0.8/README.md similarity index 100% rename from stable/rsshub/6.0.29/README.md rename to stable/piaware/8.0.8/README.md diff --git a/stable/piaware/8.0.8/app-changelog.md b/stable/piaware/8.0.8/app-changelog.md new file mode 100644 index 00000000000..8383fba9216 --- /dev/null +++ b/stable/piaware/8.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [piaware-8.0.8](https://github.com/truecharts/charts/compare/piaware-8.0.7...piaware-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/piaware/8.0.8/app-readme.md b/stable/piaware/8.0.8/app-readme.md new file mode 100644 index 00000000000..ce4c54099bc --- /dev/null +++ b/stable/piaware/8.0.8/app-readme.md @@ -0,0 +1,8 @@ +Program for forwarding ADS-B data to FlightAware + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/piaware](https://truecharts.org/charts/stable/piaware) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/sickgear/6.0.0/charts/common-11.1.2.tgz b/stable/piaware/8.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/sickgear/6.0.0/charts/common-11.1.2.tgz rename to stable/piaware/8.0.8/charts/common-11.1.2.tgz diff --git a/stable/piaware/8.0.7/ix_values.yaml b/stable/piaware/8.0.8/ix_values.yaml similarity index 100% rename from stable/piaware/8.0.7/ix_values.yaml rename to stable/piaware/8.0.8/ix_values.yaml diff --git a/stable/piaware/8.0.8/questions.yaml b/stable/piaware/8.0.8/questions.yaml new file mode 100644 index 00000000000..47760227275 --- /dev/null +++ b/stable/piaware/8.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10092 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/thelounge/8.0.7/templates/common.yaml b/stable/piaware/8.0.8/templates/common.yaml similarity index 100% rename from stable/thelounge/8.0.7/templates/common.yaml rename to stable/piaware/8.0.8/templates/common.yaml diff --git a/stable/sickgear/6.0.0/values.yaml b/stable/piaware/8.0.8/values.yaml similarity index 100% rename from stable/sickgear/6.0.0/values.yaml rename to stable/piaware/8.0.8/values.yaml diff --git a/stable/picoshare/4.0.8/CHANGELOG.md b/stable/picoshare/4.0.8/CHANGELOG.md deleted file mode 100644 index dc4bbb0c3f5..00000000000 --- a/stable/picoshare/4.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [picoshare-4.0.8](https://github.com/truecharts/charts/compare/picoshare-4.0.7...picoshare-4.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [picoshare-4.0.7](https://github.com/truecharts/charts/compare/picoshare-4.0.6...picoshare-4.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [picoshare-4.0.6](https://github.com/truecharts/charts/compare/picoshare-4.0.5...picoshare-4.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [picoshare-4.0.5](https://github.com/truecharts/charts/compare/picoshare-4.0.4...picoshare-4.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [picoshare-4.0.4](https://github.com/truecharts/charts/compare/picoshare-4.0.3...picoshare-4.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - - - -## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) - - diff --git a/stable/picoshare/4.0.8/Chart.yaml b/stable/picoshare/4.0.8/Chart.yaml deleted file mode 100644 index 643229f21a9..00000000000 --- a/stable/picoshare/4.0.8/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.2.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: PicoShare is a minimalist service that allows you to share files easily. -home: https://truecharts.org/charts/stable/picoshare -icon: https://truecharts.org/img/hotlink-ok/chart-icons/picoshare.png -keywords: - - picoshare -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: picoshare -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/picoshare - - https://github.com/mtlynch/picoshare - - https://hub.docker.com/r/mtlynch/picoshare -version: 4.0.8 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/picoshare/4.0.8/app-changelog.md b/stable/picoshare/4.0.8/app-changelog.md deleted file mode 100644 index 9eac4fc03ed..00000000000 --- a/stable/picoshare/4.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [picoshare-4.0.8](https://github.com/truecharts/charts/compare/picoshare-4.0.7...picoshare-4.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/picoshare/4.0.8/app-readme.md b/stable/picoshare/4.0.8/app-readme.md deleted file mode 100644 index 4ed99cb0e50..00000000000 --- a/stable/picoshare/4.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -PicoShare is a minimalist service that allows you to share files easily. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/picoshare](https://truecharts.org/charts/stable/picoshare) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/picoshare/4.0.8/questions.yaml b/stable/picoshare/4.0.8/questions.yaml deleted file mode 100644 index 5cde58948ad..00000000000 --- a/stable/picoshare/4.0.8/questions.yaml +++ /dev/null @@ -1,1870 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PS_SHARED_SECRET - label: "PS_SHARED_SECRET" - description: "Secret Key for Web Console." - schema: - type: string - required: true - private: true - default: "" - - variable: LITESTREAM_BUCKET - label: "LITESTREAM_BUCKET" - description: "If you specify settings for a Litestream-compatible cloud storage location, PicoShare will automatically replicate your data." - schema: - type: string - default: "" - - variable: LITESTREAM_ENDPOINT - label: "LITESTREAM_ENDPOINT" - description: "If you specify settings for a Litestream-compatible cloud storage location, PicoShare will automatically replicate your data." - schema: - type: string - default: "" - - variable: LITESTREAM_ACCESS_KEY_ID - label: "LITESTREAM_ACCESS_KEY_ID" - description: "If you specify settings for a Litestream-compatible cloud storage location, PicoShare will automatically replicate your data." - schema: - type: string - private: true - default: "" - - variable: LITESTREAM_SECRET_ACCESS_KEY - label: "LITESTREAM_SECRET_ACCESS_KEY" - description: "If you specify settings for a Litestream-compatible cloud storage location, PicoShare will automatically replicate your data." - schema: - type: string - private: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10209 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/picoshare/4.0.9/CHANGELOG.md b/stable/picoshare/4.0.9/CHANGELOG.md new file mode 100644 index 00000000000..94844e5226c --- /dev/null +++ b/stable/picoshare/4.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [picoshare-4.0.9](https://github.com/truecharts/charts/compare/picoshare-4.0.8...picoshare-4.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [picoshare-4.0.8](https://github.com/truecharts/charts/compare/picoshare-4.0.7...picoshare-4.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [picoshare-4.0.7](https://github.com/truecharts/charts/compare/picoshare-4.0.6...picoshare-4.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [picoshare-4.0.6](https://github.com/truecharts/charts/compare/picoshare-4.0.5...picoshare-4.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [picoshare-4.0.5](https://github.com/truecharts/charts/compare/picoshare-4.0.4...picoshare-4.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [picoshare-4.0.4](https://github.com/truecharts/charts/compare/picoshare-4.0.3...picoshare-4.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) + + + + +## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) + + + + +## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) + + + + +## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) + + + + +## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) + + + + +## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) + + + + +## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) + + + + +## [picoshare-4.0.3](https://github.com/truecharts/charts/compare/picoshare-4.0.2...picoshare-4.0.3) (2022-11-30) + + + diff --git a/stable/picoshare/4.0.9/Chart.yaml b/stable/picoshare/4.0.9/Chart.yaml new file mode 100644 index 00000000000..722d9beeb56 --- /dev/null +++ b/stable/picoshare/4.0.9/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.2.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: PicoShare is a minimalist service that allows you to share files easily. +home: https://truecharts.org/charts/stable/picoshare +icon: https://truecharts.org/img/hotlink-ok/chart-icons/picoshare.png +keywords: + - picoshare +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: picoshare +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/picoshare + - https://hub.docker.com/mtlynch/picoshare + - https://github.com/mtlynch/picoshare +version: 4.0.9 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/sickgear/6.0.0/README.md b/stable/picoshare/4.0.9/README.md similarity index 100% rename from stable/sickgear/6.0.0/README.md rename to stable/picoshare/4.0.9/README.md diff --git a/stable/picoshare/4.0.9/app-changelog.md b/stable/picoshare/4.0.9/app-changelog.md new file mode 100644 index 00000000000..b869ee97b41 --- /dev/null +++ b/stable/picoshare/4.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [picoshare-4.0.9](https://github.com/truecharts/charts/compare/picoshare-4.0.8...picoshare-4.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/picoshare/4.0.9/app-readme.md b/stable/picoshare/4.0.9/app-readme.md new file mode 100644 index 00000000000..94023d16692 --- /dev/null +++ b/stable/picoshare/4.0.9/app-readme.md @@ -0,0 +1,8 @@ +PicoShare is a minimalist service that allows you to share files easily. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/picoshare](https://truecharts.org/charts/stable/picoshare) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/snapdrop/4.0.12/charts/common-11.1.2.tgz b/stable/picoshare/4.0.9/charts/common-11.1.2.tgz similarity index 100% rename from stable/snapdrop/4.0.12/charts/common-11.1.2.tgz rename to stable/picoshare/4.0.9/charts/common-11.1.2.tgz diff --git a/stable/picoshare/4.0.8/ix_values.yaml b/stable/picoshare/4.0.9/ix_values.yaml similarity index 100% rename from stable/picoshare/4.0.8/ix_values.yaml rename to stable/picoshare/4.0.9/ix_values.yaml diff --git a/stable/picoshare/4.0.9/questions.yaml b/stable/picoshare/4.0.9/questions.yaml new file mode 100644 index 00000000000..c2dc5ba7c80 --- /dev/null +++ b/stable/picoshare/4.0.9/questions.yaml @@ -0,0 +1,1911 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PS_SHARED_SECRET + label: "PS_SHARED_SECRET" + description: "Secret Key for Web Console." + schema: + type: string + required: true + private: true + default: "" + - variable: LITESTREAM_BUCKET + label: "LITESTREAM_BUCKET" + description: "If you specify settings for a Litestream-compatible cloud storage location, PicoShare will automatically replicate your data." + schema: + type: string + default: "" + - variable: LITESTREAM_ENDPOINT + label: "LITESTREAM_ENDPOINT" + description: "If you specify settings for a Litestream-compatible cloud storage location, PicoShare will automatically replicate your data." + schema: + type: string + default: "" + - variable: LITESTREAM_ACCESS_KEY_ID + label: "LITESTREAM_ACCESS_KEY_ID" + description: "If you specify settings for a Litestream-compatible cloud storage location, PicoShare will automatically replicate your data." + schema: + type: string + private: true + default: "" + - variable: LITESTREAM_SECRET_ACCESS_KEY + label: "LITESTREAM_SECRET_ACCESS_KEY" + description: "If you specify settings for a Litestream-compatible cloud storage location, PicoShare will automatically replicate your data." + schema: + type: string + private: true + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10209 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/picoshare/4.0.8/templates/common.yaml b/stable/picoshare/4.0.9/templates/common.yaml similarity index 100% rename from stable/picoshare/4.0.8/templates/common.yaml rename to stable/picoshare/4.0.9/templates/common.yaml diff --git a/stable/snapdrop/4.0.12/values.yaml b/stable/picoshare/4.0.9/values.yaml similarity index 100% rename from stable/snapdrop/4.0.12/values.yaml rename to stable/picoshare/4.0.9/values.yaml diff --git a/stable/pihole/8.0.14/CHANGELOG.md b/stable/pihole/8.0.14/CHANGELOG.md deleted file mode 100644 index 14ffae0a3be..00000000000 --- a/stable/pihole/8.0.14/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [pihole-8.0.14](https://github.com/truecharts/charts/compare/pihole-8.0.13...pihole-8.0.14) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/pihole to v2023.01.10 - - - - -## [pihole-8.0.13](https://github.com/truecharts/charts/compare/pihole-8.0.12...pihole-8.0.13) (2023-01-21) - -### Chore - -- update container image tccr.io/truecharts/pihole to v2023.01.6 - - - - -## [pihole-8.0.12](https://github.com/truecharts/charts/compare/pihole-8.0.11...pihole-8.0.12) (2023-01-20) - -### Chore - -- update container image tccr.io/truecharts/pihole to v2023.01.3 - - - - -## [pihole-8.0.11](https://github.com/truecharts/charts/compare/pihole-8.0.10...pihole-8.0.11) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/pihole to v2023.01.2 - - - - -## [pihole-8.0.10](https://github.com/truecharts/charts/compare/pihole-8.0.9...pihole-8.0.10) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/pihole to v2022.12.1 - - - - -## [pihole-8.0.9](https://github.com/truecharts/charts/compare/pihole-8.0.8...pihole-8.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [pihole-8.0.8](https://github.com/truecharts/charts/compare/pihole-8.0.7...pihole-8.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [pihole-8.0.7](https://github.com/truecharts/charts/compare/pihole-8.0.6...pihole-8.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [pihole-8.0.6](https://github.com/truecharts/charts/compare/pihole-8.0.5...pihole-8.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [pihole-8.0.5](https://github.com/truecharts/charts/compare/pihole-8.0.4...pihole-8.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [pihole-8.0.4](https://github.com/truecharts/charts/compare/pihole-8.0.2...pihole-8.0.4) (2022-11-30) - -### Chore diff --git a/stable/pihole/8.0.14/Chart.yaml b/stable/pihole/8.0.14/Chart.yaml deleted file mode 100644 index 9530ef05d61..00000000000 --- a/stable/pihole/8.0.14/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "2023.01.10" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: DNS and Ad-filtering for your network -home: https://truecharts.org/charts/stable/pihole -icon: https://truecharts.org/img/hotlink-ok/chart-icons/pihole.png -keywords: - - DNS -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: pihole -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/pihole - - https://pi-hole.net/ - - https://github.com/pi-hole - - https://github.com/pi-hole/docker-pi-hole -type: application -version: 8.0.14 -annotations: - truecharts.org/catagories: | - - networking - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/pihole/8.0.14/app-changelog.md b/stable/pihole/8.0.14/app-changelog.md deleted file mode 100644 index 9e33852b7c4..00000000000 --- a/stable/pihole/8.0.14/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [pihole-8.0.14](https://github.com/truecharts/charts/compare/pihole-8.0.13...pihole-8.0.14) (2023-01-30) - -### Chore - -- update container image tccr.io/truecharts/pihole to v2023.01.10 - - \ No newline at end of file diff --git a/stable/pihole/8.0.15/CHANGELOG.md b/stable/pihole/8.0.15/CHANGELOG.md new file mode 100644 index 00000000000..ae1729abfa7 --- /dev/null +++ b/stable/pihole/8.0.15/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [pihole-8.0.15](https://github.com/truecharts/charts/compare/pihole-8.0.14...pihole-8.0.15) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [pihole-8.0.14](https://github.com/truecharts/charts/compare/pihole-8.0.13...pihole-8.0.14) (2023-01-30) + +### Chore + +- update container image tccr.io/truecharts/pihole to v2023.01.10 + + + + +## [pihole-8.0.13](https://github.com/truecharts/charts/compare/pihole-8.0.12...pihole-8.0.13) (2023-01-21) + +### Chore + +- update container image tccr.io/truecharts/pihole to v2023.01.6 + + + + +## [pihole-8.0.12](https://github.com/truecharts/charts/compare/pihole-8.0.11...pihole-8.0.12) (2023-01-20) + +### Chore + +- update container image tccr.io/truecharts/pihole to v2023.01.3 + + + + +## [pihole-8.0.11](https://github.com/truecharts/charts/compare/pihole-8.0.10...pihole-8.0.11) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/pihole to v2023.01.2 + + + + +## [pihole-8.0.10](https://github.com/truecharts/charts/compare/pihole-8.0.9...pihole-8.0.10) (2023-01-04) + +### Chore + +- update container image tccr.io/truecharts/pihole to v2022.12.1 + + + + +## [pihole-8.0.9](https://github.com/truecharts/charts/compare/pihole-8.0.8...pihole-8.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [pihole-8.0.8](https://github.com/truecharts/charts/compare/pihole-8.0.7...pihole-8.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [pihole-8.0.7](https://github.com/truecharts/charts/compare/pihole-8.0.6...pihole-8.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [pihole-8.0.6](https://github.com/truecharts/charts/compare/pihole-8.0.5...pihole-8.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [pihole-8.0.5](https://github.com/truecharts/charts/compare/pihole-8.0.4...pihole-8.0.5) (2022-12-13) + +### Chore diff --git a/stable/pihole/8.0.15/Chart.yaml b/stable/pihole/8.0.15/Chart.yaml new file mode 100644 index 00000000000..e4765021efb --- /dev/null +++ b/stable/pihole/8.0.15/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "2023.01.10" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: DNS and Ad-filtering for your network +home: https://truecharts.org/charts/stable/pihole +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pihole.png +keywords: + - DNS +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: pihole +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/pihole + - https://hub.docker.com/pihole/pihole + - https://pi-hole.net/ + - https://github.com/pi-hole + - https://github.com/pi-hole/docker-pi-hole +type: application +version: 8.0.15 +annotations: + truecharts.org/catagories: | + - networking + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/snapdrop/4.0.12/README.md b/stable/pihole/8.0.15/README.md similarity index 100% rename from stable/snapdrop/4.0.12/README.md rename to stable/pihole/8.0.15/README.md diff --git a/stable/pihole/8.0.15/app-changelog.md b/stable/pihole/8.0.15/app-changelog.md new file mode 100644 index 00000000000..350b6c7367e --- /dev/null +++ b/stable/pihole/8.0.15/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pihole-8.0.15](https://github.com/truecharts/charts/compare/pihole-8.0.14...pihole-8.0.15) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/pihole/8.0.14/app-readme.md b/stable/pihole/8.0.15/app-readme.md similarity index 100% rename from stable/pihole/8.0.14/app-readme.md rename to stable/pihole/8.0.15/app-readme.md diff --git a/stable/spotweb/7.0.22/charts/common-11.1.2.tgz b/stable/pihole/8.0.15/charts/common-11.1.2.tgz similarity index 100% rename from stable/spotweb/7.0.22/charts/common-11.1.2.tgz rename to stable/pihole/8.0.15/charts/common-11.1.2.tgz diff --git a/stable/pihole/8.0.14/ix_values.yaml b/stable/pihole/8.0.15/ix_values.yaml similarity index 100% rename from stable/pihole/8.0.14/ix_values.yaml rename to stable/pihole/8.0.15/ix_values.yaml diff --git a/stable/pihole/8.0.14/questions.yaml b/stable/pihole/8.0.15/questions.yaml similarity index 100% rename from stable/pihole/8.0.14/questions.yaml rename to stable/pihole/8.0.15/questions.yaml diff --git a/stable/pihole/8.0.14/templates/_configmap.tpl b/stable/pihole/8.0.15/templates/_configmap.tpl similarity index 100% rename from stable/pihole/8.0.14/templates/_configmap.tpl rename to stable/pihole/8.0.15/templates/_configmap.tpl diff --git a/stable/pihole/8.0.14/templates/common.yaml b/stable/pihole/8.0.15/templates/common.yaml similarity index 100% rename from stable/pihole/8.0.14/templates/common.yaml rename to stable/pihole/8.0.15/templates/common.yaml diff --git a/stable/spotweb/7.0.22/values.yaml b/stable/pihole/8.0.15/values.yaml similarity index 100% rename from stable/spotweb/7.0.22/values.yaml rename to stable/pihole/8.0.15/values.yaml diff --git a/stable/pinry/4.0.7/CHANGELOG.md b/stable/pinry/4.0.7/CHANGELOG.md deleted file mode 100644 index 134d8e2fca9..00000000000 --- a/stable/pinry/4.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [pinry-4.0.7](https://github.com/truecharts/charts/compare/pinry-4.0.6...pinry-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [pinry-4.0.6](https://github.com/truecharts/charts/compare/pinry-4.0.5...pinry-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [pinry-4.0.5](https://github.com/truecharts/charts/compare/pinry-4.0.4...pinry-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [pinry-4.0.4](https://github.com/truecharts/charts/compare/pinry-4.0.3...pinry-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [pinry-4.0.3](https://github.com/truecharts/charts/compare/pinry-4.0.2...pinry-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - - - -## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) - - diff --git a/stable/pinry/4.0.7/Chart.yaml b/stable/pinry/4.0.7/Chart.yaml deleted file mode 100644 index 44860f64c22..00000000000 --- a/stable/pinry/4.0.7/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "2.1.12" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: The open-source core of Pinry, a tiling image board system for people who want to save, tag, and share images, videos and webpages in an easy to skim through format. -home: https://truecharts.org/charts/stable/pinry -icon: https://truecharts.org/img/hotlink-ok/chart-icons/pinry.png -keywords: - - pinry -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: pinry -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/pinry - - https://github.com/pinry/pinry/ -version: 4.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/pinry/4.0.7/app-changelog.md b/stable/pinry/4.0.7/app-changelog.md deleted file mode 100644 index d8dde30a791..00000000000 --- a/stable/pinry/4.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [pinry-4.0.7](https://github.com/truecharts/charts/compare/pinry-4.0.6...pinry-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/pinry/4.0.7/app-readme.md b/stable/pinry/4.0.7/app-readme.md deleted file mode 100644 index a8c3771452f..00000000000 --- a/stable/pinry/4.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -The open-source core of Pinry, a tiling image board system for people who want to save, tag, and share images, videos and webpages in an easy to skim through format. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/pinry](https://truecharts.org/charts/stable/pinry) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/pinry/4.0.7/questions.yaml b/stable/pinry/4.0.7/questions.yaml deleted file mode 100644 index af4ac00eb69..00000000000 --- a/stable/pinry/4.0.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10213 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/pinry/4.0.8/CHANGELOG.md b/stable/pinry/4.0.8/CHANGELOG.md new file mode 100644 index 00000000000..9ecbf74f081 --- /dev/null +++ b/stable/pinry/4.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [pinry-4.0.8](https://github.com/truecharts/charts/compare/pinry-4.0.7...pinry-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [pinry-4.0.7](https://github.com/truecharts/charts/compare/pinry-4.0.6...pinry-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [pinry-4.0.6](https://github.com/truecharts/charts/compare/pinry-4.0.5...pinry-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [pinry-4.0.5](https://github.com/truecharts/charts/compare/pinry-4.0.4...pinry-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [pinry-4.0.4](https://github.com/truecharts/charts/compare/pinry-4.0.3...pinry-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [pinry-4.0.3](https://github.com/truecharts/charts/compare/pinry-4.0.2...pinry-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) + + + + +## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) + + + + +## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) + + + + +## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) + + + + +## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) + + + + +## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) + + + + +## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) + + + + +## [pinry-4.0.2](https://github.com/truecharts/charts/compare/pinry-4.0.1...pinry-4.0.2) (2022-11-30) + + + diff --git a/stable/pinry/4.0.8/Chart.yaml b/stable/pinry/4.0.8/Chart.yaml new file mode 100644 index 00000000000..e83e21f59c5 --- /dev/null +++ b/stable/pinry/4.0.8/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "2.1.12" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: The open-source core of Pinry, a tiling image board system for people who want to save, tag, and share images, videos and webpages in an easy to skim through format. +home: https://truecharts.org/charts/stable/pinry +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pinry.png +keywords: + - pinry +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: pinry +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/pinry + - https://hub.docker.com/getpinry/pinry + - https://github.com/pinry/pinry/ +version: 4.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/spotweb/7.0.22/README.md b/stable/pinry/4.0.8/README.md similarity index 100% rename from stable/spotweb/7.0.22/README.md rename to stable/pinry/4.0.8/README.md diff --git a/stable/pinry/4.0.8/app-changelog.md b/stable/pinry/4.0.8/app-changelog.md new file mode 100644 index 00000000000..b51d5f8fd7e --- /dev/null +++ b/stable/pinry/4.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pinry-4.0.8](https://github.com/truecharts/charts/compare/pinry-4.0.7...pinry-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/pinry/4.0.8/app-readme.md b/stable/pinry/4.0.8/app-readme.md new file mode 100644 index 00000000000..0168fe475c2 --- /dev/null +++ b/stable/pinry/4.0.8/app-readme.md @@ -0,0 +1,8 @@ +The open-source core of Pinry, a tiling image board system for people who want to save, tag, and share images, videos and webpages in an easy to skim through format. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/pinry](https://truecharts.org/charts/stable/pinry) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/storj-node/4.0.17/charts/common-11.1.2.tgz b/stable/pinry/4.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/storj-node/4.0.17/charts/common-11.1.2.tgz rename to stable/pinry/4.0.8/charts/common-11.1.2.tgz diff --git a/stable/pinry/4.0.7/ix_values.yaml b/stable/pinry/4.0.8/ix_values.yaml similarity index 100% rename from stable/pinry/4.0.7/ix_values.yaml rename to stable/pinry/4.0.8/ix_values.yaml diff --git a/stable/pinry/4.0.8/questions.yaml b/stable/pinry/4.0.8/questions.yaml new file mode 100644 index 00000000000..90b2a9e01ec --- /dev/null +++ b/stable/pinry/4.0.8/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10213 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/pinry/4.0.7/templates/_secrets.tpl b/stable/pinry/4.0.8/templates/_secrets.tpl similarity index 100% rename from stable/pinry/4.0.7/templates/_secrets.tpl rename to stable/pinry/4.0.8/templates/_secrets.tpl diff --git a/stable/pinry/4.0.7/templates/common.yaml b/stable/pinry/4.0.8/templates/common.yaml similarity index 100% rename from stable/pinry/4.0.7/templates/common.yaml rename to stable/pinry/4.0.8/templates/common.yaml diff --git a/stable/storj-node/4.0.17/values.yaml b/stable/pinry/4.0.8/values.yaml similarity index 100% rename from stable/storj-node/4.0.17/values.yaml rename to stable/pinry/4.0.8/values.yaml diff --git a/stable/plaxt/3.0.7/CHANGELOG.md b/stable/plaxt/3.0.7/CHANGELOG.md deleted file mode 100644 index 3ad11cd9513..00000000000 --- a/stable/plaxt/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [plaxt-3.0.7](https://github.com/truecharts/charts/compare/plaxt-3.0.6...plaxt-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [plaxt-3.0.6](https://github.com/truecharts/charts/compare/plaxt-3.0.5...plaxt-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [plaxt-3.0.5](https://github.com/truecharts/charts/compare/plaxt-3.0.4...plaxt-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [plaxt-3.0.4](https://github.com/truecharts/charts/compare/plaxt-3.0.3...plaxt-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [plaxt-3.0.3](https://github.com/truecharts/charts/compare/plaxt-3.0.2...plaxt-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - - - -## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) - - diff --git a/stable/plaxt/3.0.7/Chart.yaml b/stable/plaxt/3.0.7/Chart.yaml deleted file mode 100644 index 1b978c8d3cb..00000000000 --- a/stable/plaxt/3.0.7/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: This Tools provides a way to keep your watched history synced FROM Plex Server To Trakt.tv -home: https://truecharts.org/charts/stable/plaxt -icon: https://truecharts.org/img/hotlink-ok/chart-icons/plaxt.png -keywords: - - plaxt - - Other - - MediaApp-Other - - MediaServer-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: plaxt -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/plaxt - - https://github.com/XanderStrike/goplaxt - - https://hub.docker.com/r/xanderstrike/goplaxt -type: application -version: 3.0.7 -annotations: - truecharts.org/catagories: | - - Other - - MediaApp-Other - - MediaServer-Other - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/plaxt/3.0.7/app-changelog.md b/stable/plaxt/3.0.7/app-changelog.md deleted file mode 100644 index ce49afe6711..00000000000 --- a/stable/plaxt/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [plaxt-3.0.7](https://github.com/truecharts/charts/compare/plaxt-3.0.6...plaxt-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/plaxt/3.0.7/app-readme.md b/stable/plaxt/3.0.7/app-readme.md deleted file mode 100644 index 5580e29ae71..00000000000 --- a/stable/plaxt/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -This Tools provides a way to keep your watched history synced FROM Plex Server To Trakt.tv - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/plaxt](https://truecharts.org/charts/stable/plaxt) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/plaxt/3.0.7/questions.yaml b/stable/plaxt/3.0.7/questions.yaml deleted file mode 100644 index 014b7f099ce..00000000000 --- a/stable/plaxt/3.0.7/questions.yaml +++ /dev/null @@ -1,1848 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: TRAKT_ID - label: "TRAKT_ID" - description: "Client ID (From Trakt .tv API App)" - schema: - type: string - default: "" - - variable: TRAKT_SECRET - label: "TRAKT_SECRET" - description: "Client SECRET (From Trakt .tv API App)" - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/plaxt/3.0.8/CHANGELOG.md b/stable/plaxt/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..4d8eca9c3da --- /dev/null +++ b/stable/plaxt/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [plaxt-3.0.8](https://github.com/truecharts/charts/compare/plaxt-3.0.7...plaxt-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [plaxt-3.0.7](https://github.com/truecharts/charts/compare/plaxt-3.0.6...plaxt-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [plaxt-3.0.6](https://github.com/truecharts/charts/compare/plaxt-3.0.5...plaxt-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [plaxt-3.0.5](https://github.com/truecharts/charts/compare/plaxt-3.0.4...plaxt-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [plaxt-3.0.4](https://github.com/truecharts/charts/compare/plaxt-3.0.3...plaxt-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [plaxt-3.0.3](https://github.com/truecharts/charts/compare/plaxt-3.0.2...plaxt-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) + + + + +## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) + + + + +## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) + + + + +## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) + + + + +## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) + + + + +## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) + + + + +## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) + + + + +## [plaxt-3.0.2](https://github.com/truecharts/charts/compare/plaxt-3.0.1...plaxt-3.0.2) (2022-11-30) + + + diff --git a/stable/plaxt/3.0.8/Chart.yaml b/stable/plaxt/3.0.8/Chart.yaml new file mode 100644 index 00000000000..b975e6bbd17 --- /dev/null +++ b/stable/plaxt/3.0.8/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: This Tools provides a way to keep your watched history synced FROM Plex Server To Trakt.tv +home: https://truecharts.org/charts/stable/plaxt +icon: https://truecharts.org/img/hotlink-ok/chart-icons/plaxt.png +keywords: + - plaxt + - Other + - MediaApp-Other + - MediaServer-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: plaxt +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/plaxt + - https://hub.docker.com/xanderstrike/goplaxt + - https://github.com/XanderStrike/goplaxt +type: application +version: 3.0.8 +annotations: + truecharts.org/catagories: | + - Other + - MediaApp-Other + - MediaServer-Other + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/storj-node/4.0.17/README.md b/stable/plaxt/3.0.8/README.md similarity index 100% rename from stable/storj-node/4.0.17/README.md rename to stable/plaxt/3.0.8/README.md diff --git a/stable/plaxt/3.0.8/app-changelog.md b/stable/plaxt/3.0.8/app-changelog.md new file mode 100644 index 00000000000..4d070a671e6 --- /dev/null +++ b/stable/plaxt/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [plaxt-3.0.8](https://github.com/truecharts/charts/compare/plaxt-3.0.7...plaxt-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/plaxt/3.0.8/app-readme.md b/stable/plaxt/3.0.8/app-readme.md new file mode 100644 index 00000000000..ec94bccb606 --- /dev/null +++ b/stable/plaxt/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +This Tools provides a way to keep your watched history synced FROM Plex Server To Trakt.tv + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/plaxt](https://truecharts.org/charts/stable/plaxt) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/strapi/8.0.26/charts/common-11.1.2.tgz b/stable/plaxt/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/strapi/8.0.26/charts/common-11.1.2.tgz rename to stable/plaxt/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/plaxt/3.0.7/ix_values.yaml b/stable/plaxt/3.0.8/ix_values.yaml similarity index 100% rename from stable/plaxt/3.0.7/ix_values.yaml rename to stable/plaxt/3.0.8/ix_values.yaml diff --git a/stable/plaxt/3.0.8/questions.yaml b/stable/plaxt/3.0.8/questions.yaml new file mode 100644 index 00000000000..cea48abab47 --- /dev/null +++ b/stable/plaxt/3.0.8/questions.yaml @@ -0,0 +1,1889 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: TRAKT_ID + label: "TRAKT_ID" + description: "Client ID (From Trakt .tv API App)" + schema: + type: string + default: "" + - variable: TRAKT_SECRET + label: "TRAKT_SECRET" + description: "Client SECRET (From Trakt .tv API App)" + schema: + type: string + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/plaxt/3.0.7/templates/common.yaml b/stable/plaxt/3.0.8/templates/common.yaml similarity index 100% rename from stable/plaxt/3.0.7/templates/common.yaml rename to stable/plaxt/3.0.8/templates/common.yaml diff --git a/stable/strapi/8.0.26/values.yaml b/stable/plaxt/3.0.8/values.yaml similarity index 100% rename from stable/strapi/8.0.26/values.yaml rename to stable/plaxt/3.0.8/values.yaml diff --git a/stable/podgrab/12.0.8/CHANGELOG.md b/stable/podgrab/12.0.8/CHANGELOG.md new file mode 100644 index 00000000000..f8c04b0f061 --- /dev/null +++ b/stable/podgrab/12.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [podgrab-12.0.8](https://github.com/truecharts/charts/compare/podgrab-12.0.7...podgrab-12.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [podgrab-12.0.7](https://github.com/truecharts/charts/compare/podgrab-12.0.6...podgrab-12.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [podgrab-12.0.6](https://github.com/truecharts/charts/compare/podgrab-12.0.5...podgrab-12.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [podgrab-12.0.5](https://github.com/truecharts/charts/compare/podgrab-12.0.4...podgrab-12.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [podgrab-12.0.4](https://github.com/truecharts/charts/compare/podgrab-12.0.3...podgrab-12.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [podgrab-12.0.3](https://github.com/truecharts/charts/compare/podgrab-12.0.2...podgrab-12.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [podgrab-12.0.2](https://github.com/truecharts/charts/compare/podgrab-12.0.1...podgrab-12.0.2) (2022-11-30) + + + + +## [podgrab-12.0.2](https://github.com/truecharts/charts/compare/podgrab-12.0.1...podgrab-12.0.2) (2022-11-30) + + + + +## [podgrab-12.0.2](https://github.com/truecharts/charts/compare/podgrab-12.0.1...podgrab-12.0.2) (2022-11-30) + + + + +## [podgrab-12.0.2](https://github.com/truecharts/charts/compare/podgrab-12.0.1...podgrab-12.0.2) (2022-11-30) + + + + +## [podgrab-12.0.2](https://github.com/truecharts/charts/compare/podgrab-12.0.1...podgrab-12.0.2) (2022-11-30) + + + + +## [podgrab-12.0.2](https://github.com/truecharts/charts/compare/podgrab-12.0.1...podgrab-12.0.2) (2022-11-30) + + + + +## [podgrab-12.0.2](https://github.com/truecharts/charts/compare/podgrab-12.0.1...podgrab-12.0.2) (2022-11-30) + + + + +## [podgrab-12.0.2](https://github.com/truecharts/charts/compare/podgrab-12.0.1...podgrab-12.0.2) (2022-11-30) + + + diff --git a/stable/podgrab/12.0.8/Chart.yaml b/stable/podgrab/12.0.8/Chart.yaml new file mode 100644 index 00000000000..6cc52fe6b12 --- /dev/null +++ b/stable/podgrab/12.0.8/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "1.0.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A self-hosted podcast manager to download episodes as soon as they become live. +home: https://truecharts.org/charts/stable/podgrab +icon: https://truecharts.org/img/hotlink-ok/chart-icons/podgrab.png +keywords: + - podgrab +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: podgrab +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/podgrab + - https://hub.docker.com/akhilrex/podgrab + - https://github.com/akhilrex/podgrab +type: application +version: 12.0.8 +annotations: + truecharts.org/catagories: | + - mutlimedia + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/strapi/8.0.26/README.md b/stable/podgrab/12.0.8/README.md similarity index 100% rename from stable/strapi/8.0.26/README.md rename to stable/podgrab/12.0.8/README.md diff --git a/stable/podgrab/12.0.8/app-changelog.md b/stable/podgrab/12.0.8/app-changelog.md new file mode 100644 index 00000000000..646aa0ea04c --- /dev/null +++ b/stable/podgrab/12.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [podgrab-12.0.8](https://github.com/truecharts/charts/compare/podgrab-12.0.7...podgrab-12.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/podgrab/12.0.8/app-readme.md b/stable/podgrab/12.0.8/app-readme.md new file mode 100644 index 00000000000..ac57e62967d --- /dev/null +++ b/stable/podgrab/12.0.8/app-readme.md @@ -0,0 +1,8 @@ +A self-hosted podcast manager to download episodes as soon as they become live. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/podgrab](https://truecharts.org/charts/stable/podgrab) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/synapse/7.0.22/charts/common-11.1.2.tgz b/stable/podgrab/12.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/synapse/7.0.22/charts/common-11.1.2.tgz rename to stable/podgrab/12.0.8/charts/common-11.1.2.tgz diff --git a/stable/podgrab/12.0.8/ix_values.yaml b/stable/podgrab/12.0.8/ix_values.yaml new file mode 100644 index 00000000000..609a6a68322 --- /dev/null +++ b/stable/podgrab/12.0.8/ix_values.yaml @@ -0,0 +1,42 @@ +image: + repository: tccr.io/truecharts/podgrab + pullPolicy: Always + tag: v1.0.0@sha256:4f12ed1458991f2918990a7041a8d4e4ff84232e5dc0bf57d14acb70debb0103 + +service: + main: + ports: + main: + port: 10093 + targetPort: 8080 + tcp: + enabled: true + ports: + tcp: + enabled: true + port: 51080 + targetPort: 51080 + +secretEnv: + PASSWORD: "secretpasswordgoeshere" + +env: + CHECK_FREQUENCY: 240 + +persistence: + config: + enabled: true + mountPath: "/config" + +probes: + liveness: + enabled: false + + readiness: + enabled: false + + startup: + enabled: false + +portal: + enabled: true diff --git a/stable/podgrab/12.0.8/questions.yaml b/stable/podgrab/12.0.8/questions.yaml new file mode 100644 index 00000000000..ff842b30d22 --- /dev/null +++ b/stable/podgrab/12.0.8/questions.yaml @@ -0,0 +1,1898 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: PASSWORD + label: "Password" + description: "Desired Password" + schema: + type: string + private: true + default: "REPLACETHIS" + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: CHECK_FREQUENCY + label: "Update Frequency" + description: "Interval to check for new podcasts" + schema: + type: int + default: 240 + required: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10093 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/tinymediamanager/4.0.9/templates/common.yaml b/stable/podgrab/12.0.8/templates/common.yaml similarity index 100% rename from stable/tinymediamanager/4.0.9/templates/common.yaml rename to stable/podgrab/12.0.8/templates/common.yaml diff --git a/stable/synapse/7.0.22/values.yaml b/stable/podgrab/12.0.8/values.yaml similarity index 100% rename from stable/synapse/7.0.22/values.yaml rename to stable/podgrab/12.0.8/values.yaml diff --git a/stable/posterr/3.0.7/CHANGELOG.md b/stable/posterr/3.0.7/CHANGELOG.md deleted file mode 100644 index 28859bbda28..00000000000 --- a/stable/posterr/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [posterr-3.0.7](https://github.com/truecharts/charts/compare/posterr-3.0.6...posterr-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [posterr-3.0.6](https://github.com/truecharts/charts/compare/posterr-3.0.5...posterr-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [posterr-3.0.5](https://github.com/truecharts/charts/compare/posterr-3.0.4...posterr-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [posterr-3.0.4](https://github.com/truecharts/charts/compare/posterr-3.0.3...posterr-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [posterr-3.0.3](https://github.com/truecharts/charts/compare/posterr-3.0.2...posterr-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - - - -## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) - - diff --git a/stable/posterr/3.0.7/Chart.yaml b/stable/posterr/3.0.7/Chart.yaml deleted file mode 100644 index 1cb918c9214..00000000000 --- a/stable/posterr/3.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Media display for Plex, Sonarr and Radarr. -home: https://truecharts.org/charts/stable/posterr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/posterr.png -keywords: - - posterr - - MediaServer-Other -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: posterr -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/posterr - - https://github.com/petersem/posterr - - https://hub.docker.com/r/petersem/posterr/ -type: application -version: 3.0.7 -annotations: - truecharts.org/catagories: | - - MediaServer-Other - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/posterr/3.0.7/app-changelog.md b/stable/posterr/3.0.7/app-changelog.md deleted file mode 100644 index 5b78efa0e55..00000000000 --- a/stable/posterr/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [posterr-3.0.7](https://github.com/truecharts/charts/compare/posterr-3.0.6...posterr-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/posterr/3.0.7/app-readme.md b/stable/posterr/3.0.7/app-readme.md deleted file mode 100644 index f10ba3d0bbb..00000000000 --- a/stable/posterr/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Media display for Plex, Sonarr and Radarr. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/posterr](https://truecharts.org/charts/stable/posterr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/posterr/3.0.7/questions.yaml b/stable/posterr/3.0.7/questions.yaml deleted file mode 100644 index 4b80013e8ca..00000000000 --- a/stable/posterr/3.0.7/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 9876 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: Config Storage - description: Storage for config - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: custom - label: Custom Storage - description: Storage for custom pictures - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/posterr/3.0.8/CHANGELOG.md b/stable/posterr/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..d4cc5c53ebb --- /dev/null +++ b/stable/posterr/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [posterr-3.0.8](https://github.com/truecharts/charts/compare/posterr-3.0.7...posterr-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [posterr-3.0.7](https://github.com/truecharts/charts/compare/posterr-3.0.6...posterr-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [posterr-3.0.6](https://github.com/truecharts/charts/compare/posterr-3.0.5...posterr-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [posterr-3.0.5](https://github.com/truecharts/charts/compare/posterr-3.0.4...posterr-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [posterr-3.0.4](https://github.com/truecharts/charts/compare/posterr-3.0.3...posterr-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [posterr-3.0.3](https://github.com/truecharts/charts/compare/posterr-3.0.2...posterr-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) + + + + +## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) + + + + +## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) + + + + +## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) + + + + +## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) + + + + +## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) + + + + +## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) + + + + +## [posterr-3.0.2](https://github.com/truecharts/charts/compare/posterr-3.0.1...posterr-3.0.2) (2022-11-30) + + + diff --git a/stable/posterr/3.0.8/Chart.yaml b/stable/posterr/3.0.8/Chart.yaml new file mode 100644 index 00000000000..5f79c6e23a4 --- /dev/null +++ b/stable/posterr/3.0.8/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Media display for Plex, Sonarr and Radarr. +home: https://truecharts.org/charts/stable/posterr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/posterr.png +keywords: + - posterr + - MediaServer-Other +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: posterr +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/posterr + - https://hub.docker.com/petersem/posterr + - https://github.com/petersem/posterr +type: application +version: 3.0.8 +annotations: + truecharts.org/catagories: | + - MediaServer-Other + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/synapse/7.0.22/README.md b/stable/posterr/3.0.8/README.md similarity index 100% rename from stable/synapse/7.0.22/README.md rename to stable/posterr/3.0.8/README.md diff --git a/stable/posterr/3.0.8/app-changelog.md b/stable/posterr/3.0.8/app-changelog.md new file mode 100644 index 00000000000..5575decbe26 --- /dev/null +++ b/stable/posterr/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [posterr-3.0.8](https://github.com/truecharts/charts/compare/posterr-3.0.7...posterr-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/posterr/3.0.8/app-readme.md b/stable/posterr/3.0.8/app-readme.md new file mode 100644 index 00000000000..61f3accd09a --- /dev/null +++ b/stable/posterr/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +Media display for Plex, Sonarr and Radarr. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/posterr](https://truecharts.org/charts/stable/posterr) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/synctube/2.1.7/charts/common-11.1.2.tgz b/stable/posterr/3.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/synctube/2.1.7/charts/common-11.1.2.tgz rename to stable/posterr/3.0.8/charts/common-11.1.2.tgz diff --git a/stable/posterr/3.0.7/ix_values.yaml b/stable/posterr/3.0.8/ix_values.yaml similarity index 100% rename from stable/posterr/3.0.7/ix_values.yaml rename to stable/posterr/3.0.8/ix_values.yaml diff --git a/stable/posterr/3.0.8/questions.yaml b/stable/posterr/3.0.8/questions.yaml new file mode 100644 index 00000000000..c6748e67c79 --- /dev/null +++ b/stable/posterr/3.0.8/questions.yaml @@ -0,0 +1,1940 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 9876 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: Config Storage + description: Storage for config + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: custom + label: Custom Storage + description: Storage for custom pictures + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/posterr/3.0.7/templates/common.yaml b/stable/posterr/3.0.8/templates/common.yaml similarity index 100% rename from stable/posterr/3.0.7/templates/common.yaml rename to stable/posterr/3.0.8/templates/common.yaml diff --git a/stable/synctube/2.1.7/values.yaml b/stable/posterr/3.0.8/values.yaml similarity index 100% rename from stable/synctube/2.1.7/values.yaml rename to stable/posterr/3.0.8/values.yaml diff --git a/stable/pretend-youre-xyzzy/8.0.7/CHANGELOG.md b/stable/pretend-youre-xyzzy/8.0.7/CHANGELOG.md deleted file mode 100644 index 47316dd3564..00000000000 --- a/stable/pretend-youre-xyzzy/8.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [pretend-youre-xyzzy-8.0.7](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.6...pretend-youre-xyzzy-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [pretend-youre-xyzzy-8.0.6](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.5...pretend-youre-xyzzy-8.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [pretend-youre-xyzzy-8.0.5](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.4...pretend-youre-xyzzy-8.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [pretend-youre-xyzzy-8.0.4](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.3...pretend-youre-xyzzy-8.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [pretend-youre-xyzzy-8.0.3](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.2...pretend-youre-xyzzy-8.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - - - -## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) - - diff --git a/stable/pretend-youre-xyzzy/8.0.7/Chart.yaml b/stable/pretend-youre-xyzzy/8.0.7/Chart.yaml deleted file mode 100644 index 4ca5239dc1c..00000000000 --- a/stable/pretend-youre-xyzzy/8.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "4" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: pretend-youre-xyzzy, a cards against humanity clone -home: https://truecharts.org/charts/stable/pretend-youre-xyzzy -icon: https://truecharts.org/img/hotlink-ok/chart-icons/pretend-youre-xyzzy.png -keywords: - - pretend-youre-xyzzy - - cards - - against - - humanity -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: pretend-youre-xyzzy -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/pretend-youre-xyzzy - - https://github.com/ajanata/PretendYoureXyzzy - - https://github.com/emcniece/DockerYourXyzzy -version: 8.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/pretend-youre-xyzzy/8.0.7/app-changelog.md b/stable/pretend-youre-xyzzy/8.0.7/app-changelog.md deleted file mode 100644 index 5854f06b28c..00000000000 --- a/stable/pretend-youre-xyzzy/8.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [pretend-youre-xyzzy-8.0.7](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.6...pretend-youre-xyzzy-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/pretend-youre-xyzzy/8.0.7/app-readme.md b/stable/pretend-youre-xyzzy/8.0.7/app-readme.md deleted file mode 100644 index a17553212cf..00000000000 --- a/stable/pretend-youre-xyzzy/8.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -pretend-youre-xyzzy, a cards against humanity clone - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/pretend-youre-xyzzy](https://truecharts.org/charts/stable/pretend-youre-xyzzy) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/pretend-youre-xyzzy/8.0.7/questions.yaml b/stable/pretend-youre-xyzzy/8.0.7/questions.yaml deleted file mode 100644 index 87eafbd3d2f..00000000000 --- a/stable/pretend-youre-xyzzy/8.0.7/questions.yaml +++ /dev/null @@ -1,1751 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10094 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/pretend-youre-xyzzy/8.0.8/CHANGELOG.md b/stable/pretend-youre-xyzzy/8.0.8/CHANGELOG.md new file mode 100644 index 00000000000..afeac48abfa --- /dev/null +++ b/stable/pretend-youre-xyzzy/8.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [pretend-youre-xyzzy-8.0.8](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.7...pretend-youre-xyzzy-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [pretend-youre-xyzzy-8.0.7](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.6...pretend-youre-xyzzy-8.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [pretend-youre-xyzzy-8.0.6](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.5...pretend-youre-xyzzy-8.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [pretend-youre-xyzzy-8.0.5](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.4...pretend-youre-xyzzy-8.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [pretend-youre-xyzzy-8.0.4](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.3...pretend-youre-xyzzy-8.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [pretend-youre-xyzzy-8.0.3](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.2...pretend-youre-xyzzy-8.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) + + + + +## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) + + + + +## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) + + + + +## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) + + + + +## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) + + + + +## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) + + + + +## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) + + + + +## [pretend-youre-xyzzy-8.0.2](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.1...pretend-youre-xyzzy-8.0.2) (2022-11-30) + + + diff --git a/stable/pretend-youre-xyzzy/8.0.8/Chart.yaml b/stable/pretend-youre-xyzzy/8.0.8/Chart.yaml new file mode 100644 index 00000000000..c6db8119ba2 --- /dev/null +++ b/stable/pretend-youre-xyzzy/8.0.8/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "4" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: pretend-youre-xyzzy, a cards against humanity clone +home: https://truecharts.org/charts/stable/pretend-youre-xyzzy +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pretend-youre-xyzzy.png +keywords: + - pretend-youre-xyzzy + - cards + - against + - humanity +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: pretend-youre-xyzzy +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/pretend-youre-xyzzy + - https://hub.docker.com/emcniece/dockeryourxyzzy + - https://github.com/ajanata/PretendYoureXyzzy + - https://github.com/emcniece/DockerYourXyzzy +version: 8.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/synctube/2.1.7/README.md b/stable/pretend-youre-xyzzy/8.0.8/README.md similarity index 100% rename from stable/synctube/2.1.7/README.md rename to stable/pretend-youre-xyzzy/8.0.8/README.md diff --git a/stable/pretend-youre-xyzzy/8.0.8/app-changelog.md b/stable/pretend-youre-xyzzy/8.0.8/app-changelog.md new file mode 100644 index 00000000000..408a36eb4a6 --- /dev/null +++ b/stable/pretend-youre-xyzzy/8.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pretend-youre-xyzzy-8.0.8](https://github.com/truecharts/charts/compare/pretend-youre-xyzzy-8.0.7...pretend-youre-xyzzy-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/pretend-youre-xyzzy/8.0.8/app-readme.md b/stable/pretend-youre-xyzzy/8.0.8/app-readme.md new file mode 100644 index 00000000000..41d6b814ee6 --- /dev/null +++ b/stable/pretend-youre-xyzzy/8.0.8/app-readme.md @@ -0,0 +1,8 @@ +pretend-youre-xyzzy, a cards against humanity clone + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/pretend-youre-xyzzy](https://truecharts.org/charts/stable/pretend-youre-xyzzy) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/tdarr/4.0.7/charts/common-11.1.2.tgz b/stable/pretend-youre-xyzzy/8.0.8/charts/common-11.1.2.tgz similarity index 100% rename from stable/tdarr/4.0.7/charts/common-11.1.2.tgz rename to stable/pretend-youre-xyzzy/8.0.8/charts/common-11.1.2.tgz diff --git a/stable/pretend-youre-xyzzy/8.0.7/ix_values.yaml b/stable/pretend-youre-xyzzy/8.0.8/ix_values.yaml similarity index 100% rename from stable/pretend-youre-xyzzy/8.0.7/ix_values.yaml rename to stable/pretend-youre-xyzzy/8.0.8/ix_values.yaml diff --git a/stable/pretend-youre-xyzzy/8.0.8/questions.yaml b/stable/pretend-youre-xyzzy/8.0.8/questions.yaml new file mode 100644 index 00000000000..1dbdcc8c8fd --- /dev/null +++ b/stable/pretend-youre-xyzzy/8.0.8/questions.yaml @@ -0,0 +1,1792 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10094 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/tsmuxer/3.0.9/templates/common.yaml b/stable/pretend-youre-xyzzy/8.0.8/templates/common.yaml similarity index 100% rename from stable/tsmuxer/3.0.9/templates/common.yaml rename to stable/pretend-youre-xyzzy/8.0.8/templates/common.yaml diff --git a/stable/tdarr/4.0.7/values.yaml b/stable/pretend-youre-xyzzy/8.0.8/values.yaml similarity index 100% rename from stable/tdarr/4.0.7/values.yaml rename to stable/pretend-youre-xyzzy/8.0.8/values.yaml diff --git a/stable/promcord/6.0.10/CHANGELOG.md b/stable/promcord/6.0.10/CHANGELOG.md deleted file mode 100644 index 389b62225af..00000000000 --- a/stable/promcord/6.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [promcord-6.0.10](https://github.com/truecharts/charts/compare/promcord-6.0.9...promcord-6.0.10) (2023-01-18) - - - - -## [promcord-6.0.9](https://github.com/truecharts/charts/compare/promcord-6.0.8...promcord-6.0.9) (2023-01-18) - - - - -## [promcord-6.0.8](https://github.com/truecharts/charts/compare/promcord-6.0.7...promcord-6.0.8) (2023-01-18) - - - - -## [promcord-6.0.7](https://github.com/truecharts/charts/compare/promcord-6.0.6...promcord-6.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [promcord-6.0.6](https://github.com/truecharts/charts/compare/promcord-6.0.5...promcord-6.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [promcord-6.0.5](https://github.com/truecharts/charts/compare/promcord-6.0.4...promcord-6.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [promcord-6.0.4](https://github.com/truecharts/charts/compare/promcord-6.0.3...promcord-6.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [promcord-6.0.3](https://github.com/truecharts/charts/compare/promcord-6.0.2...promcord-6.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) - - - - -## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) - - - - -## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) - - - - -## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) - - - - -## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) - - - - -## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) - - - - -## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) - - diff --git a/stable/promcord/6.0.10/Chart.yaml b/stable/promcord/6.0.10/Chart.yaml deleted file mode 100644 index 0761eae88c0..00000000000 --- a/stable/promcord/6.0.10/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Discord bot that provides metrics from a Discord server -icon: https://truecharts.org/img/hotlink-ok/chart-icons/promcord.png -home: https://truecharts.org/charts/stable/promcord -keywords: - - promcord - - discord - - metrics -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: promcord -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/promcord - - https://github.com/nimarion/promcord -type: application -version: 6.0.10 -annotations: - truecharts.org/catagories: | - - metrics - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/promcord/6.0.10/app-changelog.md b/stable/promcord/6.0.10/app-changelog.md deleted file mode 100644 index 659f5773156..00000000000 --- a/stable/promcord/6.0.10/app-changelog.md +++ /dev/null @@ -1,4 +0,0 @@ - - -## [promcord-6.0.10](https://github.com/truecharts/charts/compare/promcord-6.0.9...promcord-6.0.10) (2023-01-18) - diff --git a/stable/promcord/6.0.10/questions.yaml b/stable/promcord/6.0.10/questions.yaml deleted file mode 100644 index 88bc2d57995..00000000000 --- a/stable/promcord/6.0.10/questions.yaml +++ /dev/null @@ -1,1496 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: DISCORD_TOKEN - label: "Discord Token" - description: "Token with Access to your Discord" - schema: - type: string - required: true - private: true - default: "REPLACETHIS" - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: metrics - group: Metrics - label: Prometheus Metrics - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - description: Enable Prometheus Metrics - schema: - type: boolean - default: true - show_subquestions_if: true - subquestions: - - variable: serviceMonitor - label: Service Monitor Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: interval - label: Scrape Interval - description: Scrape interval time - schema: - type: string - default: 1m - required: true - - variable: scrapeTimeout - label: Scrape Timeout - description: Scrape timeout Time - schema: - type: string - default: 30s - required: true - - variable: prometheusRule - label: PrometheusRule - description: Enable and configure Prometheus Rules for the App. - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - description: Enable Prometheus Metrics - schema: - type: boolean - default: false - # TODO: Rule List section -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/promcord/6.0.11/CHANGELOG.md b/stable/promcord/6.0.11/CHANGELOG.md new file mode 100644 index 00000000000..883c40b1b34 --- /dev/null +++ b/stable/promcord/6.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [promcord-6.0.11](https://github.com/truecharts/charts/compare/promcord-6.0.10...promcord-6.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [promcord-6.0.10](https://github.com/truecharts/charts/compare/promcord-6.0.9...promcord-6.0.10) (2023-01-18) + + + + +## [promcord-6.0.9](https://github.com/truecharts/charts/compare/promcord-6.0.8...promcord-6.0.9) (2023-01-18) + + + + +## [promcord-6.0.8](https://github.com/truecharts/charts/compare/promcord-6.0.7...promcord-6.0.8) (2023-01-18) + + + + +## [promcord-6.0.7](https://github.com/truecharts/charts/compare/promcord-6.0.6...promcord-6.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [promcord-6.0.6](https://github.com/truecharts/charts/compare/promcord-6.0.5...promcord-6.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [promcord-6.0.5](https://github.com/truecharts/charts/compare/promcord-6.0.4...promcord-6.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [promcord-6.0.4](https://github.com/truecharts/charts/compare/promcord-6.0.3...promcord-6.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [promcord-6.0.3](https://github.com/truecharts/charts/compare/promcord-6.0.2...promcord-6.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) + + + + +## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) + + + + +## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) + + + + +## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) + + + + +## [promcord-6.0.2](https://github.com/truecharts/charts/compare/promcord-6.0.1...promcord-6.0.2) (2022-11-30) + + + diff --git a/stable/promcord/6.0.11/Chart.yaml b/stable/promcord/6.0.11/Chart.yaml new file mode 100644 index 00000000000..50c749d3361 --- /dev/null +++ b/stable/promcord/6.0.11/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Discord bot that provides metrics from a Discord server +icon: https://truecharts.org/img/hotlink-ok/chart-icons/promcord.png +home: https://truecharts.org/charts/stable/promcord +keywords: + - promcord + - discord + - metrics +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: promcord +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/promcord + - https://hub.docker.com/biospheere/promcord + - https://github.com/nimarion/promcord +type: application +version: 6.0.11 +annotations: + truecharts.org/catagories: | + - metrics + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/tdarr/4.0.7/README.md b/stable/promcord/6.0.11/README.md similarity index 100% rename from stable/tdarr/4.0.7/README.md rename to stable/promcord/6.0.11/README.md diff --git a/stable/promcord/6.0.11/app-changelog.md b/stable/promcord/6.0.11/app-changelog.md new file mode 100644 index 00000000000..c4d13a2ee25 --- /dev/null +++ b/stable/promcord/6.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [promcord-6.0.11](https://github.com/truecharts/charts/compare/promcord-6.0.10...promcord-6.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/promcord/6.0.10/app-readme.md b/stable/promcord/6.0.11/app-readme.md similarity index 100% rename from stable/promcord/6.0.10/app-readme.md rename to stable/promcord/6.0.11/app-readme.md diff --git a/stable/thelounge/8.0.7/charts/common-11.1.2.tgz b/stable/promcord/6.0.11/charts/common-11.1.2.tgz similarity index 100% rename from stable/thelounge/8.0.7/charts/common-11.1.2.tgz rename to stable/promcord/6.0.11/charts/common-11.1.2.tgz diff --git a/stable/promcord/6.0.10/ix_values.yaml b/stable/promcord/6.0.11/ix_values.yaml similarity index 100% rename from stable/promcord/6.0.10/ix_values.yaml rename to stable/promcord/6.0.11/ix_values.yaml diff --git a/stable/promcord/6.0.11/questions.yaml b/stable/promcord/6.0.11/questions.yaml new file mode 100644 index 00000000000..9fcf749afd7 --- /dev/null +++ b/stable/promcord/6.0.11/questions.yaml @@ -0,0 +1,1497 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DISCORD_TOKEN + label: "Discord Token" + description: "Token with Access to your Discord" + schema: + type: string + required: true + private: true + default: "REPLACETHIS" + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: metrics +# group: Metrics +# label: Prometheus Metrics +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# description: Enable Prometheus Metrics +# schema: +# type: boolean +# default: true +# show_subquestions_if: true +# subquestions: +# - variable: serviceMonitor +# label: Service Monitor Settings +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: interval +# label: Scrape Interval +# description: Scrape interval time +# schema: +# type: string +# default: 1m +# required: true +# - variable: scrapeTimeout +# label: Scrape Timeout +# description: Scrape timeout Time +# schema: +# type: string +# default: 30s +# required: true +# + - variable: prometheusRule + label: PrometheusRule + description: Enable and configure Prometheus Rules for the App. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + # TODO: Rule List section +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/promcord/6.0.10/templates/common.yaml b/stable/promcord/6.0.11/templates/common.yaml similarity index 100% rename from stable/promcord/6.0.10/templates/common.yaml rename to stable/promcord/6.0.11/templates/common.yaml diff --git a/stable/promcord/6.0.10/templates/prometheusrules.yaml b/stable/promcord/6.0.11/templates/prometheusrules.yaml similarity index 100% rename from stable/promcord/6.0.10/templates/prometheusrules.yaml rename to stable/promcord/6.0.11/templates/prometheusrules.yaml diff --git a/stable/promcord/6.0.10/templates/servicemonitor.yaml b/stable/promcord/6.0.11/templates/servicemonitor.yaml similarity index 100% rename from stable/promcord/6.0.10/templates/servicemonitor.yaml rename to stable/promcord/6.0.11/templates/servicemonitor.yaml diff --git a/stable/thelounge/8.0.7/values.yaml b/stable/promcord/6.0.11/values.yaml similarity index 100% rename from stable/thelounge/8.0.7/values.yaml rename to stable/promcord/6.0.11/values.yaml diff --git a/stable/putty/3.0.8/CHANGELOG.md b/stable/putty/3.0.8/CHANGELOG.md deleted file mode 100644 index 3b71b180c8a..00000000000 --- a/stable/putty/3.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [putty-3.0.8](https://github.com/truecharts/charts/compare/putty-3.0.7...putty-3.0.8) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/putty to v23.01.1 - - - - -## [putty-3.0.7](https://github.com/truecharts/charts/compare/putty-3.0.6...putty-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [putty-3.0.6](https://github.com/truecharts/charts/compare/putty-3.0.5...putty-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [putty-3.0.5](https://github.com/truecharts/charts/compare/putty-3.0.4...putty-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [putty-3.0.4](https://github.com/truecharts/charts/compare/putty-3.0.3...putty-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [putty-3.0.3](https://github.com/truecharts/charts/compare/putty-3.0.2...putty-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) - - - - -## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) - - - - -## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) - - - - -## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) - - - - -## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) - - - - -## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) - - - - -## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) - - - - -## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) - - - diff --git a/stable/putty/3.0.8/Chart.yaml b/stable/putty/3.0.8/Chart.yaml deleted file mode 100644 index a5ae5544fea..00000000000 --- a/stable/putty/3.0.8/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "23.01.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: PuTTY is a free and open-source terminal emulator, serial console and network file transfer application. -home: https://truecharts.org/charts/stable/putty -icon: https://truecharts.org/img/hotlink-ok/chart-icons/putty.png -keywords: - - ssh - - putty -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: putty -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/putty - - https://github.com/jlesage/docker-putty - - https://hub.docker.com/r/jlesage/putty/ -type: application -version: 3.0.8 -annotations: - truecharts.org/catagories: | - - utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/putty/3.0.8/app-changelog.md b/stable/putty/3.0.8/app-changelog.md deleted file mode 100644 index 4af850cbbdf..00000000000 --- a/stable/putty/3.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [putty-3.0.8](https://github.com/truecharts/charts/compare/putty-3.0.7...putty-3.0.8) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/putty to v23.01.1 - - \ No newline at end of file diff --git a/stable/putty/3.0.8/app-readme.md b/stable/putty/3.0.8/app-readme.md deleted file mode 100644 index bff2b5f792b..00000000000 --- a/stable/putty/3.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -PuTTY is a free and open-source terminal emulator, serial console and network file transfer application. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/putty](https://truecharts.org/charts/stable/putty) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/putty/3.0.8/questions.yaml b/stable/putty/3.0.8/questions.yaml deleted file mode 100644 index 6b93221abb5..00000000000 --- a/stable/putty/3.0.8/questions.yaml +++ /dev/null @@ -1,1949 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - # Portal - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: putty - group: "App Configuration" - label: "PuTTY Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: DISABLE_RESTART_SESSION_DIALOG_WINDOW - label: "DISABLE_RESTART_SESSION_DIALOG_WINDOW" - description: "When set to true, the dialog window used to restart PuTTY session is not displayed." - schema: - type: boolean - default: false - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10266 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10267 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/putty/3.0.9/CHANGELOG.md b/stable/putty/3.0.9/CHANGELOG.md new file mode 100644 index 00000000000..26b42ba1052 --- /dev/null +++ b/stable/putty/3.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [putty-3.0.9](https://github.com/truecharts/charts/compare/putty-3.0.8...putty-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [putty-3.0.8](https://github.com/truecharts/charts/compare/putty-3.0.7...putty-3.0.8) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/putty to v23.01.1 + + + + +## [putty-3.0.7](https://github.com/truecharts/charts/compare/putty-3.0.6...putty-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [putty-3.0.6](https://github.com/truecharts/charts/compare/putty-3.0.5...putty-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [putty-3.0.5](https://github.com/truecharts/charts/compare/putty-3.0.4...putty-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [putty-3.0.4](https://github.com/truecharts/charts/compare/putty-3.0.3...putty-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [putty-3.0.3](https://github.com/truecharts/charts/compare/putty-3.0.2...putty-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) + + + + +## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) + + + + +## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) + + + + +## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) + + + + +## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) + + + + +## [putty-3.0.2](https://github.com/truecharts/charts/compare/putty-3.0.1...putty-3.0.2) (2022-11-30) + + + + diff --git a/stable/putty/3.0.9/Chart.yaml b/stable/putty/3.0.9/Chart.yaml new file mode 100644 index 00000000000..d27d3c49b6a --- /dev/null +++ b/stable/putty/3.0.9/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "23.01.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: PuTTY is a free and open-source terminal emulator, serial console and network file transfer application. +home: https://truecharts.org/charts/stable/putty +icon: https://truecharts.org/img/hotlink-ok/chart-icons/putty.png +keywords: + - ssh + - putty +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: putty +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/putty + - https://hub.docker.com/jlesage/putty + - https://github.com/jlesage/docker-putty +type: application +version: 3.0.9 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/thelounge/8.0.7/README.md b/stable/putty/3.0.9/README.md similarity index 100% rename from stable/thelounge/8.0.7/README.md rename to stable/putty/3.0.9/README.md diff --git a/stable/putty/3.0.9/app-changelog.md b/stable/putty/3.0.9/app-changelog.md new file mode 100644 index 00000000000..c98736d2f1d --- /dev/null +++ b/stable/putty/3.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [putty-3.0.9](https://github.com/truecharts/charts/compare/putty-3.0.8...putty-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/putty/3.0.9/app-readme.md b/stable/putty/3.0.9/app-readme.md new file mode 100644 index 00000000000..a0b2eff0036 --- /dev/null +++ b/stable/putty/3.0.9/app-readme.md @@ -0,0 +1,8 @@ +PuTTY is a free and open-source terminal emulator, serial console and network file transfer application. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/putty](https://truecharts.org/charts/stable/putty) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/tinymediamanager/4.0.9/charts/common-11.1.2.tgz b/stable/putty/3.0.9/charts/common-11.1.2.tgz similarity index 100% rename from stable/tinymediamanager/4.0.9/charts/common-11.1.2.tgz rename to stable/putty/3.0.9/charts/common-11.1.2.tgz diff --git a/stable/putty/3.0.8/ix_values.yaml b/stable/putty/3.0.9/ix_values.yaml similarity index 100% rename from stable/putty/3.0.8/ix_values.yaml rename to stable/putty/3.0.9/ix_values.yaml diff --git a/stable/putty/3.0.9/questions.yaml b/stable/putty/3.0.9/questions.yaml new file mode 100644 index 00000000000..f5b74286139 --- /dev/null +++ b/stable/putty/3.0.9/questions.yaml @@ -0,0 +1,1990 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + # Portal + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: putty + group: "App Configuration" + label: "PuTTY Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DISABLE_RESTART_SESSION_DIALOG_WINDOW + label: "DISABLE_RESTART_SESSION_DIALOG_WINDOW" + description: "When set to true, the dialog window used to restart PuTTY session is not displayed." + schema: + type: boolean + default: false + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10266 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10267 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/typecho/7.0.17/templates/common.yaml b/stable/putty/3.0.9/templates/common.yaml similarity index 100% rename from stable/typecho/7.0.17/templates/common.yaml rename to stable/putty/3.0.9/templates/common.yaml diff --git a/stable/tinymediamanager/4.0.9/values.yaml b/stable/putty/3.0.9/values.yaml similarity index 100% rename from stable/tinymediamanager/4.0.9/values.yaml rename to stable/putty/3.0.9/values.yaml diff --git a/stable/pydio-cells/7.0.19/CHANGELOG.md b/stable/pydio-cells/7.0.19/CHANGELOG.md deleted file mode 100644 index 4a64fe7caac..00000000000 --- a/stable/pydio-cells/7.0.19/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [pydio-cells-7.0.19](https://github.com/truecharts/charts/compare/pydio-cells-7.0.18...pydio-cells-7.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [pydio-cells-7.0.18](https://github.com/truecharts/charts/compare/pydio-cells-7.0.17...pydio-cells-7.0.18) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [pydio-cells-7.0.17](https://github.com/truecharts/charts/compare/pydio-cells-7.0.16...pydio-cells-7.0.17) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [pydio-cells-7.0.16](https://github.com/truecharts/charts/compare/pydio-cells-7.0.15...pydio-cells-7.0.16) (2023-01-16) - -### Chore - -- update container image tccr.io/truecharts/pydio-cells to v4.0.6 - - - - -## [pydio-cells-7.0.15](https://github.com/truecharts/charts/compare/pydio-cells-7.0.14...pydio-cells-7.0.15) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [pydio-cells-7.0.14](https://github.com/truecharts/charts/compare/pydio-cells-7.0.13...pydio-cells-7.0.14) (2022-12-27) - -### Chore - -- update container image tccr.io/truecharts/pydio-cells to v4.0.5 - - - - -## [pydio-cells-7.0.13](https://github.com/truecharts/charts/compare/pydio-cells-7.0.12...pydio-cells-7.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [pydio-cells-7.0.12](https://github.com/truecharts/charts/compare/pydio-cells-7.0.11...pydio-cells-7.0.12) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [pydio-cells-7.0.11](https://github.com/truecharts/charts/compare/pydio-cells-7.0.10...pydio-cells-7.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [pydio-cells-7.0.10](https://github.com/truecharts/charts/compare/pydio-cells-7.0.9...pydio-cells-7.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [pydio-cells-7.0.9](https://github.com/truecharts/charts/compare/pydio-cells-7.0.8...pydio-cells-7.0.9) (2022-12-18) - -### Chore diff --git a/stable/pydio-cells/7.0.19/Chart.yaml b/stable/pydio-cells/7.0.19/Chart.yaml deleted file mode 100644 index a308cc13114..00000000000 --- a/stable/pydio-cells/7.0.19/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: pydio-cells -version: 7.0.19 -appVersion: "4.0.6" -description: Pydio-cells is the nextgen file sharing platform for organizations. -type: application -deprecated: false -home: https://truecharts.org/charts/stable/pydio-cells -icon: https://truecharts.org/img/hotlink-ok/chart-icons/pydio-cells.png -keywords: - - pydio-cells -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/pydio-cells - - https://hub.docker.com/r/linuxserver/pydio-cells -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: mariadb.enabled - name: mariadb - repository: https://charts.truecharts.org/ - version: 5.0.25 -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - incubator - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/pydio-cells/7.0.19/app-changelog.md b/stable/pydio-cells/7.0.19/app-changelog.md deleted file mode 100644 index 07fde3ec594..00000000000 --- a/stable/pydio-cells/7.0.19/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [pydio-cells-7.0.19](https://github.com/truecharts/charts/compare/pydio-cells-7.0.18...pydio-cells-7.0.19) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/pydio-cells/7.0.20/CHANGELOG.md b/stable/pydio-cells/7.0.20/CHANGELOG.md new file mode 100644 index 00000000000..1f6da061a42 --- /dev/null +++ b/stable/pydio-cells/7.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [pydio-cells-7.0.20](https://github.com/truecharts/charts/compare/pydio-cells-7.0.19...pydio-cells-7.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [pydio-cells-7.0.19](https://github.com/truecharts/charts/compare/pydio-cells-7.0.18...pydio-cells-7.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [pydio-cells-7.0.18](https://github.com/truecharts/charts/compare/pydio-cells-7.0.17...pydio-cells-7.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [pydio-cells-7.0.17](https://github.com/truecharts/charts/compare/pydio-cells-7.0.16...pydio-cells-7.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [pydio-cells-7.0.16](https://github.com/truecharts/charts/compare/pydio-cells-7.0.15...pydio-cells-7.0.16) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/pydio-cells to v4.0.6 + + + + +## [pydio-cells-7.0.15](https://github.com/truecharts/charts/compare/pydio-cells-7.0.14...pydio-cells-7.0.15) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [pydio-cells-7.0.14](https://github.com/truecharts/charts/compare/pydio-cells-7.0.13...pydio-cells-7.0.14) (2022-12-27) + +### Chore + +- update container image tccr.io/truecharts/pydio-cells to v4.0.5 + + + + +## [pydio-cells-7.0.13](https://github.com/truecharts/charts/compare/pydio-cells-7.0.12...pydio-cells-7.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [pydio-cells-7.0.12](https://github.com/truecharts/charts/compare/pydio-cells-7.0.11...pydio-cells-7.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [pydio-cells-7.0.11](https://github.com/truecharts/charts/compare/pydio-cells-7.0.10...pydio-cells-7.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [pydio-cells-7.0.10](https://github.com/truecharts/charts/compare/pydio-cells-7.0.9...pydio-cells-7.0.10) (2022-12-19) + +### Chore diff --git a/stable/pydio-cells/7.0.20/Chart.yaml b/stable/pydio-cells/7.0.20/Chart.yaml new file mode 100644 index 00000000000..f278e384ea3 --- /dev/null +++ b/stable/pydio-cells/7.0.20/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: pydio-cells +version: 7.0.20 +appVersion: "4.0.6" +description: Pydio-cells is the nextgen file sharing platform for organizations. +type: application +deprecated: false +home: https://truecharts.org/charts/stable/pydio-cells +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pydio-cells.png +keywords: + - pydio-cells +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/pydio-cells + - https://hub.docker.com/pydio/cells +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - incubator + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/tinymediamanager/4.0.9/README.md b/stable/pydio-cells/7.0.20/README.md similarity index 100% rename from stable/tinymediamanager/4.0.9/README.md rename to stable/pydio-cells/7.0.20/README.md diff --git a/stable/pydio-cells/7.0.20/app-changelog.md b/stable/pydio-cells/7.0.20/app-changelog.md new file mode 100644 index 00000000000..3ccdf202480 --- /dev/null +++ b/stable/pydio-cells/7.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pydio-cells-7.0.20](https://github.com/truecharts/charts/compare/pydio-cells-7.0.19...pydio-cells-7.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/pydio-cells/7.0.19/app-readme.md b/stable/pydio-cells/7.0.20/app-readme.md similarity index 100% rename from stable/pydio-cells/7.0.19/app-readme.md rename to stable/pydio-cells/7.0.20/app-readme.md diff --git a/stable/traggo/1.0.5/charts/common-11.1.2.tgz b/stable/pydio-cells/7.0.20/charts/common-11.1.2.tgz similarity index 100% rename from stable/traggo/1.0.5/charts/common-11.1.2.tgz rename to stable/pydio-cells/7.0.20/charts/common-11.1.2.tgz diff --git a/stable/wordpress/1.1.10/charts/mariadb-5.0.25.tgz b/stable/pydio-cells/7.0.20/charts/mariadb-5.0.25.tgz similarity index 100% rename from stable/wordpress/1.1.10/charts/mariadb-5.0.25.tgz rename to stable/pydio-cells/7.0.20/charts/mariadb-5.0.25.tgz diff --git a/stable/pydio-cells/7.0.19/ix_values.yaml b/stable/pydio-cells/7.0.20/ix_values.yaml similarity index 100% rename from stable/pydio-cells/7.0.19/ix_values.yaml rename to stable/pydio-cells/7.0.20/ix_values.yaml diff --git a/stable/pydio-cells/7.0.19/questions.yaml b/stable/pydio-cells/7.0.20/questions.yaml similarity index 100% rename from stable/pydio-cells/7.0.19/questions.yaml rename to stable/pydio-cells/7.0.20/questions.yaml diff --git a/stable/pydio-cells/7.0.19/templates/common.yaml b/stable/pydio-cells/7.0.20/templates/common.yaml similarity index 100% rename from stable/pydio-cells/7.0.19/templates/common.yaml rename to stable/pydio-cells/7.0.20/templates/common.yaml diff --git a/stable/traggo/1.0.5/values.yaml b/stable/pydio-cells/7.0.20/values.yaml similarity index 100% rename from stable/traggo/1.0.5/values.yaml rename to stable/pydio-cells/7.0.20/values.yaml diff --git a/stable/qdirstat/3.0.10/CHANGELOG.md b/stable/qdirstat/3.0.10/CHANGELOG.md new file mode 100644 index 00000000000..f6de41a1b05 --- /dev/null +++ b/stable/qdirstat/3.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [qdirstat-3.0.10](https://github.com/truecharts/charts/compare/qdirstat-3.0.9...qdirstat-3.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [qdirstat-3.0.9](https://github.com/truecharts/charts/compare/qdirstat-3.0.8...qdirstat-3.0.9) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/qdirstat to v23.01.1 + + + + +## [qdirstat-3.0.8](https://github.com/truecharts/charts/compare/qdirstat-3.0.7...qdirstat-3.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [qdirstat-3.0.7](https://github.com/truecharts/charts/compare/qdirstat-3.0.6...qdirstat-3.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [qdirstat-3.0.6](https://github.com/truecharts/charts/compare/qdirstat-3.0.5...qdirstat-3.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [qdirstat-3.0.5](https://github.com/truecharts/charts/compare/qdirstat-3.0.4...qdirstat-3.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + - update container image tccr.io/truecharts/qdirstat to v22.12.2 + + + + +## [qdirstat-3.0.4](https://github.com/truecharts/charts/compare/qdirstat-3.0.3...qdirstat-3.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [qdirstat-3.0.3](https://github.com/truecharts/charts/compare/qdirstat-3.0.2...qdirstat-3.0.3) (2022-12-09) + + + + +## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) + + + + +## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) + + + + +## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) + + + + +## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) + + + + +## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) + + + diff --git a/stable/qdirstat/3.0.10/Chart.yaml b/stable/qdirstat/3.0.10/Chart.yaml new file mode 100644 index 00000000000..e1632fb9afc --- /dev/null +++ b/stable/qdirstat/3.0.10/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "23.01.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: QDirStat is a graphical application to show where your disk space has gone and to help you to clean it up. +home: https://truecharts.org/charts/stable/qdirstat +icon: https://truecharts.org/img/hotlink-ok/chart-icons/qdirstat.png +keywords: + - stats + - qdirstat +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: qdirstat +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/qdirstat + - https://hub.docker.com/jlesage/qdirstat + - https://github.com/jlesage/docker-qdirstat +type: application +version: 3.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/traggo/1.0.5/README.md b/stable/qdirstat/3.0.10/README.md similarity index 100% rename from stable/traggo/1.0.5/README.md rename to stable/qdirstat/3.0.10/README.md diff --git a/stable/qdirstat/3.0.10/app-changelog.md b/stable/qdirstat/3.0.10/app-changelog.md new file mode 100644 index 00000000000..1ae7feec95e --- /dev/null +++ b/stable/qdirstat/3.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [qdirstat-3.0.10](https://github.com/truecharts/charts/compare/qdirstat-3.0.9...qdirstat-3.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/qdirstat/3.0.10/app-readme.md b/stable/qdirstat/3.0.10/app-readme.md new file mode 100644 index 00000000000..ac131f8121f --- /dev/null +++ b/stable/qdirstat/3.0.10/app-readme.md @@ -0,0 +1,8 @@ +QDirStat is a graphical application to show where your disk space has gone and to help you to clean it up. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/qdirstat](https://truecharts.org/charts/stable/qdirstat) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/tsmuxer/3.0.9/charts/common-11.1.2.tgz b/stable/qdirstat/3.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/tsmuxer/3.0.9/charts/common-11.1.2.tgz rename to stable/qdirstat/3.0.10/charts/common-11.1.2.tgz diff --git a/stable/qdirstat/3.0.9/ix_values.yaml b/stable/qdirstat/3.0.10/ix_values.yaml similarity index 100% rename from stable/qdirstat/3.0.9/ix_values.yaml rename to stable/qdirstat/3.0.10/ix_values.yaml diff --git a/stable/qdirstat/3.0.10/questions.yaml b/stable/qdirstat/3.0.10/questions.yaml new file mode 100644 index 00000000000..f89a8dc665b --- /dev/null +++ b/stable/qdirstat/3.0.10/questions.yaml @@ -0,0 +1,2054 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + # Portal + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: VNC_PASSWORD + label: "VNC_PASSWORD" + description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." + schema: + type: string + private: true + default: "" + - variable: qdirstat + group: "App Configuration" + label: "QDirStat Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ENABLE_CJK_FONT + label: "ENABLE_CJK_FONT" + description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " + schema: + type: boolean + default: false + - variable: KEEP_APP_RUNNING + label: "KEEP_APP_RUNNING" + description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." + schema: + type: boolean + default: false + - variable: gui + label: "GUI Settings" + description: "Always read description before changing a value here. Also refer to README" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: DISPLAY_WIDTH + label: "DISPLAY_WIDTH" + description: "Width (in pixels) of the application's window." + schema: + type: int + default: 1280 + required: true + - variable: DISPLAY_HEIGHT + label: "DISPLAY_HEIGHT" + description: "Height (in pixels) of the application's window." + schema: + type: int + default: 768 + required: true + - variable: SECURE_CONNECTION + label: "SECURE_CONNECTION" + description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10262 + required: true + - variable: vnc + label: "VNC Service" + description: "VNC Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vnc + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10263 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storage + label: "App Storage" + description: "Application Storage." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/unpackerr/8.0.8/templates/common.yaml b/stable/qdirstat/3.0.10/templates/common.yaml similarity index 100% rename from stable/unpackerr/8.0.8/templates/common.yaml rename to stable/qdirstat/3.0.10/templates/common.yaml diff --git a/stable/tsmuxer/3.0.9/values.yaml b/stable/qdirstat/3.0.10/values.yaml similarity index 100% rename from stable/tsmuxer/3.0.9/values.yaml rename to stable/qdirstat/3.0.10/values.yaml diff --git a/stable/qdirstat/3.0.9/CHANGELOG.md b/stable/qdirstat/3.0.9/CHANGELOG.md deleted file mode 100644 index 8184978e19b..00000000000 --- a/stable/qdirstat/3.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [qdirstat-3.0.9](https://github.com/truecharts/charts/compare/qdirstat-3.0.8...qdirstat-3.0.9) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/qdirstat to v23.01.1 - - - - -## [qdirstat-3.0.8](https://github.com/truecharts/charts/compare/qdirstat-3.0.7...qdirstat-3.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [qdirstat-3.0.7](https://github.com/truecharts/charts/compare/qdirstat-3.0.6...qdirstat-3.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [qdirstat-3.0.6](https://github.com/truecharts/charts/compare/qdirstat-3.0.5...qdirstat-3.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [qdirstat-3.0.5](https://github.com/truecharts/charts/compare/qdirstat-3.0.4...qdirstat-3.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - update container image tccr.io/truecharts/qdirstat to v22.12.2 - - - - -## [qdirstat-3.0.4](https://github.com/truecharts/charts/compare/qdirstat-3.0.3...qdirstat-3.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [qdirstat-3.0.3](https://github.com/truecharts/charts/compare/qdirstat-3.0.2...qdirstat-3.0.3) (2022-12-09) - - - - -## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) - - - - -## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) - - - - -## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) - - - - -## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) - - - - -## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) - - - - -## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) - - - - -## [qdirstat-3.0.2](https://github.com/truecharts/charts/compare/qdirstat-3.0.1...qdirstat-3.0.2) (2022-11-30) - - diff --git a/stable/qdirstat/3.0.9/Chart.yaml b/stable/qdirstat/3.0.9/Chart.yaml deleted file mode 100644 index e19d4f727d0..00000000000 --- a/stable/qdirstat/3.0.9/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "23.01.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: QDirStat is a graphical application to show where your disk space has gone and to help you to clean it up. -home: https://truecharts.org/charts/stable/qdirstat -icon: https://truecharts.org/img/hotlink-ok/chart-icons/qdirstat.png -keywords: - - stats - - qdirstat -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: qdirstat -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/qdirstat - - https://github.com/jlesage/docker-qdirstat - - https://hub.docker.com/r/jlesage/qdirstat/ -type: application -version: 3.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/qdirstat/3.0.9/app-changelog.md b/stable/qdirstat/3.0.9/app-changelog.md deleted file mode 100644 index fb4b584d8d6..00000000000 --- a/stable/qdirstat/3.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [qdirstat-3.0.9](https://github.com/truecharts/charts/compare/qdirstat-3.0.8...qdirstat-3.0.9) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/qdirstat to v23.01.1 - - \ No newline at end of file diff --git a/stable/qdirstat/3.0.9/app-readme.md b/stable/qdirstat/3.0.9/app-readme.md deleted file mode 100644 index beedff99181..00000000000 --- a/stable/qdirstat/3.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -QDirStat is a graphical application to show where your disk space has gone and to help you to clean it up. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/qdirstat](https://truecharts.org/charts/stable/qdirstat) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/qdirstat/3.0.9/questions.yaml b/stable/qdirstat/3.0.9/questions.yaml deleted file mode 100644 index 92c4ff7ca1a..00000000000 --- a/stable/qdirstat/3.0.9/questions.yaml +++ /dev/null @@ -1,2013 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - # Portal - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: qdirstat - group: "App Configuration" - label: "QDirStat Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10262 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10263 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage" - description: "Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/qinglong/4.0.14/CHANGELOG.md b/stable/qinglong/4.0.14/CHANGELOG.md deleted file mode 100644 index fb97acaeabc..00000000000 --- a/stable/qinglong/4.0.14/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [qinglong-4.0.14](https://github.com/truecharts/charts/compare/qinglong-4.0.13...qinglong-4.0.14) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/qinglong to v2.15.5 - - - - -## [qinglong-4.0.13](https://github.com/truecharts/charts/compare/qinglong-4.0.12...qinglong-4.0.13) (2022-12-30) - -### Chore - -- update container image tccr.io/truecharts/qinglong to v2.15.4 - - - - -## [qinglong-4.0.12](https://github.com/truecharts/charts/compare/qinglong-4.0.11...qinglong-4.0.12) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [qinglong-4.0.11](https://github.com/truecharts/charts/compare/qinglong-4.0.10...qinglong-4.0.11) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [qinglong-4.0.10](https://github.com/truecharts/charts/compare/qinglong-4.0.9...qinglong-4.0.10) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [qinglong-4.0.9](https://github.com/truecharts/charts/compare/qinglong-4.0.8...qinglong-4.0.9) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [qinglong-4.0.8](https://github.com/truecharts/charts/compare/qinglong-4.0.7...qinglong-4.0.8) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [qinglong-4.0.7](https://github.com/truecharts/charts/compare/qinglong-4.0.6...qinglong-4.0.7) (2022-12-11) - -### Chore - -- update container image tccr.io/truecharts/qinglong to v2.15.3 - - - - -## [qinglong-4.0.6](https://github.com/truecharts/charts/compare/qinglong-4.0.5...qinglong-4.0.6) (2022-12-02) - -### Chore - -- update container image tccr.io/truecharts/qinglong to v2.15.2 - - - - -## [qinglong-4.0.5](https://github.com/truecharts/charts/compare/qinglong-4.0.4...qinglong-4.0.5) (2022-11-30) - - - - -## [qinglong-4.0.5](https://github.com/truecharts/charts/compare/qinglong-4.0.4...qinglong-4.0.5) (2022-11-30) - - - - -## [qinglong-4.0.5](https://github.com/truecharts/charts/compare/qinglong-4.0.4...qinglong-4.0.5) (2022-11-30) - diff --git a/stable/qinglong/4.0.14/Chart.yaml b/stable/qinglong/4.0.14/Chart.yaml deleted file mode 100644 index 8c39668b822..00000000000 --- a/stable/qinglong/4.0.14/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: qinglong -version: 4.0.14 -appVersion: "2.15.5" -description: A timed task management panel that supports typescript, javaScript, python3, and shell -type: application -deprecated: false -home: https://truecharts.org/charts/stable/qinglong -icon: https://truecharts.org/img/hotlink-ok/chart-icons/qinglong.png -keywords: - - qinglong - - task -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/qinglong - - https://hub.docker.com/r/whyour/qinglong -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - # condition: -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - cloud - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/qinglong/4.0.14/app-changelog.md b/stable/qinglong/4.0.14/app-changelog.md deleted file mode 100644 index 205f2aa639a..00000000000 --- a/stable/qinglong/4.0.14/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [qinglong-4.0.14](https://github.com/truecharts/charts/compare/qinglong-4.0.13...qinglong-4.0.14) (2023-01-10) - -### Chore - -- update container image tccr.io/truecharts/qinglong to v2.15.5 - - \ No newline at end of file diff --git a/stable/qinglong/4.0.14/app-readme.md b/stable/qinglong/4.0.14/app-readme.md deleted file mode 100644 index 762f8a762ca..00000000000 --- a/stable/qinglong/4.0.14/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A timed task management panel that supports typescript, javaScript, python3, and shell - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/qinglong](https://truecharts.org/charts/stable/qinglong) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/qinglong/4.0.14/questions.yaml b/stable/qinglong/4.0.14/questions.yaml deleted file mode 100644 index 95d12f397f1..00000000000 --- a/stable/qinglong/4.0.14/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10176 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/qinglong/4.0.15/CHANGELOG.md b/stable/qinglong/4.0.15/CHANGELOG.md new file mode 100644 index 00000000000..4e77364c16c --- /dev/null +++ b/stable/qinglong/4.0.15/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [qinglong-4.0.15](https://github.com/truecharts/charts/compare/qinglong-4.0.14...qinglong-4.0.15) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [qinglong-4.0.14](https://github.com/truecharts/charts/compare/qinglong-4.0.13...qinglong-4.0.14) (2023-01-10) + +### Chore + +- update container image tccr.io/truecharts/qinglong to v2.15.5 + + + + +## [qinglong-4.0.13](https://github.com/truecharts/charts/compare/qinglong-4.0.12...qinglong-4.0.13) (2022-12-30) + +### Chore + +- update container image tccr.io/truecharts/qinglong to v2.15.4 + + + + +## [qinglong-4.0.12](https://github.com/truecharts/charts/compare/qinglong-4.0.11...qinglong-4.0.12) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [qinglong-4.0.11](https://github.com/truecharts/charts/compare/qinglong-4.0.10...qinglong-4.0.11) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [qinglong-4.0.10](https://github.com/truecharts/charts/compare/qinglong-4.0.9...qinglong-4.0.10) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [qinglong-4.0.9](https://github.com/truecharts/charts/compare/qinglong-4.0.8...qinglong-4.0.9) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [qinglong-4.0.8](https://github.com/truecharts/charts/compare/qinglong-4.0.7...qinglong-4.0.8) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [qinglong-4.0.7](https://github.com/truecharts/charts/compare/qinglong-4.0.6...qinglong-4.0.7) (2022-12-11) + +### Chore + +- update container image tccr.io/truecharts/qinglong to v2.15.3 + + + + +## [qinglong-4.0.6](https://github.com/truecharts/charts/compare/qinglong-4.0.5...qinglong-4.0.6) (2022-12-02) + +### Chore + +- update container image tccr.io/truecharts/qinglong to v2.15.2 + + + + +## [qinglong-4.0.5](https://github.com/truecharts/charts/compare/qinglong-4.0.4...qinglong-4.0.5) (2022-11-30) + + diff --git a/stable/qinglong/4.0.15/Chart.yaml b/stable/qinglong/4.0.15/Chart.yaml new file mode 100644 index 00000000000..769d0771113 --- /dev/null +++ b/stable/qinglong/4.0.15/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: qinglong +version: 4.0.15 +appVersion: "2.15.5" +description: A timed task management panel that supports typescript, javaScript, python3, and shell +type: application +deprecated: false +home: https://truecharts.org/charts/stable/qinglong +icon: https://truecharts.org/img/hotlink-ok/chart-icons/qinglong.png +keywords: + - qinglong + - task +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/qinglong + - https://hub.docker.com/whyour/qinglong +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + # condition: +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - cloud + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/tsmuxer/3.0.9/README.md b/stable/qinglong/4.0.15/README.md similarity index 100% rename from stable/tsmuxer/3.0.9/README.md rename to stable/qinglong/4.0.15/README.md diff --git a/stable/qinglong/4.0.15/app-changelog.md b/stable/qinglong/4.0.15/app-changelog.md new file mode 100644 index 00000000000..033845334e1 --- /dev/null +++ b/stable/qinglong/4.0.15/app-changelog.md @@ -0,0 +1,9 @@ + + +## [qinglong-4.0.15](https://github.com/truecharts/charts/compare/qinglong-4.0.14...qinglong-4.0.15) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/qinglong/4.0.15/app-readme.md b/stable/qinglong/4.0.15/app-readme.md new file mode 100644 index 00000000000..ad4a2bad9a5 --- /dev/null +++ b/stable/qinglong/4.0.15/app-readme.md @@ -0,0 +1,8 @@ +A timed task management panel that supports typescript, javaScript, python3, and shell + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/qinglong](https://truecharts.org/charts/stable/qinglong) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/typecho/7.0.17/charts/common-11.1.2.tgz b/stable/qinglong/4.0.15/charts/common-11.1.2.tgz similarity index 100% rename from stable/typecho/7.0.17/charts/common-11.1.2.tgz rename to stable/qinglong/4.0.15/charts/common-11.1.2.tgz diff --git a/stable/qinglong/4.0.14/ix_values.yaml b/stable/qinglong/4.0.15/ix_values.yaml similarity index 100% rename from stable/qinglong/4.0.14/ix_values.yaml rename to stable/qinglong/4.0.15/ix_values.yaml diff --git a/stable/qinglong/4.0.15/questions.yaml b/stable/qinglong/4.0.15/questions.yaml new file mode 100644 index 00000000000..0ac78c709d6 --- /dev/null +++ b/stable/qinglong/4.0.15/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10176 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/watchyourlan/3.1.9/templates/common.yaml b/stable/qinglong/4.0.15/templates/common.yaml similarity index 100% rename from stable/watchyourlan/3.1.9/templates/common.yaml rename to stable/qinglong/4.0.15/templates/common.yaml diff --git a/stable/typecho/7.0.17/values.yaml b/stable/qinglong/4.0.15/values.yaml similarity index 100% rename from stable/typecho/7.0.17/values.yaml rename to stable/qinglong/4.0.15/values.yaml diff --git a/stable/rcon-webadmin/3.0.10/CHANGELOG.md b/stable/rcon-webadmin/3.0.10/CHANGELOG.md deleted file mode 100644 index 572c03be5ae..00000000000 --- a/stable/rcon-webadmin/3.0.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [rcon-webadmin-3.0.10](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.9...rcon-webadmin-3.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [rcon-webadmin-3.0.9](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.8...rcon-webadmin-3.0.9) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [rcon-webadmin-3.0.8](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.7...rcon-webadmin-3.0.8) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [rcon-webadmin-3.0.7](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.6...rcon-webadmin-3.0.7) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [rcon-webadmin-3.0.6](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.5...rcon-webadmin-3.0.6) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - - - -## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) - - diff --git a/stable/rcon-webadmin/3.0.10/Chart.yaml b/stable/rcon-webadmin/3.0.10/Chart.yaml deleted file mode 100644 index f49c3e48b94..00000000000 --- a/stable/rcon-webadmin/3.0.10/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "0.14.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Out of the box, RCON Web Admin can check users for high ping, VAC status, or filter the chat for you around the clock." -home: https://truecharts.org/charts/stable/rcon-webadmin -icon: https://truecharts.org/img/hotlink-ok/chart-icons/rcon-webadmin.png -keywords: - - rcon-webadmin - - GameServers - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: rcon-webadmin -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/rcon-webadmin - - https://github.com/rcon-web-admin/rcon-web-admin - - https://hub.docker.com/r/itzg/rcon/ -type: application -version: 3.0.10 -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U - truecharts.org/catagories: | - - GameServers - - Tools-Utilities diff --git a/stable/rcon-webadmin/3.0.10/app-changelog.md b/stable/rcon-webadmin/3.0.10/app-changelog.md deleted file mode 100644 index c8796d95210..00000000000 --- a/stable/rcon-webadmin/3.0.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [rcon-webadmin-3.0.10](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.9...rcon-webadmin-3.0.10) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/rcon-webadmin/3.0.10/app-readme.md b/stable/rcon-webadmin/3.0.10/app-readme.md deleted file mode 100644 index 60fa144d3da..00000000000 --- a/stable/rcon-webadmin/3.0.10/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Out of the box, RCON Web Admin can check users for high ping, VAC status, or filter the chat for you around the clock. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/rcon-webadmin](https://truecharts.org/charts/stable/rcon-webadmin) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/rcon-webadmin/3.0.10/questions.yaml b/stable/rcon-webadmin/3.0.10/questions.yaml deleted file mode 100644 index c6df15b55b7..00000000000 --- a/stable/rcon-webadmin/3.0.10/questions.yaml +++ /dev/null @@ -1,2112 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: App Configuration - label: Image Secrets - schema: - additional_attrs: true - type: dict - attrs: - - variable: RWA_USERNAME - label: RWA USERNAME - description: Sets the initial user's username for the web interface. - schema: - type: string - default: "" - - variable: RWA_PASSWORD - label: RWA PASSWORD - description: Sets the initial user's password for the web interface. - schema: - type: string - default: "" - private: true - required: true - - variable: RWA_RCON_PASSWORD - label: RWA RCON PASSWORD - description: The password for the initial RCON server to control - schema: - type: string - default: "" - private: true - - variable: rcon - group: App Configuration - label: RCON Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: rwa_env - label: RWA ENV - description: Enables configuration by environment variables. - schema: - type: boolean - default: false - - variable: rwa_admin - label: RWA ADMIN - description: Sets the initial user as an admin - schema: - type: boolean - default: true - - variable: rwa_web_rcon - label: RWA WEB RCON - description: Enables web rcon if supported by the game server - schema: - type: boolean - default: false - - variable: rwa_read_only_widget_options - label: RWA READ ONLY WIDGET OPTIONS - description: Prevent the initial user changing options in the widget options tab - schema: - type: boolean - default: false - - variable: rwa_game - label: RWA GAME - description: The initial game you wish to control. - schema: - type: string - default: minecraft - - variable: rwa_server_name - label: RWA SERVER NAME - description: The display name of the initial server - schema: - type: string - default: minecraft - - variable: rwa_rcon_host - label: RWA RCON HOST - description: The initial RCON server IP to control - schema: - type: string - default: "" - - variable: rwa_rcon_port - label: RWA_RCON_PORT - description: The port number of the initial RCON server to control - schema: - type: int - default: 25575 - - variable: rwa_websocket_url_ssl - label: RWA WEBSOCKET URL SSL - description: SSL WebSocket URL - schema: - type: string - default: "" - - variable: rwa_websocket_url - label: RWA WEBSOCKET URL - description: WebSocket URL - schema: - type: string - default: "" - - variable: rwa_restrict_commands - label: RWA RESTRICT COMMANDS - description: Prevent the initial user user executing these commands - schema: - type: list - default: [] - items: - - variable: command - label: command - schema: - type: string - required: true - default: "" - - variable: rwa_restrict_widgets - label: RWA RESTRICT WIDGETS - description: Hide this list of widgets from the initial user - schema: - type: list - default: [] - items: - - variable: widget - label: widget - schema: - type: string - required: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 4326 - required: true - - variable: websocketaccess - label: Web Socket Access service - description: Container Port 4327 - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: websocketaccess - label: Web Socket Access Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 4327 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: db - label: App DB Storage - description: Stores the Application DB. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: websocketaccess - label: "WS Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/rcon-webadmin/3.0.11/CHANGELOG.md b/stable/rcon-webadmin/3.0.11/CHANGELOG.md new file mode 100644 index 00000000000..e9f7a8276a2 --- /dev/null +++ b/stable/rcon-webadmin/3.0.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [rcon-webadmin-3.0.11](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.10...rcon-webadmin-3.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [rcon-webadmin-3.0.10](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.9...rcon-webadmin-3.0.10) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [rcon-webadmin-3.0.9](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.8...rcon-webadmin-3.0.9) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [rcon-webadmin-3.0.8](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.7...rcon-webadmin-3.0.8) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [rcon-webadmin-3.0.7](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.6...rcon-webadmin-3.0.7) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [rcon-webadmin-3.0.6](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.5...rcon-webadmin-3.0.6) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) + + + + +## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) + + + + +## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) + + + + +## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) + + + + +## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) + + + + +## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) + + + + +## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) + + + + +## [rcon-webadmin-3.0.5](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.4...rcon-webadmin-3.0.5) (2022-11-30) + + + diff --git a/stable/rcon-webadmin/3.0.11/Chart.yaml b/stable/rcon-webadmin/3.0.11/Chart.yaml new file mode 100644 index 00000000000..9e9c60eca07 --- /dev/null +++ b/stable/rcon-webadmin/3.0.11/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "0.14.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Out of the box, RCON Web Admin can check users for high ping, VAC status, or filter the chat for you around the clock." +home: https://truecharts.org/charts/stable/rcon-webadmin +icon: https://truecharts.org/img/hotlink-ok/chart-icons/rcon-webadmin.png +keywords: + - rcon-webadmin + - GameServers + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: rcon-webadmin +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/rcon-webadmin + - https://hub.docker.com/itzg/rcon + - https://github.com/rcon-web-admin/rcon-web-admin +type: application +version: 3.0.11 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U + truecharts.org/catagories: | + - GameServers + - Tools-Utilities diff --git a/stable/typecho/7.0.17/README.md b/stable/rcon-webadmin/3.0.11/README.md similarity index 100% rename from stable/typecho/7.0.17/README.md rename to stable/rcon-webadmin/3.0.11/README.md diff --git a/stable/rcon-webadmin/3.0.11/app-changelog.md b/stable/rcon-webadmin/3.0.11/app-changelog.md new file mode 100644 index 00000000000..6fe5a77bb88 --- /dev/null +++ b/stable/rcon-webadmin/3.0.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [rcon-webadmin-3.0.11](https://github.com/truecharts/charts/compare/rcon-webadmin-3.0.10...rcon-webadmin-3.0.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/rcon-webadmin/3.0.11/app-readme.md b/stable/rcon-webadmin/3.0.11/app-readme.md new file mode 100644 index 00000000000..0774707f059 --- /dev/null +++ b/stable/rcon-webadmin/3.0.11/app-readme.md @@ -0,0 +1,8 @@ +Out of the box, RCON Web Admin can check users for high ping, VAC status, or filter the chat for you around the clock. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/rcon-webadmin](https://truecharts.org/charts/stable/rcon-webadmin) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/unpackerr/8.0.8/charts/common-11.1.2.tgz b/stable/rcon-webadmin/3.0.11/charts/common-11.1.2.tgz similarity index 100% rename from stable/unpackerr/8.0.8/charts/common-11.1.2.tgz rename to stable/rcon-webadmin/3.0.11/charts/common-11.1.2.tgz diff --git a/stable/rcon-webadmin/3.0.10/ix_values.yaml b/stable/rcon-webadmin/3.0.11/ix_values.yaml similarity index 100% rename from stable/rcon-webadmin/3.0.10/ix_values.yaml rename to stable/rcon-webadmin/3.0.11/ix_values.yaml diff --git a/stable/rcon-webadmin/3.0.11/questions.yaml b/stable/rcon-webadmin/3.0.11/questions.yaml new file mode 100644 index 00000000000..501b10f97e2 --- /dev/null +++ b/stable/rcon-webadmin/3.0.11/questions.yaml @@ -0,0 +1,2174 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: App Configuration + label: Image Secrets + schema: + additional_attrs: true + type: dict + attrs: + - variable: RWA_USERNAME + label: RWA USERNAME + description: Sets the initial user's username for the web interface. + schema: + type: string + default: "" + - variable: RWA_PASSWORD + label: RWA PASSWORD + description: Sets the initial user's password for the web interface. + schema: + type: string + default: "" + private: true + required: true + - variable: RWA_RCON_PASSWORD + label: RWA RCON PASSWORD + description: The password for the initial RCON server to control + schema: + type: string + default: "" + private: true + - variable: rcon + group: App Configuration + label: RCON Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: rwa_env + label: RWA ENV + description: Enables configuration by environment variables. + schema: + type: boolean + default: false + - variable: rwa_admin + label: RWA ADMIN + description: Sets the initial user as an admin + schema: + type: boolean + default: true + - variable: rwa_web_rcon + label: RWA WEB RCON + description: Enables web rcon if supported by the game server + schema: + type: boolean + default: false + - variable: rwa_read_only_widget_options + label: RWA READ ONLY WIDGET OPTIONS + description: Prevent the initial user changing options in the widget options tab + schema: + type: boolean + default: false + - variable: rwa_game + label: RWA GAME + description: The initial game you wish to control. + schema: + type: string + default: minecraft + - variable: rwa_server_name + label: RWA SERVER NAME + description: The display name of the initial server + schema: + type: string + default: minecraft + - variable: rwa_rcon_host + label: RWA RCON HOST + description: The initial RCON server IP to control + schema: + type: string + default: "" + - variable: rwa_rcon_port + label: RWA_RCON_PORT + description: The port number of the initial RCON server to control + schema: + type: int + default: 25575 + - variable: rwa_websocket_url_ssl + label: RWA WEBSOCKET URL SSL + description: SSL WebSocket URL + schema: + type: string + default: "" + - variable: rwa_websocket_url + label: RWA WEBSOCKET URL + description: WebSocket URL + schema: + type: string + default: "" + - variable: rwa_restrict_commands + label: RWA RESTRICT COMMANDS + description: Prevent the initial user user executing these commands + schema: + type: list + default: [] + items: + - variable: command + label: command + schema: + type: string + required: true + default: "" + - variable: rwa_restrict_widgets + label: RWA RESTRICT WIDGETS + description: Hide this list of widgets from the initial user + schema: + type: list + default: [] + items: + - variable: widget + label: widget + schema: + type: string + required: true + default: "" + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 4326 + required: true + - variable: websocketaccess + label: Web Socket Access service + description: Container Port 4327 + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: websocketaccess + label: Web Socket Access Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 4327 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: db + label: App DB Storage + description: Stores the Application DB. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: websocketaccess + label: "WS Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 0 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 0 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/rcon-webadmin/3.0.10/templates/common.yaml b/stable/rcon-webadmin/3.0.11/templates/common.yaml similarity index 100% rename from stable/rcon-webadmin/3.0.10/templates/common.yaml rename to stable/rcon-webadmin/3.0.11/templates/common.yaml diff --git a/stable/unpackerr/8.0.8/values.yaml b/stable/rcon-webadmin/3.0.11/values.yaml similarity index 100% rename from stable/unpackerr/8.0.8/values.yaml rename to stable/rcon-webadmin/3.0.11/values.yaml diff --git a/stable/retrobot/3.0.8/CHANGELOG.md b/stable/retrobot/3.0.8/CHANGELOG.md deleted file mode 100644 index 643ce02d75a..00000000000 --- a/stable/retrobot/3.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [retrobot-3.0.8](https://github.com/truecharts/charts/compare/retrobot-3.0.7...retrobot-3.0.8) (2022-12-28) - -### Chore - -- update container image tccr.io/truecharts/retrobot to latest - - - - -## [retrobot-3.0.7](https://github.com/truecharts/charts/compare/retrobot-3.0.6...retrobot-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [retrobot-3.0.6](https://github.com/truecharts/charts/compare/retrobot-3.0.5...retrobot-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [retrobot-3.0.5](https://github.com/truecharts/charts/compare/retrobot-3.0.4...retrobot-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [retrobot-3.0.4](https://github.com/truecharts/charts/compare/retrobot-3.0.3...retrobot-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [retrobot-3.0.3](https://github.com/truecharts/charts/compare/retrobot-3.0.2...retrobot-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) - - - - -## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) - - - - -## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) - - - - -## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) - - - - -## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) - - - - -## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) - - - - -## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) - - - - -## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) - - - diff --git a/stable/retrobot/3.0.8/Chart.yaml b/stable/retrobot/3.0.8/Chart.yaml deleted file mode 100644 index 989ba2d7af4..00000000000 --- a/stable/retrobot/3.0.8/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: A discord bot that allows you to play old nintendo games with your friends over chat. -home: https://truecharts.org/charts/stable/retrobot -icon: https://truecharts.org/img/hotlink-ok/chart-icons/retrobot.png -keywords: - - retrobot - - emulator - - discord -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: retrobot -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/retrobot - - https://github.com/rossimo/retrobot - - https://hub.docker.com/r/rossimo/retrobot -type: application -version: 3.0.8 -annotations: - truecharts.org/catagories: | - - emulator - - games - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/retrobot/3.0.8/app-changelog.md b/stable/retrobot/3.0.8/app-changelog.md deleted file mode 100644 index 7e85f22cb1f..00000000000 --- a/stable/retrobot/3.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [retrobot-3.0.8](https://github.com/truecharts/charts/compare/retrobot-3.0.7...retrobot-3.0.8) (2022-12-28) - -### Chore - -- update container image tccr.io/truecharts/retrobot to latest - - \ No newline at end of file diff --git a/stable/retrobot/3.0.8/app-readme.md b/stable/retrobot/3.0.8/app-readme.md deleted file mode 100644 index 647368525e3..00000000000 --- a/stable/retrobot/3.0.8/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -A discord bot that allows you to play old nintendo games with your friends over chat. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/retrobot](https://truecharts.org/charts/stable/retrobot) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/retrobot/3.0.8/questions.yaml b/stable/retrobot/3.0.8/questions.yaml deleted file mode 100644 index 16e8b0d2062..00000000000 --- a/stable/retrobot/3.0.8/questions.yaml +++ /dev/null @@ -1,1555 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: {} -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: DISCORD_TOKEN - label: Discord Token - description: Sets discord token - schema: - type: string - default: "" - private: true - required: true - - variable: env - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: MAX_WORKERS - label: Max Workers - description: -1 means Retrobot will create a worker thread for each CPU core on the host system. - schema: - type: int - default: -1 - required: true - - variable: MAX_WORKERS_PER_GAME - label: Max Workers Per Game - description: Input assist worker threads to emulate the result of a button press for a game. - schema: - type: int - default: 3 - required: true - - variable: RECORDING_FRAMERATE - label: Recording Framerate - description: Framerate to encode GIFs - schema: - type: int - default: 30 - min: 1 - max: 60 - required: true - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: App Data Storage - description: Stores the Application Data - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/retrobot/3.0.9/CHANGELOG.md b/stable/retrobot/3.0.9/CHANGELOG.md new file mode 100644 index 00000000000..0ec0fcedd9f --- /dev/null +++ b/stable/retrobot/3.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [retrobot-3.0.9](https://github.com/truecharts/charts/compare/retrobot-3.0.8...retrobot-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [retrobot-3.0.8](https://github.com/truecharts/charts/compare/retrobot-3.0.7...retrobot-3.0.8) (2022-12-28) + +### Chore + +- update container image tccr.io/truecharts/retrobot to latest + + + + +## [retrobot-3.0.7](https://github.com/truecharts/charts/compare/retrobot-3.0.6...retrobot-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [retrobot-3.0.6](https://github.com/truecharts/charts/compare/retrobot-3.0.5...retrobot-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [retrobot-3.0.5](https://github.com/truecharts/charts/compare/retrobot-3.0.4...retrobot-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [retrobot-3.0.4](https://github.com/truecharts/charts/compare/retrobot-3.0.3...retrobot-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [retrobot-3.0.3](https://github.com/truecharts/charts/compare/retrobot-3.0.2...retrobot-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) + + + + +## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) + + + + +## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) + + + + +## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) + + + + +## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) + + + + +## [retrobot-3.0.2](https://github.com/truecharts/charts/compare/retrobot-3.0.1...retrobot-3.0.2) (2022-11-30) + + + + diff --git a/stable/retrobot/3.0.9/Chart.yaml b/stable/retrobot/3.0.9/Chart.yaml new file mode 100644 index 00000000000..6c8e24eb2a0 --- /dev/null +++ b/stable/retrobot/3.0.9/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: A discord bot that allows you to play old nintendo games with your friends over chat. +home: https://truecharts.org/charts/stable/retrobot +icon: https://truecharts.org/img/hotlink-ok/chart-icons/retrobot.png +keywords: + - retrobot + - emulator + - discord +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: retrobot +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/retrobot + - https://hub.docker.com/rossimo/retrobot + - https://github.com/rossimo/retrobot +type: application +version: 3.0.9 +annotations: + truecharts.org/catagories: | + - emulator + - games + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/unpackerr/8.0.8/README.md b/stable/retrobot/3.0.9/README.md similarity index 100% rename from stable/unpackerr/8.0.8/README.md rename to stable/retrobot/3.0.9/README.md diff --git a/stable/retrobot/3.0.9/app-changelog.md b/stable/retrobot/3.0.9/app-changelog.md new file mode 100644 index 00000000000..dfc1780b56b --- /dev/null +++ b/stable/retrobot/3.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [retrobot-3.0.9](https://github.com/truecharts/charts/compare/retrobot-3.0.8...retrobot-3.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/retrobot/3.0.9/app-readme.md b/stable/retrobot/3.0.9/app-readme.md new file mode 100644 index 00000000000..2810260cc62 --- /dev/null +++ b/stable/retrobot/3.0.9/app-readme.md @@ -0,0 +1,8 @@ +A discord bot that allows you to play old nintendo games with your friends over chat. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/retrobot](https://truecharts.org/charts/stable/retrobot) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/watchyourlan/3.1.9/charts/common-11.1.2.tgz b/stable/retrobot/3.0.9/charts/common-11.1.2.tgz similarity index 100% rename from stable/watchyourlan/3.1.9/charts/common-11.1.2.tgz rename to stable/retrobot/3.0.9/charts/common-11.1.2.tgz diff --git a/stable/retrobot/3.0.8/ix_values.yaml b/stable/retrobot/3.0.9/ix_values.yaml similarity index 100% rename from stable/retrobot/3.0.8/ix_values.yaml rename to stable/retrobot/3.0.9/ix_values.yaml diff --git a/stable/retrobot/3.0.9/questions.yaml b/stable/retrobot/3.0.9/questions.yaml new file mode 100644 index 00000000000..8103e890b0e --- /dev/null +++ b/stable/retrobot/3.0.9/questions.yaml @@ -0,0 +1,1555 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: {} +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "App Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: DISCORD_TOKEN + label: Discord Token + description: Sets discord token + schema: + type: string + default: "" + private: true + required: true + - variable: env + group: App Configuration + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: MAX_WORKERS + label: Max Workers + description: -1 means Retrobot will create a worker thread for each CPU core on the host system. + schema: + type: int + default: -1 + required: true + - variable: MAX_WORKERS_PER_GAME + label: Max Workers Per Game + description: Input assist worker threads to emulate the result of a button press for a game. + schema: + type: int + default: 3 + required: true + - variable: RECORDING_FRAMERATE + label: Recording Framerate + description: Framerate to encode GIFs + schema: + type: int + default: 30 + min: 1 + max: 60 + required: true + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: App Data Storage + description: Stores the Application Data + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/wekan/8.0.16/templates/common.yaml b/stable/retrobot/3.0.9/templates/common.yaml similarity index 100% rename from stable/wekan/8.0.16/templates/common.yaml rename to stable/retrobot/3.0.9/templates/common.yaml diff --git a/stable/watchyourlan/3.1.9/values.yaml b/stable/retrobot/3.0.9/values.yaml similarity index 100% rename from stable/watchyourlan/3.1.9/values.yaml rename to stable/retrobot/3.0.9/values.yaml diff --git a/stable/rsshub/6.0.29/CHANGELOG.md b/stable/rsshub/6.0.29/CHANGELOG.md deleted file mode 100644 index 7799229850e..00000000000 --- a/stable/rsshub/6.0.29/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [rsshub-6.0.29](https://github.com/truecharts/charts/compare/rsshub-6.0.28...rsshub-6.0.29) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/rsshub to latest - - - - -## [rsshub-6.0.28](https://github.com/truecharts/charts/compare/rsshub-6.0.27...rsshub-6.0.28) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [rsshub-6.0.27](https://github.com/truecharts/charts/compare/rsshub-6.0.26...rsshub-6.0.27) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/rsshub to latest - - - - -## [rsshub-6.0.26](https://github.com/truecharts/charts/compare/rsshub-6.0.25...rsshub-6.0.26) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [rsshub-6.0.25](https://github.com/truecharts/charts/compare/rsshub-6.0.24...rsshub-6.0.25) (2023-01-13) - -### Chore - -- update container image tccr.io/truecharts/rsshub to latest - - - - -## [rsshub-6.0.24](https://github.com/truecharts/charts/compare/rsshub-6.0.23...rsshub-6.0.24) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/rsshub to latest - - - - -## [rsshub-6.0.23](https://github.com/truecharts/charts/compare/rsshub-6.0.22...rsshub-6.0.23) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [rsshub-6.0.22](https://github.com/truecharts/charts/compare/rsshub-6.0.21...rsshub-6.0.22) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/rsshub to latest - - - - -## [rsshub-6.0.21](https://github.com/truecharts/charts/compare/rsshub-6.0.20...rsshub-6.0.21) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [rsshub-6.0.20](https://github.com/truecharts/charts/compare/rsshub-6.0.19...rsshub-6.0.20) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - update container image tccr.io/truecharts/rsshub to latest - - - - -## [rsshub-6.0.19](https://github.com/truecharts/charts/compare/rsshub-6.0.18...rsshub-6.0.19) (2022-12-26) - diff --git a/stable/rsshub/6.0.29/Chart.yaml b/stable/rsshub/6.0.29/Chart.yaml deleted file mode 100644 index b211d636fe3..00000000000 --- a/stable/rsshub/6.0.29/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -kubeVersion: ">=1.16.0-0" -name: rsshub -version: 6.0.29 -appVersion: "latest" -description: RSSHub can generate RSS feeds from pretty much everything -type: application -deprecated: false -home: https://truecharts.org/charts/stable/rsshub -icon: https://truecharts.org/img/hotlink-ok/chart-icons/rsshub.png -keywords: - - rsshub - - rss -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/rsshub - - https://docs.rsshub.app/en/install/ - - https://github.com/DIYgod/RSSHub -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/rsshub/6.0.29/app-changelog.md b/stable/rsshub/6.0.29/app-changelog.md deleted file mode 100644 index af389a5fc77..00000000000 --- a/stable/rsshub/6.0.29/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [rsshub-6.0.29](https://github.com/truecharts/charts/compare/rsshub-6.0.28...rsshub-6.0.29) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/rsshub to latest - - \ No newline at end of file diff --git a/stable/rsshub/6.0.30/CHANGELOG.md b/stable/rsshub/6.0.30/CHANGELOG.md new file mode 100644 index 00000000000..cabf555fd22 --- /dev/null +++ b/stable/rsshub/6.0.30/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [rsshub-6.0.30](https://github.com/truecharts/charts/compare/rsshub-6.0.29...rsshub-6.0.30) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [rsshub-6.0.29](https://github.com/truecharts/charts/compare/rsshub-6.0.28...rsshub-6.0.29) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/rsshub to latest + + + + +## [rsshub-6.0.28](https://github.com/truecharts/charts/compare/rsshub-6.0.27...rsshub-6.0.28) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [rsshub-6.0.27](https://github.com/truecharts/charts/compare/rsshub-6.0.26...rsshub-6.0.27) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/rsshub to latest + + + + +## [rsshub-6.0.26](https://github.com/truecharts/charts/compare/rsshub-6.0.25...rsshub-6.0.26) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [rsshub-6.0.25](https://github.com/truecharts/charts/compare/rsshub-6.0.24...rsshub-6.0.25) (2023-01-13) + +### Chore + +- update container image tccr.io/truecharts/rsshub to latest + + + + +## [rsshub-6.0.24](https://github.com/truecharts/charts/compare/rsshub-6.0.23...rsshub-6.0.24) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/rsshub to latest + + + + +## [rsshub-6.0.23](https://github.com/truecharts/charts/compare/rsshub-6.0.22...rsshub-6.0.23) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [rsshub-6.0.22](https://github.com/truecharts/charts/compare/rsshub-6.0.21...rsshub-6.0.22) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/rsshub to latest + + + + +## [rsshub-6.0.21](https://github.com/truecharts/charts/compare/rsshub-6.0.20...rsshub-6.0.21) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [rsshub-6.0.20](https://github.com/truecharts/charts/compare/rsshub-6.0.19...rsshub-6.0.20) (2022-12-27) + +### Chore diff --git a/stable/rsshub/6.0.30/Chart.yaml b/stable/rsshub/6.0.30/Chart.yaml new file mode 100644 index 00000000000..8d4c1c8ec04 --- /dev/null +++ b/stable/rsshub/6.0.30/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: rsshub +version: 6.0.30 +appVersion: "latest" +description: RSSHub can generate RSS feeds from pretty much everything +type: application +deprecated: false +home: https://truecharts.org/charts/stable/rsshub +icon: https://truecharts.org/img/hotlink-ok/chart-icons/rsshub.png +keywords: + - rsshub + - rss +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/rsshub + - https://hub.docker.com/diygod/rsshub + - https://docs.rsshub.app/en/install/ + - https://github.com/DIYgod/RSSHub +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/watchyourlan/3.1.9/README.md b/stable/rsshub/6.0.30/README.md similarity index 100% rename from stable/watchyourlan/3.1.9/README.md rename to stable/rsshub/6.0.30/README.md diff --git a/stable/rsshub/6.0.30/app-changelog.md b/stable/rsshub/6.0.30/app-changelog.md new file mode 100644 index 00000000000..21fd53f0019 --- /dev/null +++ b/stable/rsshub/6.0.30/app-changelog.md @@ -0,0 +1,9 @@ + + +## [rsshub-6.0.30](https://github.com/truecharts/charts/compare/rsshub-6.0.29...rsshub-6.0.30) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/rsshub/6.0.29/app-readme.md b/stable/rsshub/6.0.30/app-readme.md similarity index 100% rename from stable/rsshub/6.0.29/app-readme.md rename to stable/rsshub/6.0.30/app-readme.md diff --git a/stable/wbo/3.0.0/charts/common-11.1.2.tgz b/stable/rsshub/6.0.30/charts/common-11.1.2.tgz similarity index 100% rename from stable/wbo/3.0.0/charts/common-11.1.2.tgz rename to stable/rsshub/6.0.30/charts/common-11.1.2.tgz diff --git a/stable/weblate/7.0.21/charts/redis-5.0.29.tgz b/stable/rsshub/6.0.30/charts/redis-5.0.29.tgz similarity index 100% rename from stable/weblate/7.0.21/charts/redis-5.0.29.tgz rename to stable/rsshub/6.0.30/charts/redis-5.0.29.tgz diff --git a/stable/rsshub/6.0.29/ix_values.yaml b/stable/rsshub/6.0.30/ix_values.yaml similarity index 100% rename from stable/rsshub/6.0.29/ix_values.yaml rename to stable/rsshub/6.0.30/ix_values.yaml diff --git a/stable/rsshub/6.0.29/questions.yaml b/stable/rsshub/6.0.30/questions.yaml similarity index 100% rename from stable/rsshub/6.0.29/questions.yaml rename to stable/rsshub/6.0.30/questions.yaml diff --git a/stable/ztcuui-aio/3.0.7/templates/common.yaml b/stable/rsshub/6.0.30/templates/common.yaml similarity index 100% rename from stable/ztcuui-aio/3.0.7/templates/common.yaml rename to stable/rsshub/6.0.30/templates/common.yaml diff --git a/stable/wbo/3.0.0/values.yaml b/stable/rsshub/6.0.30/values.yaml similarity index 100% rename from stable/wbo/3.0.0/values.yaml rename to stable/rsshub/6.0.30/values.yaml diff --git a/stable/sickgear/6.0.0/CHANGELOG.md b/stable/sickgear/6.0.0/CHANGELOG.md deleted file mode 100644 index 6f1ae4fd364..00000000000 --- a/stable/sickgear/6.0.0/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [sickgear-6.0.0](https://github.com/truecharts/charts/compare/sickgear-5.0.7...sickgear-6.0.0) (2023-01-14) - -### Fix - -- move to official image ([#6350](https://github.com/truecharts/charts/issues/6350)) - - - - -## [sickgear-5.0.7](https://github.com/truecharts/charts/compare/sickgear-5.0.6...sickgear-5.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [sickgear-5.0.6](https://github.com/truecharts/charts/compare/sickgear-5.0.5...sickgear-5.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [sickgear-5.0.5](https://github.com/truecharts/charts/compare/sickgear-5.0.4...sickgear-5.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [sickgear-5.0.4](https://github.com/truecharts/charts/compare/sickgear-5.0.3...sickgear-5.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [sickgear-5.0.3](https://github.com/truecharts/charts/compare/sickgear-5.0.2...sickgear-5.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) - - - - -## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) - - - - -## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) - - - - -## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) - - - - -## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) - - - - -## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) - - - - -## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) - - - - -## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) - - - diff --git a/stable/sickgear/6.0.0/Chart.yaml b/stable/sickgear/6.0.0/Chart.yaml deleted file mode 100644 index 0ccaf240597..00000000000 --- a/stable/sickgear/6.0.0/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more -home: https://truecharts.org/charts/stable/sickgear -icon: https://truecharts.org/img/hotlink-ok/chart-icons/sickgear.png -keywords: - - sickgear - - manager - - tv - - shows -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: sickgear -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/sickgear - - https://github.com/SickGear/SickGear -type: application -version: 6.0.0 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/sickgear/6.0.0/app-changelog.md b/stable/sickgear/6.0.0/app-changelog.md deleted file mode 100644 index 6ca82044b65..00000000000 --- a/stable/sickgear/6.0.0/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [sickgear-6.0.0](https://github.com/truecharts/charts/compare/sickgear-5.0.7...sickgear-6.0.0) (2023-01-14) - -### Fix - -- move to official image ([#6350](https://github.com/truecharts/charts/issues/6350)) - - \ No newline at end of file diff --git a/stable/sickgear/6.0.0/app-readme.md b/stable/sickgear/6.0.0/app-readme.md deleted file mode 100644 index de58f53a301..00000000000 --- a/stable/sickgear/6.0.0/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/sickgear](https://truecharts.org/charts/stable/sickgear) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/sickgear/6.0.0/questions.yaml b/stable/sickgear/6.0.0/questions.yaml deleted file mode 100644 index 8087c7e252e..00000000000 --- a/stable/sickgear/6.0.0/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10066 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/sickgear/6.0.1/CHANGELOG.md b/stable/sickgear/6.0.1/CHANGELOG.md new file mode 100644 index 00000000000..bdd3449a17f --- /dev/null +++ b/stable/sickgear/6.0.1/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [sickgear-6.0.1](https://github.com/truecharts/charts/compare/sickgear-6.0.0...sickgear-6.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [sickgear-6.0.0](https://github.com/truecharts/charts/compare/sickgear-5.0.7...sickgear-6.0.0) (2023-01-14) + +### Fix + +- move to official image ([#6350](https://github.com/truecharts/charts/issues/6350)) + + + + +## [sickgear-5.0.7](https://github.com/truecharts/charts/compare/sickgear-5.0.6...sickgear-5.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [sickgear-5.0.6](https://github.com/truecharts/charts/compare/sickgear-5.0.5...sickgear-5.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [sickgear-5.0.5](https://github.com/truecharts/charts/compare/sickgear-5.0.4...sickgear-5.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [sickgear-5.0.4](https://github.com/truecharts/charts/compare/sickgear-5.0.3...sickgear-5.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [sickgear-5.0.3](https://github.com/truecharts/charts/compare/sickgear-5.0.2...sickgear-5.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) + + + + +## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) + + + + +## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) + + + + +## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) + + + + +## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) + + + + +## [sickgear-5.0.2](https://github.com/truecharts/charts/compare/sickgear-5.0.1...sickgear-5.0.2) (2022-11-30) + + + + diff --git a/stable/sickgear/6.0.1/Chart.yaml b/stable/sickgear/6.0.1/Chart.yaml new file mode 100644 index 00000000000..dd72d55ede3 --- /dev/null +++ b/stable/sickgear/6.0.1/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more +home: https://truecharts.org/charts/stable/sickgear +icon: https://truecharts.org/img/hotlink-ok/chart-icons/sickgear.png +keywords: + - sickgear + - manager + - tv + - shows +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: sickgear +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/sickgear + - https://hub.docker.com/sickgear/sickgear + - https://github.com/SickGear/SickGear +type: application +version: 6.0.1 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/weblate/7.0.21/README.md b/stable/sickgear/6.0.1/README.md similarity index 100% rename from stable/weblate/7.0.21/README.md rename to stable/sickgear/6.0.1/README.md diff --git a/stable/sickgear/6.0.1/app-changelog.md b/stable/sickgear/6.0.1/app-changelog.md new file mode 100644 index 00000000000..92daf5102d0 --- /dev/null +++ b/stable/sickgear/6.0.1/app-changelog.md @@ -0,0 +1,9 @@ + + +## [sickgear-6.0.1](https://github.com/truecharts/charts/compare/sickgear-6.0.0...sickgear-6.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/sickgear/6.0.1/app-readme.md b/stable/sickgear/6.0.1/app-readme.md new file mode 100644 index 00000000000..bf843cb2f04 --- /dev/null +++ b/stable/sickgear/6.0.1/app-readme.md @@ -0,0 +1,8 @@ +Provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/sickgear](https://truecharts.org/charts/stable/sickgear) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/weblate/7.0.21/charts/common-11.1.2.tgz b/stable/sickgear/6.0.1/charts/common-11.1.2.tgz similarity index 100% rename from stable/weblate/7.0.21/charts/common-11.1.2.tgz rename to stable/sickgear/6.0.1/charts/common-11.1.2.tgz diff --git a/stable/sickgear/6.0.0/ix_values.yaml b/stable/sickgear/6.0.1/ix_values.yaml similarity index 100% rename from stable/sickgear/6.0.0/ix_values.yaml rename to stable/sickgear/6.0.1/ix_values.yaml diff --git a/stable/sickgear/6.0.1/questions.yaml b/stable/sickgear/6.0.1/questions.yaml new file mode 100644 index 00000000000..d41248fb160 --- /dev/null +++ b/stable/sickgear/6.0.1/questions.yaml @@ -0,0 +1,1870 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10066 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/sickgear/6.0.1/templates/common.yaml b/stable/sickgear/6.0.1/templates/common.yaml new file mode 100644 index 00000000000..76759c7a0c9 --- /dev/null +++ b/stable/sickgear/6.0.1/templates/common.yaml @@ -0,0 +1,2 @@ + +{{ include "tc.common.loader.all" . }} diff --git a/stable/weblate/7.0.21/values.yaml b/stable/sickgear/6.0.1/values.yaml similarity index 100% rename from stable/weblate/7.0.21/values.yaml rename to stable/sickgear/6.0.1/values.yaml diff --git a/stable/snapdrop/4.0.12/CHANGELOG.md b/stable/snapdrop/4.0.12/CHANGELOG.md deleted file mode 100644 index 768d31375fd..00000000000 --- a/stable/snapdrop/4.0.12/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [snapdrop-4.0.12](https://github.com/truecharts/charts/compare/snapdrop-4.0.11...snapdrop-4.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/snapdrop to latest - - - - -## [snapdrop-4.0.11](https://github.com/truecharts/charts/compare/snapdrop-4.0.10...snapdrop-4.0.11) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/snapdrop to latest - - - - -## [snapdrop-4.0.10](https://github.com/truecharts/charts/compare/snapdrop-4.0.9...snapdrop-4.0.10) (2022-12-30) - -### Chore - -- update container image tccr.io/truecharts/snapdrop to latest - - - - -## [snapdrop-4.0.9](https://github.com/truecharts/charts/compare/snapdrop-4.0.8...snapdrop-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [snapdrop-4.0.8](https://github.com/truecharts/charts/compare/snapdrop-4.0.7...snapdrop-4.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [snapdrop-4.0.7](https://github.com/truecharts/charts/compare/snapdrop-4.0.6...snapdrop-4.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [snapdrop-4.0.6](https://github.com/truecharts/charts/compare/snapdrop-4.0.5...snapdrop-4.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [snapdrop-4.0.5](https://github.com/truecharts/charts/compare/snapdrop-4.0.4...snapdrop-4.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [snapdrop-4.0.4](https://github.com/truecharts/charts/compare/snapdrop-4.0.3...snapdrop-4.0.4) (2022-12-02) - - - - -## [snapdrop-4.0.3](https://github.com/truecharts/charts/compare/snapdrop-4.0.2...snapdrop-4.0.3) (2022-11-30) - - - - -## [snapdrop-4.0.3](https://github.com/truecharts/charts/compare/snapdrop-4.0.2...snapdrop-4.0.3) (2022-11-30) - - - - -## [snapdrop-4.0.3](https://github.com/truecharts/charts/compare/snapdrop-4.0.2...snapdrop-4.0.3) (2022-11-30) - - - - -## [snapdrop-4.0.3](https://github.com/truecharts/charts/compare/snapdrop-4.0.2...snapdrop-4.0.3) (2022-11-30) diff --git a/stable/snapdrop/4.0.12/Chart.yaml b/stable/snapdrop/4.0.12/Chart.yaml deleted file mode 100644 index bb4a5593ae3..00000000000 --- a/stable/snapdrop/4.0.12/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop. -home: https://truecharts.org/charts/stable/snapdrop -icon: https://truecharts.org/img/hotlink-ok/chart-icons/snapdrop.png -keywords: - - snapdrop -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: snapdrop -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/snapdrop - - https://github.com/linuxserver/docker-snapdrop -version: 4.0.12 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/snapdrop/4.0.12/app-changelog.md b/stable/snapdrop/4.0.12/app-changelog.md deleted file mode 100644 index a71574e9f51..00000000000 --- a/stable/snapdrop/4.0.12/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [snapdrop-4.0.12](https://github.com/truecharts/charts/compare/snapdrop-4.0.11...snapdrop-4.0.12) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/snapdrop to latest - - \ No newline at end of file diff --git a/stable/snapdrop/4.0.13/CHANGELOG.md b/stable/snapdrop/4.0.13/CHANGELOG.md new file mode 100644 index 00000000000..3e194d9a100 --- /dev/null +++ b/stable/snapdrop/4.0.13/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [snapdrop-4.0.13](https://github.com/truecharts/charts/compare/snapdrop-4.0.12...snapdrop-4.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [snapdrop-4.0.12](https://github.com/truecharts/charts/compare/snapdrop-4.0.11...snapdrop-4.0.12) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/snapdrop to latest + + + + +## [snapdrop-4.0.11](https://github.com/truecharts/charts/compare/snapdrop-4.0.10...snapdrop-4.0.11) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/snapdrop to latest + + + + +## [snapdrop-4.0.10](https://github.com/truecharts/charts/compare/snapdrop-4.0.9...snapdrop-4.0.10) (2022-12-30) + +### Chore + +- update container image tccr.io/truecharts/snapdrop to latest + + + + +## [snapdrop-4.0.9](https://github.com/truecharts/charts/compare/snapdrop-4.0.8...snapdrop-4.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [snapdrop-4.0.8](https://github.com/truecharts/charts/compare/snapdrop-4.0.7...snapdrop-4.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [snapdrop-4.0.7](https://github.com/truecharts/charts/compare/snapdrop-4.0.6...snapdrop-4.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [snapdrop-4.0.6](https://github.com/truecharts/charts/compare/snapdrop-4.0.5...snapdrop-4.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [snapdrop-4.0.5](https://github.com/truecharts/charts/compare/snapdrop-4.0.4...snapdrop-4.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [snapdrop-4.0.4](https://github.com/truecharts/charts/compare/snapdrop-4.0.3...snapdrop-4.0.4) (2022-12-02) + + + + +## [snapdrop-4.0.3](https://github.com/truecharts/charts/compare/snapdrop-4.0.2...snapdrop-4.0.3) (2022-11-30) + + + + +## [snapdrop-4.0.3](https://github.com/truecharts/charts/compare/snapdrop-4.0.2...snapdrop-4.0.3) (2022-11-30) + diff --git a/stable/snapdrop/4.0.13/Chart.yaml b/stable/snapdrop/4.0.13/Chart.yaml new file mode 100644 index 00000000000..ba2f5ed4a5e --- /dev/null +++ b/stable/snapdrop/4.0.13/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop. +home: https://truecharts.org/charts/stable/snapdrop +icon: https://truecharts.org/img/hotlink-ok/chart-icons/snapdrop.png +keywords: + - snapdrop +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: snapdrop +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/snapdrop + - https://hub.docker.com/linuxserver/snapdrop + - https://github.com/linuxserver/docker-snapdrop +version: 4.0.13 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wekan/8.0.16/README.md b/stable/snapdrop/4.0.13/README.md similarity index 100% rename from stable/wekan/8.0.16/README.md rename to stable/snapdrop/4.0.13/README.md diff --git a/stable/snapdrop/4.0.13/app-changelog.md b/stable/snapdrop/4.0.13/app-changelog.md new file mode 100644 index 00000000000..6937dd4b840 --- /dev/null +++ b/stable/snapdrop/4.0.13/app-changelog.md @@ -0,0 +1,9 @@ + + +## [snapdrop-4.0.13](https://github.com/truecharts/charts/compare/snapdrop-4.0.12...snapdrop-4.0.13) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/snapdrop/4.0.12/app-readme.md b/stable/snapdrop/4.0.13/app-readme.md similarity index 100% rename from stable/snapdrop/4.0.12/app-readme.md rename to stable/snapdrop/4.0.13/app-readme.md diff --git a/stable/wekan/8.0.16/charts/common-11.1.2.tgz b/stable/snapdrop/4.0.13/charts/common-11.1.2.tgz similarity index 100% rename from stable/wekan/8.0.16/charts/common-11.1.2.tgz rename to stable/snapdrop/4.0.13/charts/common-11.1.2.tgz diff --git a/stable/snapdrop/4.0.12/ix_values.yaml b/stable/snapdrop/4.0.13/ix_values.yaml similarity index 100% rename from stable/snapdrop/4.0.12/ix_values.yaml rename to stable/snapdrop/4.0.13/ix_values.yaml diff --git a/stable/snapdrop/4.0.12/questions.yaml b/stable/snapdrop/4.0.13/questions.yaml similarity index 100% rename from stable/snapdrop/4.0.12/questions.yaml rename to stable/snapdrop/4.0.13/questions.yaml diff --git a/stable/zusam/3.0.7/templates/common.yaml b/stable/snapdrop/4.0.13/templates/common.yaml similarity index 100% rename from stable/zusam/3.0.7/templates/common.yaml rename to stable/snapdrop/4.0.13/templates/common.yaml diff --git a/stable/wekan/8.0.16/values.yaml b/stable/snapdrop/4.0.13/values.yaml similarity index 100% rename from stable/wekan/8.0.16/values.yaml rename to stable/snapdrop/4.0.13/values.yaml diff --git a/stable/spotweb/7.0.22/CHANGELOG.md b/stable/spotweb/7.0.22/CHANGELOG.md deleted file mode 100644 index 57a2c5197a7..00000000000 --- a/stable/spotweb/7.0.22/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [spotweb-7.0.22](https://github.com/truecharts/charts/compare/spotweb-7.0.21...spotweb-7.0.22) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [spotweb-7.0.21](https://github.com/truecharts/charts/compare/spotweb-7.0.20...spotweb-7.0.21) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [spotweb-7.0.20](https://github.com/truecharts/charts/compare/spotweb-7.0.19...spotweb-7.0.20) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [spotweb-7.0.19](https://github.com/truecharts/charts/compare/spotweb-7.0.18...spotweb-7.0.19) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [spotweb-7.0.18](https://github.com/truecharts/charts/compare/spotweb-7.0.17...spotweb-7.0.18) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [spotweb-7.0.17](https://github.com/truecharts/charts/compare/spotweb-7.0.16...spotweb-7.0.17) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [spotweb-7.0.16](https://github.com/truecharts/charts/compare/spotweb-7.0.15...spotweb-7.0.16) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [spotweb-7.0.15](https://github.com/truecharts/charts/compare/spotweb-7.0.14...spotweb-7.0.15) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [spotweb-7.0.14](https://github.com/truecharts/charts/compare/spotweb-7.0.13...spotweb-7.0.14) (2022-12-18) - -### Chore - -- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) - - - - -## [spotweb-7.0.13](https://github.com/truecharts/charts/compare/spotweb-7.0.12...spotweb-7.0.13) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [spotweb-7.0.12](https://github.com/truecharts/charts/compare/spotweb-7.0.11...spotweb-7.0.12) (2022-12-05) - -### Chore diff --git a/stable/spotweb/7.0.22/Chart.yaml b/stable/spotweb/7.0.22/Chart.yaml deleted file mode 100644 index bf58a8d90e3..00000000000 --- a/stable/spotweb/7.0.22/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v2 -appVersion: "1.5.1" -kubeVersion: ">=1.16.0-0" -version: 7.0.22 -name: spotweb -description: Spotweb is a decentralized usenet community based on the Spotnet protocol. -type: application -home: https://truecharts.org/charts/stable/spotweb -icon: https://truecharts.org/img/hotlink-ok/chart-icons/spotweb.png -keywords: - - usenet - - spotweb - - spotnet -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/spotweb - - https://github.com/spotweb/spotweb - - https://hub.docker.com/r/jbaten/spotweb - - https://github.com/joachimbaten/spotweb-docker -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/spotweb/7.0.22/app-changelog.md b/stable/spotweb/7.0.22/app-changelog.md deleted file mode 100644 index 1cde7a86c1c..00000000000 --- a/stable/spotweb/7.0.22/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [spotweb-7.0.22](https://github.com/truecharts/charts/compare/spotweb-7.0.21...spotweb-7.0.22) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/spotweb/7.0.23/CHANGELOG.md b/stable/spotweb/7.0.23/CHANGELOG.md new file mode 100644 index 00000000000..a85e9183d5c --- /dev/null +++ b/stable/spotweb/7.0.23/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [spotweb-7.0.23](https://github.com/truecharts/charts/compare/spotweb-7.0.22...spotweb-7.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [spotweb-7.0.22](https://github.com/truecharts/charts/compare/spotweb-7.0.21...spotweb-7.0.22) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [spotweb-7.0.21](https://github.com/truecharts/charts/compare/spotweb-7.0.20...spotweb-7.0.21) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [spotweb-7.0.20](https://github.com/truecharts/charts/compare/spotweb-7.0.19...spotweb-7.0.20) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [spotweb-7.0.19](https://github.com/truecharts/charts/compare/spotweb-7.0.18...spotweb-7.0.19) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [spotweb-7.0.18](https://github.com/truecharts/charts/compare/spotweb-7.0.17...spotweb-7.0.18) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [spotweb-7.0.17](https://github.com/truecharts/charts/compare/spotweb-7.0.16...spotweb-7.0.17) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [spotweb-7.0.16](https://github.com/truecharts/charts/compare/spotweb-7.0.15...spotweb-7.0.16) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [spotweb-7.0.15](https://github.com/truecharts/charts/compare/spotweb-7.0.14...spotweb-7.0.15) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [spotweb-7.0.14](https://github.com/truecharts/charts/compare/spotweb-7.0.13...spotweb-7.0.14) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [spotweb-7.0.13](https://github.com/truecharts/charts/compare/spotweb-7.0.12...spotweb-7.0.13) (2022-12-13) + +### Chore diff --git a/stable/spotweb/7.0.23/Chart.yaml b/stable/spotweb/7.0.23/Chart.yaml new file mode 100644 index 00000000000..572463021a8 --- /dev/null +++ b/stable/spotweb/7.0.23/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +appVersion: "1.5.1" +kubeVersion: ">=1.16.0-0" +version: 7.0.23 +name: spotweb +description: Spotweb is a decentralized usenet community based on the Spotnet protocol. +type: application +home: https://truecharts.org/charts/stable/spotweb +icon: https://truecharts.org/img/hotlink-ok/chart-icons/spotweb.png +keywords: + - usenet + - spotweb + - spotnet +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/spotweb + - https://hub.docker.com/jbaten/spotweb + - https://github.com/spotweb/spotweb + - https://github.com/joachimbaten/spotweb-docker +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wger/4.0.33/README.md b/stable/spotweb/7.0.23/README.md similarity index 100% rename from stable/wger/4.0.33/README.md rename to stable/spotweb/7.0.23/README.md diff --git a/stable/spotweb/7.0.23/app-changelog.md b/stable/spotweb/7.0.23/app-changelog.md new file mode 100644 index 00000000000..7cdbbd6ec9c --- /dev/null +++ b/stable/spotweb/7.0.23/app-changelog.md @@ -0,0 +1,9 @@ + + +## [spotweb-7.0.23](https://github.com/truecharts/charts/compare/spotweb-7.0.22...spotweb-7.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/spotweb/7.0.22/app-readme.md b/stable/spotweb/7.0.23/app-readme.md similarity index 100% rename from stable/spotweb/7.0.22/app-readme.md rename to stable/spotweb/7.0.23/app-readme.md diff --git a/stable/wger/4.0.33/charts/common-11.1.2.tgz b/stable/spotweb/7.0.23/charts/common-11.1.2.tgz similarity index 100% rename from stable/wger/4.0.33/charts/common-11.1.2.tgz rename to stable/spotweb/7.0.23/charts/common-11.1.2.tgz diff --git a/stable/spotweb/7.0.23/charts/postgresql-11.0.22.tgz b/stable/spotweb/7.0.23/charts/postgresql-11.0.22.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e8719337257c9cf50e10aad6ea391eca1d64bd18 GIT binary patch literal 187570 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�NT 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.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: storj-node -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/storj-node - - https://github.com/storj/storj - - https://docs.storj.io/node/ - - https://hub.docker.com/r/storjlabs/storagenode -version: 4.0.17 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/storj-node/4.0.17/app-changelog.md b/stable/storj-node/4.0.17/app-changelog.md deleted file mode 100644 index 413dc6f0484..00000000000 --- a/stable/storj-node/4.0.17/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [storj-node-4.0.17](https://github.com/truecharts/charts/compare/storj-node-4.0.16...storj-node-4.0.17) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/storj-node to v1.71.2 - - \ No newline at end of file diff --git a/stable/storj-node/4.0.18/CHANGELOG.md b/stable/storj-node/4.0.18/CHANGELOG.md new file mode 100644 index 00000000000..a12b4e02f5d --- /dev/null +++ b/stable/storj-node/4.0.18/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [storj-node-4.0.18](https://github.com/truecharts/charts/compare/storj-node-4.0.17...storj-node-4.0.18) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [storj-node-4.0.17](https://github.com/truecharts/charts/compare/storj-node-4.0.16...storj-node-4.0.17) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/storj-node to v1.71.2 + + + + +## [storj-node-4.0.16](https://github.com/truecharts/charts/compare/storj-node-4.0.15...storj-node-4.0.16) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/storj-node to v1.70.2 + + + + +## [storj-node-4.0.15](https://github.com/truecharts/charts/compare/storj-node-4.0.14...storj-node-4.0.15) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/storj-node to v1.70.1 + + + + +## [storj-node-4.0.14](https://github.com/truecharts/charts/compare/storj-node-4.0.13...storj-node-4.0.14) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [storj-node-4.0.13](https://github.com/truecharts/charts/compare/storj-node-4.0.12...storj-node-4.0.13) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [storj-node-4.0.12](https://github.com/truecharts/charts/compare/storj-node-4.0.11...storj-node-4.0.12) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [storj-node-4.0.11](https://github.com/truecharts/charts/compare/storj-node-4.0.10...storj-node-4.0.11) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [storj-node-4.0.10](https://github.com/truecharts/charts/compare/storj-node-4.0.9...storj-node-4.0.10) (2022-12-19) + +### Chore + +- update container image tccr.io/truecharts/storj-node to v1.69.2 + + + + +## [storj-node-4.0.9](https://github.com/truecharts/charts/compare/storj-node-4.0.8...storj-node-4.0.9) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [storj-node-4.0.8](https://github.com/truecharts/charts/compare/storj-node-4.0.7...storj-node-4.0.8) (2022-12-12) + + diff --git a/stable/storj-node/4.0.18/Chart.yaml b/stable/storj-node/4.0.18/Chart.yaml new file mode 100644 index 00000000000..5de1c8cf6d5 --- /dev/null +++ b/stable/storj-node/4.0.18/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "1.71.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Storj is an S3-compatible platform and suite of decentralized applications that allows you to store data in a secure and decentralized manner +home: https://truecharts.org/charts/stable/storj-node +icon: https://truecharts.org/img/hotlink-ok/chart-icons/storj-node.png +keywords: + - storj + - storage +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: storj-node +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/storj-node + - https://hub.docker.com/storjlabs/storagenode + - https://github.com/storj/storj + - https://docs.storj.io/node/ +version: 4.0.18 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wordpress/1.1.10/README.md b/stable/storj-node/4.0.18/README.md similarity index 100% rename from stable/wordpress/1.1.10/README.md rename to stable/storj-node/4.0.18/README.md diff --git a/stable/storj-node/4.0.17/SKIPINSTALL b/stable/storj-node/4.0.18/SKIPINSTALL similarity index 100% rename from stable/storj-node/4.0.17/SKIPINSTALL rename to stable/storj-node/4.0.18/SKIPINSTALL diff --git a/stable/storj-node/4.0.18/app-changelog.md b/stable/storj-node/4.0.18/app-changelog.md new file mode 100644 index 00000000000..ab038731e58 --- /dev/null +++ b/stable/storj-node/4.0.18/app-changelog.md @@ -0,0 +1,9 @@ + + +## [storj-node-4.0.18](https://github.com/truecharts/charts/compare/storj-node-4.0.17...storj-node-4.0.18) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/storj-node/4.0.17/app-readme.md b/stable/storj-node/4.0.18/app-readme.md similarity index 100% rename from stable/storj-node/4.0.17/app-readme.md rename to stable/storj-node/4.0.18/app-readme.md diff --git a/stable/wordpress/1.1.10/charts/common-11.1.2.tgz b/stable/storj-node/4.0.18/charts/common-11.1.2.tgz similarity index 100% rename from stable/wordpress/1.1.10/charts/common-11.1.2.tgz rename to stable/storj-node/4.0.18/charts/common-11.1.2.tgz diff --git a/stable/storj-node/4.0.17/ix_values.yaml b/stable/storj-node/4.0.18/ix_values.yaml similarity index 100% rename from stable/storj-node/4.0.17/ix_values.yaml rename to stable/storj-node/4.0.18/ix_values.yaml diff --git a/stable/storj-node/4.0.17/questions.yaml b/stable/storj-node/4.0.18/questions.yaml similarity index 100% rename from stable/storj-node/4.0.17/questions.yaml rename to stable/storj-node/4.0.18/questions.yaml diff --git a/stable/storj-node/4.0.18/templates/common.yaml b/stable/storj-node/4.0.18/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/storj-node/4.0.18/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/wordpress/1.1.10/values.yaml b/stable/storj-node/4.0.18/values.yaml similarity index 100% rename from stable/wordpress/1.1.10/values.yaml rename to stable/storj-node/4.0.18/values.yaml diff --git a/stable/strapi/8.0.26/CHANGELOG.md b/stable/strapi/8.0.26/CHANGELOG.md deleted file mode 100644 index 47ee2437108..00000000000 --- a/stable/strapi/8.0.26/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [strapi-8.0.26](https://github.com/truecharts/charts/compare/strapi-8.0.25...strapi-8.0.26) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/strapi to v4.6.0 - - - - -## [strapi-8.0.25](https://github.com/truecharts/charts/compare/strapi-8.0.24...strapi-8.0.25) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [strapi-8.0.24](https://github.com/truecharts/charts/compare/strapi-8.0.23...strapi-8.0.24) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [strapi-8.0.23](https://github.com/truecharts/charts/compare/strapi-8.0.22...strapi-8.0.23) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [strapi-8.0.22](https://github.com/truecharts/charts/compare/strapi-8.0.21...strapi-8.0.22) (2023-01-16) - -### Chore - -- update container image tccr.io/truecharts/strapi to v4.5.6 - - - - -## [strapi-8.0.21](https://github.com/truecharts/charts/compare/strapi-8.0.20...strapi-8.0.21) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [strapi-8.0.20](https://github.com/truecharts/charts/compare/strapi-8.0.19...strapi-8.0.20) (2022-12-30) - -### Chore - -- update container image tccr.io/truecharts/strapi to v4.5.5 - - - - -## [strapi-8.0.19](https://github.com/truecharts/charts/compare/strapi-8.0.18...strapi-8.0.19) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [strapi-8.0.18](https://github.com/truecharts/charts/compare/strapi-8.0.17...strapi-8.0.18) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [strapi-8.0.17](https://github.com/truecharts/charts/compare/strapi-8.0.16...strapi-8.0.17) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [strapi-8.0.16](https://github.com/truecharts/charts/compare/strapi-8.0.15...strapi-8.0.16) (2022-12-19) - -### Chore diff --git a/stable/strapi/8.0.26/Chart.yaml b/stable/strapi/8.0.26/Chart.yaml deleted file mode 100644 index 8a5fdfbfbbc..00000000000 --- a/stable/strapi/8.0.26/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "4.6.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 -description: Open-source headless CMS. JavaScript, fully customizable and developer-first. -home: https://truecharts.org/charts/stable/strapi -icon: https://truecharts.org/img/hotlink-ok/chart-icons/strapi.png -keywords: - - strapi - - cms -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: strapi -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/strapi - - https://truecharts.org/docs/charts/stable/strapi - - https://hub.docker.com/r/naskio/strapi - - https://github.com/naskio/docker-strapi -version: 8.0.26 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/strapi/8.0.26/app-changelog.md b/stable/strapi/8.0.26/app-changelog.md deleted file mode 100644 index 2dd1aa5ca99..00000000000 --- a/stable/strapi/8.0.26/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [strapi-8.0.26](https://github.com/truecharts/charts/compare/strapi-8.0.25...strapi-8.0.26) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/strapi to v4.6.0 - - \ No newline at end of file diff --git a/stable/strapi/8.0.27/CHANGELOG.md b/stable/strapi/8.0.27/CHANGELOG.md new file mode 100644 index 00000000000..0eb832b1cfb --- /dev/null +++ b/stable/strapi/8.0.27/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [strapi-8.0.27](https://github.com/truecharts/charts/compare/strapi-8.0.26...strapi-8.0.27) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [strapi-8.0.26](https://github.com/truecharts/charts/compare/strapi-8.0.25...strapi-8.0.26) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/strapi to v4.6.0 + + + + +## [strapi-8.0.25](https://github.com/truecharts/charts/compare/strapi-8.0.24...strapi-8.0.25) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [strapi-8.0.24](https://github.com/truecharts/charts/compare/strapi-8.0.23...strapi-8.0.24) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [strapi-8.0.23](https://github.com/truecharts/charts/compare/strapi-8.0.22...strapi-8.0.23) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [strapi-8.0.22](https://github.com/truecharts/charts/compare/strapi-8.0.21...strapi-8.0.22) (2023-01-16) + +### Chore + +- update container image tccr.io/truecharts/strapi to v4.5.6 + + + + +## [strapi-8.0.21](https://github.com/truecharts/charts/compare/strapi-8.0.20...strapi-8.0.21) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [strapi-8.0.20](https://github.com/truecharts/charts/compare/strapi-8.0.19...strapi-8.0.20) (2022-12-30) + +### Chore + +- update container image tccr.io/truecharts/strapi to v4.5.5 + + + + +## [strapi-8.0.19](https://github.com/truecharts/charts/compare/strapi-8.0.18...strapi-8.0.19) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [strapi-8.0.18](https://github.com/truecharts/charts/compare/strapi-8.0.17...strapi-8.0.18) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [strapi-8.0.17](https://github.com/truecharts/charts/compare/strapi-8.0.16...strapi-8.0.17) (2022-12-25) + +### Chore diff --git a/stable/strapi/8.0.27/Chart.yaml b/stable/strapi/8.0.27/Chart.yaml new file mode 100644 index 00000000000..0c9fed672e6 --- /dev/null +++ b/stable/strapi/8.0.27/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "4.6.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +description: Open-source headless CMS. JavaScript, fully customizable and developer-first. +home: https://truecharts.org/charts/stable/strapi +icon: https://truecharts.org/img/hotlink-ok/chart-icons/strapi.png +keywords: + - strapi + - cms +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: strapi +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/strapi + - https://hub.docker.com/naskio/strapi + - https://truecharts.org/docs/charts/stable/strapi + - https://github.com/naskio/docker-strapi +version: 8.0.27 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/youtransfer/2.1.6/README.md b/stable/strapi/8.0.27/README.md similarity index 100% rename from stable/youtransfer/2.1.6/README.md rename to stable/strapi/8.0.27/README.md diff --git a/stable/strapi/8.0.27/app-changelog.md b/stable/strapi/8.0.27/app-changelog.md new file mode 100644 index 00000000000..50c48151bc7 --- /dev/null +++ b/stable/strapi/8.0.27/app-changelog.md @@ -0,0 +1,9 @@ + + +## [strapi-8.0.27](https://github.com/truecharts/charts/compare/strapi-8.0.26...strapi-8.0.27) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/strapi/8.0.26/app-readme.md b/stable/strapi/8.0.27/app-readme.md similarity index 100% rename from stable/strapi/8.0.26/app-readme.md rename to stable/strapi/8.0.27/app-readme.md diff --git a/stable/youtransfer/2.1.6/charts/common-11.1.2.tgz b/stable/strapi/8.0.27/charts/common-11.1.2.tgz similarity index 100% rename from stable/youtransfer/2.1.6/charts/common-11.1.2.tgz rename to stable/strapi/8.0.27/charts/common-11.1.2.tgz diff --git a/stable/strapi/8.0.27/charts/postgresql-11.0.22.tgz b/stable/strapi/8.0.27/charts/postgresql-11.0.22.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e8719337257c9cf50e10aad6ea391eca1d64bd18 GIT binary patch literal 187570 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�NT zH;4+JRU?&lXqi2yz8$I>E~`Gic@+0)-{{84w4!vvZ3#oE0kPqC@v3)_qxmBj5vjY| zXIRe^x)~f&-fJ5mIZ8;=VhtFO*k#CNX*0fC^g9(1ndhDxs3xnMpUSp@b$ou==|k|2 z^6RH3Erd=A^$EnW0q(y#$ELx4kL~`=Ss-}YK+sYRV*)DgU{hWe6kUL_yny7`7RJ|O$l=kGbe?jF-5NH((IE72(^ z{V>p!Eq??z*Vg|0BOhe4@QdCG=AYCzusqjK5#4I5* z+7-%Q7e^f(3V{i~)SQc~v2tiZ15nqovs37VPIp!*QZnUk{$`hg`t2iEMbY9brl;e$ zlR38O2lPuT6$P%^ia6p!^41F>Lk_bi99hcLb@A5V3yc~ic_NQEd9Vt5;J`S>6%Y3h z{@3n3?TK&v>m~>akKv?l@-4?(aB2IHbYGZj9PvdjBN^5aO|+enw01 z?(AVC5`N+%i*&}V&~OqxoO6OR@C+qU&*8;mXEwat_@o-h%cb^UI#*HDRR+N+ZMaCorcE-KV@=4gj;;R2%}DwF zEmMJQu)a!Hq1lo5>%e#$uh(TU=(k4Pilq7sufl_zMF`Qk(J1Ec0x4)kR{8+VPc8)mQRTE>RwcBoJr`xI9K*dUy@zFB_uc@N+cn3pU#qQ5;5w> zA0h9K-4v=5RUiAMZ1wNIKS#II--7W7AR0*MM# z>p}fbhwYAj{YLqK%WYxerb-v#ezq0ch!>)xWvH%ldT+8Ba}l1bCCvZlkXYR^bSR%r zc$BKdB?whdb`l!n!XTfhOT9tFgKs>Tuurco5NR)>D(DLrmi1RF4)*L9a??KV-Bhs@ zl8*NHg!Z)2FXt)D|N1i!zj`Y6Tt;(0d@=unub>{5`V?fdgNEiunMlYF3&_u17Vv2W zH_Piqdmic?!9CCPBB*%YK8-V|Z!({dLOoraz8J_tXKwBGX(%%Q>@>=r=G)c@i*Oy2AkV1T(rO`2!9QJokp26mAn`vF_P$Q9c9J%AG19?@zGsWDfG z8R3YR)0*a!QbkAIta=b~r1V8H#J(I{qi~m*g9pS^EGJFc$RC23;N1bk3<=dQvGMq- zlq;%wY=lx^moayd4b7rbOHK(h)s?ytd=|LYL z^E>}SNKx1DdLr~qop)`+CDbc}=M0V}7A6FTY6o4w$;K=pG?S-{R|v^C-gq1@r4k5g z6Y7nsv%7e>Td+d5G(2*-6xV;!VlO9IsM)Xlz}oyp>8V9$TfB!U>F>J?^Zs)O`sWT8 znD53J>^uG}G%d4M`-yX`P?CcRRCwfQV3>N4U?mqxWVz;0VkLf>OeL*R8jrrjcOhLU zaIQhm1f|CqQY5e*v;lcx2Nn`TFg{5SY7=S}*IpixW(eT$kB+V!nMiRyssX|UbH1qI zeSa%HnG;DbOUnBq>pseRa%kr7Qx_<@hoOkvcgK4rEI&&=RV>~8!EE{A;)1uaf^rFq z>~ADFW*Yc``;xSaB!;hG!+4aLMP8=%pBStJcBf?5=X^M1XQVMfYlaB8&6>OPJ*LI< zFtZX6Tz}9C!Xtv~22lMHX2WP{)<%DiDjvb(8+Y^EwCR`h^X|nTMl6Qy5-!-Sfz&-pZa~;v!(g>4){XVHzt=IwXP9U2^rG}0a65^uNKG2V9DP+lHzKUkyE$o z4{sCJ@LsT+pwpWSAeXX|;k6^}#YFOl&)^xGSrqtT&{dMAZtd(M)XXl_96Y%n=|Hd= z*@LD3h;|AC9J*j^MF6&vKw4k~P=Qf`)CFQDl#qXdDHVAHMxB`qliYOSJ>=XLcq0?C{xDJVT{U@S#{odFQFsBT z;HuKKrlT2VQ8>6yi`Xj)Dv%-=MnS{V##7cB^$V<9Gft9{35x;7mNLUeM`BsyvW{jN zZ?bj{P}t@`5VZykwt!$oiT*5+X-Zo{lZ@U@FmbTB%0f+wzkfL?8&ujJz$lV&&S*R- zW5hR;j_WN0_19bNAxWiL8QSTDZa!8$szoBFI6q zOY@{zUWcL_DN=lf#!J&dbjexV~-Q^RAu^ z{^yA*oh!%KwkBj}?<2z+ckj}+MXK_-yj=_Fki&bBENvL3XoM-lC^R5HWCMCWtY~K@@AYag=)?nwXr2cR843coW)~$dp71!dhdgRt0yB?Qq0LvH+Fiy2f__E6Z_w z;ggcE8rN(UD%y^ensK~_BfDsgiafjFCS?5lS*6{yQ$_Ow+kv8)8IT0Yd;>-EKOBi7-MVe7-n8b7Y zfD#76uGaHXAVJm~vGMRx+WH3pS*8a88#Xv?Lf{fV8JQjXG}#>e2`NC|}+Kf+Q@Jd<`ocy;4ywda|H5KPVU) zM6NXfk2x|R&dkOV5l)i&{-mNwpmfRLLVG>xDTKc15_EYdT1mm@wZDxCAfpO}@Lq=% zc8CZd_vrNg0Z@J~x*$o&hyRMHbS)lvw=SV5R))ZhXi`vpv|ZZO=!JtDT+$uu>xf*; zI#W~+QXKRGpf^z0lNweyx))kU=PyNEB{OL5CL@U^1!@X{(A}qsFMIVrCjlNy@A@-@ z$J0sd2R#iGGP~^SY7YxKG?zP4>!=D)Vx+uqvmUYW8}J!_sm zA1mf9dS0bHTe_aw@33cVJsLC^^aLnkc$lh&ddd-#mL<*Dd5J+2 z9h2={T7CY*i2MGo!FPry+Vg4r{q!{3sQS$zz0EU6RpO%=zl8gAY(SuKc<{@Z&w>KRq|rFyg6azux-n~~J31etx$RD;{2-M; zTq$knJ!$S(7c~Zm5j$+`Z;=zkB3I7DD0fOUjm0|BV1}2#_1HN40+scKdMiu@g z^-gVLWh%RcqkCJ}+K-(7T)B}iGK5&4O|JejKzU^YCIv{eC5@_QTMKAyj8@G^FY`gw zQxX|^aI(G@*Y=Wlm|l%UQ|ylpU8YM4zCc0NSEYwo2?2vngoP8NE$&qqA%~3lY9<6d z!XPuK#U?U4^B&NPckYUC<4NukG#Ye>qG1g)MyTSsy|6xN$5V-Lecr2K>{PMBMfc>< zy>&^!OG2~4-l_m}Ll5c_1&N+)bTmv(EB?u<;3b3AFx8F)L90tetBC)>z89Zkh#dC8 z7b#j+kULWq9G7j@oQ$W+QjYV&)5{mpA@!Z|1PN`KwVC+Xpj-c<4+AzeD>a+{TG@t( zz?0yP0tW?5mNdJ-OvqAEW3T!+Y7I(`9}Vc|u8gQxr9-pE;B}jTu8VtX|9YP2vQ`~mePw+;IVh!ZaatL zH7C+0-)(|}`vk0cJVRJp^=oI$V1=enwwSv#%pHS_VugY*2F~67LZVNF$3z~3IsRSH zfto%m;97$c=>-RN*DN8+!|FP6QaQx|eZYL@Rw{DHP|f7fqWiTxl=7@uYw%&rBO`qf zS6sZ-25IDeW3S-PnI)XX4SjJUHFZ(>@tTe?+qQak8F)tLJ0`UaMeX~gmn#~ST^jp>4mJd!;J z$ohYLXyPFvi;`KIzYpc*^_zd~*nYV^qrps`sn+Tw9!ZoCNOYp_;38=qnA{;vmo6#JR845D2 z=I_{G(|fl1ltsB){#E5RFTz)=fqwjURH8(&7eU_64@(Y#Je54<`fLs9^1BP}cQmHR zsIEZGPzW<-jfq);L4a2mdFA6{g6h@Bq%ofirs-C@oHhQ|!&<|>g)!I##?F>Uk!n52 zNGF21^wTuA-$)G4e@943ar`JAh086&)z%jg-f_498TAj;FA4wogAj%pY;Wj+x(fHc zg!KnVfMhQ?9`C)f39do!80y~W9Lw^>NOmDyV3>ap4BDMmy4=uUqsj(4R1oo)zsmmg4L$VCI z#lVwOxG+rr`r+Mz#h_W)-!CI_P?Y3_#EuF4SyCboBPO3{UV;~G$0n|RL|BvzK>(E>WVal3YBgy5Rd53Y22X$m{7X{S^QPg15vWP+ z4F*f~KBoi5lMD*f%S-GoH|dihA63+`*aA_(vDml+KqO~SEAbdn;du??O+sv#8|Zf~ zpGUm)1gfB!LvS2kE2i6P5z&H%bnWP8<4p{97Tzn(Q$#Eq#J{7DA;zq1w{sUamB2^! zlazaOHJ&h)GS}}Zun$rmln1NMi7$o@m7wm@K7SENAFnMAp3ewG%OSTDyvQDofk*oX zrYvU`bmNs9YI2XmpZIw46=xv$1&bADXn`V$VH=V2hLW~o6m~Rj*$>JVVsRkPbCJC? zXH(8`hN7$T*K$%QwVtf#U;0UQ2YeaAaDYUOf3pJLOXZp&XA=XLne}V&aezc?8C4&; z557*ZkHTeLEh*EeJBa^`2Bs+cMLvLb{D);4Tm%Dm(*+mZ26e5W828VUHPZva`a0&| zPz(*es`$qaZe)ZWQh-TqLerkTy@Pgu(U>5{FZE=ch<|@&8r^qUg<2+$yhc|%``u6n z>gom}7sNBI#V@kK`*k7Ll`f!6Gphysr@4VMlOV$J=@i%AY}`RAy$G&xTU!m zl_;U(d*Txh+o#26awGgQP)BuMz8a(Ry_(LyIdum4UcvPMW9;bnQ6+Uo<9*!Vg{7KH4}@k#LCMyCh3UTFz}$AHq(#xOw;`5r_fs zG9R)4K}X)PLwo41c%ergvXS&81sgW9`!zR!(8QlZt9&_kf`9an9ojW%6+JGC13heO z@y76)ZAgQIB?6&lQM|YG_*h1&CPaRTp8SiqTNvp2H9KSb;vq5|_wH;1Df6%EB1qAQ z`Dqg9fFnaF-R=!fMyPmMd9E~@Cn@P)(D?Evb$i(6g?u)*4KkdzT}pk;Y6_`)2oNi( zJUT|W3b^Nml9)}@9*!8{Avs-&cckNDLB%p}m}3eeH%h^a8%X~MwC)1PQ>?&}PO^tJ zUZ}84s2Gy>3RM+^3dna>GP}d>3zJ zDgGrCRbu{9ONFIx6oAhfoOG2-nG@)gTBGc+$xVMp=`HLc4e%cbgiiV;r7RJ5qSY3Nacgq{-q>viAxvKza2<>ID?u!rnrHh@7Bbe!32G4baRAcrdX7*AASh}T?PyUr&DUAq2s zzg_iEk+55gQht%*&U=ynGE_JZaTtK#7G|O94Y!mlZ}TUog9w(dLwuOqRT%9!pWa`= zG&DdV*=B(vGn|AgUokA23r5bYJ!&}lBr727T{lC%_);xjweL&~kDyNyZ_{V`T^9_FDgO`!X?QH(eEb%HE5M;S( zko8$UT4N#wJ*Ld?9fPUhII8hcp#*$)e29WeI~XQ=N{Xr36lrRsrs68~?H)ihM-~sw zPcVp%`JIMq(IaShAhciWU(S^Vgj0E7Io$n%TDp9!Yg*-qq$nSLv1&WzVKq5nO7RbV zwN+Z7cWskQZ1`;;+Ao<0;ZLTkXc*rAC`S!6ZAIvK^gVbFUIalaKPp|xlX8UU_VBupkKR-+D45+UJ)!4h%95iXc4wN=!q5#nnP zX}xZzr(bPH4{M{2`fFL$P@3C>!+e-{gOD#7N&vP~3@-3s8$M(UBJWyANV+6X;-zO0 zo#fLhCS@HI&GXjd;dq6ZG=i%A_GWB2G+i@X(7LQzjaoB|2g0~Svgsp#aE_{(s zTs>09iv87!V*`tf(p#L^aBRttRT@Net=`RK=IdkSNDEXS-S6bmXnxJ~u21C;<=b{TgEtbv9@G|t zI||W!GcUQl6r8VbE2K-ETeB7Fat6Y~UhbrSPVqeX{=V8y#tIF${M6B`m%D))>b5)` zK{uE@4sv%(*pJA>-u)v$D^O|t*H-$>_x9h-Yq-1R`y3%wRx*l`>I%m=6JFAm$Pz+a>fd26_*j7iq;_o| zvMy1)DsXYCGNMU!AsD?F)DW1A@^*CH6rCL1SM+3yl^$)8y@{1^;k|_hp>3Ye2bnI- zkn*TnYGC=W0epE9nQnqSA_72w>T}g~X_wH#(43mQ!YwtEB?JFgkUabYw71PxdFE?g z7}OK=$DX-YqtI4_f)oxYGrFzBgTxhi`|*#=a0`)LEk*y&!PwE+o0nr7-8hZW1lU*? zZ_?wBS1t{8CidBJiR8CI^byr?fXES(cH~U6w65u7@!KaZ|KFG*uDnP-!ovZ{dfz35 zjwUAIzAycc$x6yii`zD*Sh2^A#KRW*6u)Vv{qP%r^qggtsie6N<#6`7BIV* zB*{5X?pbjVY#{05r+VkEFXzh2rO)F~hrhO}2Wv1_%v6+gUys;Oxd8n4q82P@<^|$~ zIb0FMQH0hX{*BEz57E}vw?+nF802Kt#KXOBk%El3)m)$gh~>P{W>kS}AUvT<+B~km zV6p+cCY%*bOa`}wVV1diOb^0m*9Ex?-?2qnKd7*0v0MTiHjIgS3phydcA=?QDSGN-oO~y!10-G&J$`4MCi;9SpS!0J#YLgQ54@*R z@5uoXdMeh8rRfBc9@SoC2azAfQQ6G~{qiMuMxmtzc+j9J$a;H~oZ&^`uCd-T8r?$X zs9!jcfA+xrx~*{^o0{;lNJl3XB0S)E-G@x5#T|gU+v75JXBERD2np9{yY@ACxelIw$J&ClI32lq(0^qus=H#39c3Rbw zi>p;854cFVq6xrU=0v~MaFNF;v-{QNdn249^o!g{_PXiHjitYXedZ!Xipu3)suX|32g>hRUPzySSwaTSR^KptNk|s z1r$m5eJW`{w1Pyjx0EuyRx_t4=2mkUc4_JQ)(eWKV=Bgn#-@o@(eVO{d|1qCu>FBt zJfiYKu>*LhC~`bWY=m`I^!>HeapN6ibELTXfviW{8x(>>&eav}eM%lSAq>`&KVTOT zkuV~!D=GyqH-i~Hfd)u#mn}CUA3R%acp@fqMLI;FU{I#gC(To`aye;fg>HFBsj0Oe zfhL0V=Xp8}IF-+{jt!ZK?(}#R7xKxjPm{Zr9zjOA}K{(ssd^!h9B;dRBXkr}ZluIJmdYcqQ&7mHJwPEk_ zWLMCKPt#5Z6&1F_`(^}lj`pBLW=UXMAXqrnz6pURBV5L{{K}*JoW=xHs?^f>4SU!d>}GUd z?E$tlgn)rMnfg7=eq1$ULGL-rzEr`_2gkENj`q3QNkQ>uB|8Fb>cFe-EGg>LuNY?j zu>WkNN{b;awL0=45L)H*VbN14YV1n+L~po4TZ_3V=jz;; zKP{g+wzl;mCh%brAXH}xD-s^v$#2d9Bx)Nt2I&>Xk!}d<5?rU@I8YT5FA00BTCdXB zb)BCo63_MCFH5kV8yvq@jpo`gTi_YsU$XqM{R$*Wq!Gma*d~x^DttrmKz*R>Unk36Xl7^4%Hoxg#hg<7K!v4Z5}!f06TyJMU^g~Iq9Ze8@IoVT zy}edS^UH5MfE$6X7p8(jvKpJW2_9KTYrrli9FI9OXxF&Nv=&c7CeXGp!|Qf`Zzi(me(N`Li=b+wFoN z7A#**>N&4j>0V@kO@(mJ(^e61Kdx2a#xYx-^~o*ivtGZ3!c$wTfAdPCHCA_|_H6?(R=(ePgu8w)ytb)pDj(->d5&x#+Tt@*p{jRcO%j^oUb{^W(T*Q_&#u zW6%t^E`#*t-BOX?a|5%TdjKVB-Mgdh!nF3qv#Z}jUTEjI&!WZ|fYdB%xie5OxbVaC z2}TfQNbdfL;w{xi=J7R#*NAz#ySuJj;BS376`wtLx|_}RZkPu^&8cq~A~3$KBg(<} z3d*(8Ma4=-X^g-!A^c#tWg{LU<)0~rxpb>0N11_@RsDC?K0!*o^^@;(sYdH3CB!6V z>nEQ?+*Y1up2-k}M=^&ZJa0?P&o+z)M6O>TJa0dro_aOjpq@0x*HfLZ<7IJ2BKO&P zQOry>L|D6N*C0d7@z~q!^Y{F@k=}SK+ zGrG0tjjNuW|Kz1i(6{)Woo5_|X*@i_OIIcf{H+%G3S(fayr1iw1?d$=%r4;F zWpHwXoIJDp3CYXH5n&h@3l{)aZT5X`{y-k8riLv45ovpWYRX5X6ZATL>QF+m&<#H% zpl`Q6>s3o=+$35kf>TJ+J}C5D`E{#b{l*{Q?Rd8B6$TGdnJUhN@QU3>6dQqCA^2aH z;GiV9(x)IQ>LR1RG({^KU`HY&pxqD<=`hH{3w_55R$xDVLz1;+WSwNZ&sqI2S!S22 zu8Oy)!&2aa;5~?X**xbld)f*lJ4~LkZ8qHctk(KV}*1VbhVIHd1wyCV7{0gU&M^fh*iS}wnIP}5&WL$#J#6v2Txqh8Ilc&JL; zWBQH>S|wtz^)UoODe7+vigYbnj+clp$d!DOC+ZR&P#bOVCaEYS7jH>w$> zhDiTpZ@%k&Nj*&u6uCT>A$3jmQc>4R*h{+CxC?AAkPl1zET>(w9D|FTp~<+jRTA3=%KHmGltVcgpI5 z-~Tm5Q3kfjrkdUk(jUmuXD4LxTm7_!$5rJ_hB;)3;IOnfkJTiA6`d5$I>7ig7Ugq- zuyz`RY%ubWT_tbYh%3x=4Y(xZ5QUyQW@BXc$~UMkVFS(5>;a?9z^s9JXM2Dno4Ob+ zl|{C^JaJIfUeaoY?J;pejkYYMdOF57FM-kLo-xk~M0;c&nc=zNE{N<*(0a0l9t}_hsgyUR3<_-A?}@(Ndtxdp}K={a07?>2BnpN zQtdBCJqpfL-TLO`a%x+fSjwiCP1;)>X^p@GS2IU4B`!;O&X#N#d<|MRK+12@fC97x zW~-;${EgXD#>|I6$bW8szB`>tx>zy40R-LYF_D;@l+{*yne2;$R$&aiGE!&kD5@6p zoMq%?8iFW1f!I~*I*fr8gEhxhLH&dU`;g!E?hb%0q&0W~6k=dd2gE&QPCdaWw zL*fACNeqkG)l=rJS(ehYtCQF)YId#TAV;j+31aWmxYdBfE=tB*TIEp+;~v+*Hq zx3l5HTGSgt>)T;|5G?*Bgd;(hfPEFJyy-Mw=)sA1gN8;=_|`B{e8;qBB?({OF+z!w zU(%f%QRuq|WMB2PcZ?0HByR-mv%8aZW<8KSpR}I?zro-LA98mmXb`+F7@kK2ed7xO zojzAjxo zKfd%XFT3BRj}N!byL!6LoY!hT=e8~z^{zf48?W?x@c%#S=^t~JO+Nkts^-sFLd1ny zF?{|>ym#B`68l)$dgO*9K&+s}3+f`yIX6NbRtJVo>IVOI3|jvBKy#~z&g{4jeCU-r zRLnqeC8jmrn%}Mil_K%aUMLaF1nr+%JCFhA4|$PWloEU`URdZxDoe>15ErS}A)$%z zcP4HQTpgpcicgR9L~i!f4cfeEH-enLkrUiNHNGx#Nsd}7nCrFJ-N_aS2}g+4>wF6G zAfOnu4=ilb#&H2Sp)VA#BezwEHV!K19+}o?)W~>NQ%7TTV9)QaF#9_<&Ry%d7r4 z6HI?S|5O|~Q|BpT&XP3oRA%zO{-H0o!L4#`1ok4U@bPtDkOT8rMN0@y#y5Ti*fS#x zbKyL`gWG-w z4nsPrNvi)4Ln5iX%xh;ahB`FCQ-eWq@-`~9iH~0wXM>i(OkOU07RbJwI$ifu(iu5C zb=SYOBum5PR~5xWVE5pM5ZiS1*?MhsRzr&DN=1;5HWXF76sMd^k}Pv(nkXN_ZxzS7 zcxA^i8OL%Xx%aMeB|FL+CD-B7+xoCr(*4Bv0-t}X^j|MYtzpyhy_&ne%NQV$2R)mc zo2i#m=PoaHEj9-|o)*Z`@1BJepTf`z|3r{wQIn^^*B!z`d0;K}V}R5E>k+`ec8s)5 z8VYF5xI&uz8_zkga9$JvjySq2JJ|S-K~1C~&85NNNhJJwqhTNNzAV&nbmcn8JgZ+N zR{e)Z%fIOjRMFQPiz7RB{Ug;Eafyt!;IrtrNS|mJBL#$fq1>0I70sLwmrq%to!r@` zNm?8OiKVdev2{roMg#3xAhSV)bmP!t2%50mZnr;kh%ZPx-n%ZIzG$=edm@f!?ysMu zoU&V2c!66<(^~z-VJ4?@8=ur83f!xmUPr5j{yMXN`|R}9{5?bi24itCvcCjW+as6dO}XRZ*hm<^VK z?XV%q=Px3SQNfkbgs*4u(#6$}%~G4 zDj={0k#DV7o7aSt>4FZ@i8clm+dxl|IhM+Ki$wgho?pQzj)*)3ZZoU@j`hYVQBdz?xE#R~%Ih zf0>(MRVGqFu5`Ypy&zL{>v>;6;E|Pu&Ab;nbQ{`CfUm4lM`I?;dd!?Ag^Bg-mXjv7XS5yd++i?jga7E9(R>C9(nbC ztDS*z#`kS5@ubsVVZKZa|mWBIIw`1|2T71@k#_nfnp_AWYUnGMj(x0GV z{o|a9iXb4N`u*6e%3ijR387rvl}F?bk!*2|g|1RMl!wI+m2AOUCYCBpxQ2k|b}0-5 zM__Kn<_PrE+SeVjpdef_LH7Gj;U{y8USCQg```jfL$6joUZREZqf$j+IsyeX9hY6L zuox&?Q+V4yfsy5K6?a9f_^YU@EVR1ymA2Di5ZCf|^5A!IWQcf54ZGZgb(8X9Fy*MW zIi~}N#Wq{S(5bURumL+emiS$Fgr2S?gn!|W)b=&BJynN%a0rM{M?_+m3LD^}fr$V3 z(eSiK6fhV3+#y3%^fBmEC|_tW=~M```?7g-%w3&PjhLCjorW+yg1Fe?hA(ZEd30F3VqSNONL5#U>2)3tOA{I zT@||aM=lLp1J&CSclJ9JT0$T%Mr-TK&$!iU38RZl<7Caa39z$Y5Wj+Cx~t^!R~v@) z>B23SDg0noOm_&V;rO5O9fs{L!nJ0Vy$(0c+KEPg$1(ypLfJ9|7$vbm?KYX(%QcGo zdwvgkfkp7N%-U%R;gr2zo#gJrr+S8>1PwWslrwcBT14ovvA=S-ULS_l{bF-M7W2e- z>YdRK^o$LH!l!a8R3EcKR9;jOA%=h8L{*AY5j8X^t{a#?z829tdponDOS=Y*1pK)ByRUvBLU6O6ZIBN=hk~cF?;{tcK6{1bnR70l24=&kbL>VxI>BOAB z*L)SYKI=PM`#UYs^KGAIM?_(d)c^eR`=FkPU=cZGkAK!BEECll9xCu;bEUg??FOA@ zrMTM)fH5`mjxk+YAgbi(;yIP(i!B<*NWJewW!e~AdAc^(46~_5v6&-8f`ybhEKd>N z_w6cx=gj`~SJiNnA+w#Gf%Es?Cgm1cDAk0dtEf-rG-Wik_Oop=X&cWXPTxMg?(E-5 zMkIDwQj#6FjMWY9vVk2ncm6ZDz9qSeHJs`}QaOBR2^iK<1)F)u=$;Rt_b}~~GVXVpmj^UfOV z!!jE2FYslIF#`6U&H^e^CQq**T}Tl9q-AKOm%Gb`CEkILRo3o*$>6*DzhnUMYJq42 z_EDb+d(Ymo8k! z{{X6;=HOBFzX3gM`Y%9hz5&&ZovSlG7`hmRRAUXzj)q9F2hs}iV1lB-5sBZD&(=rgusQOpS zm3j4M490VkOsy>35?pVIdBvf9ck)-Ed-Guzf;pPKx2`+W zpJW2f8MuEymmOjV*o$YpjX(E|`k_n675nm#S@PczZW9al#wdf@<9Z-h_G|PkWg_@v zO2V-28(9L4ptI3qs8#~-I4qq(&G*2TGEtQ|){x1{GFtsKjli80eCi_&_rRnw`Y6${ zZJ!uZ+1nqnf-^}qaXoB z6-G;uK{y<$YFS1nh7Zf+-^zE8Rb_-#V(!>8u#MCn#oWkUTyn=vR%4hc<@A+Z#3oYK z2M&Kz#nWDpv{MA#GxAuFI?gBUe8f5VfUeTDl1Z%9hlvo|7n(I&ZLg;*Cvq^g|*Z zLLrnDigL)-X)NMzn!o>L63&0 zU37Q=rnn_DEG-LFD|Wq1WHE|jqhD5)4UGJ!FCCX2MGR*)nH!tnXSO5B;?fj0QkSZ> z*MWdok_7Q7JavP81|i+2hoHuC6F!2fbAURVfIA4IhH~7gK%v(Wr^P1b)U4L(l)WsA zpyzrSkKGFFY3WV;dVHb^Cj8WWKle?J`qTp!TItl*hpH;^R&rnim7KNM(}`y3s={jO z(&|fjQrSTW3zWTFHv9@fT@{=?&vvd;T2cY^oZY2ssmG0qn0hovr0QU7a#-9rrLSA};1js%qr} z{QV7#LP+@2|M0|gUiYj_y>m4Ojzt2GQ+XaQT6UQAvsy{%Q03tX^I;!@aL=)^9n3`; z8!u<>V6c%k;c|AhM8o$<)-nKgR1k;Uy)n^cID8o%vs>;B4R4Xx>sYy=E92bGA1%G` z1jpDwP7r65L&p0Z429+fsnaea)CidMy0ABCm?V2w;eXo!7qX7M=E?t=X|s6S24k!P zy+Xj2;3T;Y#D3CAs$Wp4l73$34}YyZpJK4NqjaOopZuxP%^8i7_vzM@gcnl#^y{+N z5z6>H!8R%IgdgM*XpH-S2Z4(*j8Yx%4IAKflE~_P*u(8+-qY!g>;4y%x2B*+$CqGF zRQ%cO(839wKl-~CQo}My_cb=NPp{koAhxzD6tIx@rj&#?9YSD2A0bLqOGpfbuv&h_ zl;C?yLy2*BcviLQg?eBHzv{2Sb}*bm@qe5{JXb?<8_iK~-NGFZ^{37DuHLw3Sr2B07{vnuN}98LTiLeyO<9)b`M=at1yl${3>bv>p!#y~BYoFK=#< z@MR}!g4`#<8P`Rv{yKiv41a2@&D{7|-dcm{qU+2#ThMaIbq^yq3V4VQq?bJbnXTt7 zbNPk1t}uh}z_Gw(8**vxh8Fld#7_*hw++9Z-;m`f)WWGZn$Xf^thLCc%=$;}f>?f} zZcQ2Hj*+GfjL!Yu$jj?|%jGOqP<*-Rpf)Zs~XF9R!s zuD^V|&1nxkR3^1prH`&g>}Q+SOjOLoN$Z~K zO?u7O;Ic<^W3v}iMEf{eB&jguWE_cTz@DjuJP=K}UFVlfH3;(N-5(NR^Qr0)k#kAJ z=<8v;6r@-qqf6!`q)Ag{{|a1{JOxNftmpl5FvReAn~*`99s$ukgmAW{n1Jr#HG@Bd zr^$ji1{3PMteFZNcq&G&zY8rltcTa~=eOhXc(oEqg)_gOYIHez_1OA{5K@p*sb`e@ z<@nG}isf|4ldE~kRP`3moUjOKXc@08tHMgZhw|TPq@?>i=Ip*AoOVR@&^cXkr3$qL z&ET1Cq$P&K9a?%vp&6C1<_XZ$H6}_jusH#y_LBIiv@&W{f0_+GIibG#(tFNK>d)8CX|q*=H_uasmN=o8 z)yq_yIWAdOlBM*mYE)DA7ic|o@(-F!+pH$hm+73UD(9Ez>~#Fm7pbjm+-6Lvn7smb zg)=jHcjmIM^E8V~5dZ&f2$yj|HGiw%`stt7+c@u`*zc7|4z^40RkPva^`qby05lAe zT4Wya1yA_Tr}@X0Qn{~L+pd@69ziXEH~!D3UwhlGd)p0zJ)46)8n;&$t5?&XRmQ|F zg#HoNUCNO1tQ_LiSG^uU4i|HOthZumW%ki<&d<|0l*>Nnu@J_-nLBSrO0f1*ApqVfJ`+O)QK)Ij84qQ6r3yReTs|$bJ;t33EG zk28ZX&Oh_ktqZn32=&EvO)ffBZ|H~WfhN~S;x&#bH$RA`!WC6!dpyOd@CAQ+XoARp z*xPjW%5X6gcud6Nc|y!p&|@j)G??6F!c|N|1m5?2erQ<@f$)Fm@$M0S?SFr`Zs6C= z)pQQO_iL=+)D|LR%vX4>_gg4-tJ90#cFrd_;g^zAoY}O`wAv4HEx4B25v`!+gMV9K zvfulYD-B|4C}BbhZ?vKQ(W$YbGP+XU0C_HJD#-1OJ$l@wxrYP0_{r zh`gnKf4HtBSn7jJEJ0O0xA*ED>^$UGUALqVP5c?P=61%eN}IaYe6cr^*45s z(%J}UAA3Sv%3Q9QcFaeq|Nh6CpD(j!8B*~NEm-?!d!@Pu zzB<}K0!|8fDQ*fmPl-GAZKi=_#P^~6#-foh$B3j$g3RJ7JmyB{ErZ)r5Sf(WHU1=} zTZB$M4Wb&eE2(ea~sz~_O?#`nTDVJfQOX5>P%B>H2E8{JP=?sA0Z zRmOPjVqVW_sJ6q)aiz@Rb2o($jOq55w}HayCb^x@1ky(_HFaT^tjWJn6unXR-m=EM zIMu6CO*>Z2%RUL(GtKCPfE1eXZ4{8B39hD<^PvMLRHi!ND!^9=auOH9bcbl}q^0R@u5wN>A3lH+kkI3;cA=t&s z!nyv7UC6uM0&V7l!2p6YPwRXZ;@`Pw{|{T=7+u*DeHq)fZQHi(bZpy3$7Uz#*tR>i zofq3SCcpX5tTi9z%dNN0ty`eh zTda|Wden!kCON5P7>GKAvE4ka@yZ1M6SYb6Kyvwm%D5>j%8SLKhGnvS0fEIcWZ?L& zEOyTBT#Vl<ta{ssc#Xh*ZU4mf@TPhdXh$l<@pDv zB48c{VEb{9arR{cY#7cVd^p;T;kQD|Cw7eW8k?@uM{q4gJzXqwn+V^=<)Y9u%tczO zn48av#20@=J30P&I!Sr$;7-KUPm;Z3PfWh)4YL$x)lZh0)3M@SBHQ@Kno-!;n`CNV zo6)hZb;p_=9oJ1V+3)M=TetI(34EU%x_BOnl1(4OF+-G=QJtDoyPLzc>VuF>%l6Q( zZw7M({f<)_1>3Hst)xGqn$fKA>c+jhSiG&*tM1BQ(6=Z|h9pn<=i#GZ&n0d$LMB-_ z7_p#IIqH}9DZ^XCs@1+62EISMQ!>oc^Cx3EOAvysOH{;vLJ2#eIBoeqAKh843gmSxyIGm63S_gSVd)`1Uy~lQ znr4Ui<#kTlJ~Mu97sGU4g_BbgZq$*9Pt}o)F;9smZo|o{Y{JR@U5_72N^xgSrJ2{4 zCn~zI03lvEW(i8D$P|)Vk|R2h@EHu!pg>}=u}6h!-7?ZjpeR0geTj-WQjVi#K8{8@Qh6J@{+KDg|C zGX)S#sWcqxpzyn_sWg+!_SaNKH0q|DKbZ8U|BQ^c@-t))@DBu6Mn7NDY2+R4y1iV@ zm_~ikyz2)hQ%#f1#LpNrb3X=?Oywypb2Zkq%-E+$_TFKZWcJqj$*O0Tw9JdGVU~Lr zE%ToT=7Hslqu)S(@I0SVs~9DiRIB)zfXY;V4C!@>mbTY(wBs=GLXEEor+}zIf^m*j zkYT{oOQC29s)x%E{Y_Y+JRf~vj%Z2gT6n0;dHo#MDqjjl-&UyU$1BAAlzI!$-xOPC zSnx`Z`W4aHX-tXe*HjXQAySSrQb=t+TJ**mTp{9V45BwC8I5twm=jgG(B5EB?8*;z@tzR+ z)srQvn+zI>MiRzy8cJO%-LtV2orZ%Dm;7?_#k72{`juqvv}yI*{(WZqtTE3THcKZANX;{F z4Y@H2aRjEr@yv$G{BXe>;aV+8rD4?cwlmw_dFPQF7UYUSY>RjDv$n02i4pQE4jj|U z)gcL!z+WDSvB1&#RxO9=u6Pz~J5`r-F3(7`X}PeQ#^XfjFFhf82TmuE8=0W7BE@lW zFl`@W^cWLsN!onzn2dV4asSHY(hG~Xso1B_HYZW=r3;=4S5I^*u&D)r@GZ)nl{B3a z=7BWTOQ~XsoAC-b1i!3>NcHv$UZLu&8Y(cUBW= z4*e6)8sH8_A75ECEi~gY85*3@vZPJUl}%n~dEmh(K9pr_6FW4d{ zNc9y7fJC64*lBar8GdWwaMktvvg54gUY>w4@Y>;ZrmIvNg!O5W;G}1)huJdRNDa~5 zodc+?vX!AV6B4A#gt%%}yI8S=IY*C)`xuKLejgI8)^_GUbjd~UNTB7gfpj%a>8aUdJ`p{o z5}>xDo6yZx9V_Yo`$->ePg0JAMPcrt%zCIlmEoWU<;R^55YERs;=wGpzq zeO1RsS(s^7^H-+Hw{e{QN>h1p{yZhq61wWTOmYQGIm~$3IE$}3x!NIg1$7<`%^z#3 z+zM)=3aV^Zbota2Id)e%9-qo0tqNH=o7KDQLdZw2RBITrDfu&+I2!ns*)vyDZ3M46 zH>RtQH1mReBv@zD=LgRvp4L4div-U)x*?5=Pzv$7d_?-3JOd#Pm#X+nttd*xD(Ebg zFm{)G#~b`Y;N|z;VTSR^{%9UA6a&Hto!P$Ri4if+0eX$4;U&N?%!k?N1t^pxNub;AkIXg z%D}FHF{GEJBD1h%649>ocA<%YlUSX$nvqy|5sAVjCOs%j{iI)o@2AjdfJ!&mLs1Gi zjk>NqQwKj0-(r;_Ssaa*#{&N|O3yx3*X0-b{ElkLF%XS)Sce zgD2Qp&S;SKM*%@8lh?ZGP4+Vgg+HIBR-^BC%SUFNE`AH7Lg9yzeK0W(FEi zQPv*{FC%79O}QMAvfp6(d#Z$bS-MCou9`@oIJuC%K#5?AP+lz^Jjf6=A9Eh+dg?IWs^{X)Pz_2*M#bV=_1!Q%mWZyM8)H| zvgwyPmW9*L%MsGFD6%pNFr??{m2JxCI5s5?;8>$!kNz*N>_iL?Pu!NIr9sD&hVI$6 zQi-)|FsDCjkb+k+2&$?%_ji9~HKz{FTKDRQ4$1DkLPA&L7hh*_%y>_*R#9^ML@C-L zIk2idn7wm~J?ZvmnHxJbtUjjRCJmO+500RTWo;=Mxl#o}4%5EjRE@C%*5N?~yxuS+ z1)r@F&z=k)_qKS?Q&+}|(%R_vZZ!kP(C=!)so^cM_|+29=m!PdAXijv(w?J9=m<#7ye4m8seS6 zO4raKlyc6dIwC0zx#vBF= zSD`wK`!bfEppC_0KkcyG*}>J~^p^Im_-0&xO%B2`k+w<5x0sX$v9hfjSY;BOd*_2Q zI%~-C6ub^A?+K_`_aUikw~8ou<;pC}7M+SUoH277rK>aE+8k$hU1!66x$7hryNPOb zML}I;Fm;vLWt=wzjcP9t9?qZaNIOxAM$v>vuZI;r*Iwb;)ifj;JDD@n>Il zY-|3uIGrxV=nzUV9!?x-jh*r8Le}m9jP?TzH)Hf1FI7jnB77UrdrWA^Y-79AK&B|+ zIN26K(%V7U_t?92TrNo+{|jp{9D#eaC^p=?S1}epO!Mb!r8>Wi;Lh|Cz1DyfTae0} zV*rUATjBsyZU4!!PDr9B3R_D<__qxA_70qfZ)~0jK3@QA_MyyXYIt_sLReQ|0snKv z9F_i2?B22ru$MhtJk9ka#tt5mxQL)sdJA>dsuJxm#GYk(saRTYkgop{$vMkS=KHW9 zc+e%rIQ~l0Gu2OOSC4~r;Pu}X?!Ifdd*>fi!{BqIZw~K>I2~zNusm#UUh=_0xEVD~ z^qgug;3CcOL{vm*z9#-+$tmL4ggWF5<;b7(aTM;2r}$bbCHtTch=#=dF5G=wumn@G zDss#fX4lj%JRhLHsKE4Wv|bW%T*lN~x)x`ov+zrkA!^$|sV)|VsMJ_9FqqQumn^=1 z6p34bWGq}g-Fij}C_(mVw~kN$djhFo&xu%uEZ1(`%x^&hp=Hl+;#Qk&y_u%h<78{40^0l+*@WyYc~))JEJ6cYN%pS`qA}?oVQb z0Fg@(F|nH50m>?tmq!u~Fp%rHNp%v#X^H9%xsCqYv(`6+=DJg=DUyzd67B*UFUQXC zn}yKu#K(&#{>A(En$Pxgi=C^Vjn`5)riwNg%NFm@|m)syw|T6VQ(e@kdVQFT>}m$0JXLP`rL* znP1Umk9Uwk*u;lc)#KYCvS|jq5hcBh&9@W6IA8U?QY?}MyhtguU25@(1&%+CD~pL} zH)JrS@hhi~jQF8N zC@!ydMJX;dI6HSZG*B*(Wvkj0E00ob6J(G2y$t-)R&Fgli*x z^nh@INyu-V>%O-jx{x_X51pC*x)cmK^woDiIS1}ze027wZw#zLTM(Q1S9HB~r1#0Y z!^WW4suJ~K$xoIIswp_>Ia;Ku0Rr_(FOVi+8pDxQKI{7>VJNH)#p;UcZ zR+Fd*1YBKTqU5PFGs(1ip}TgeHb~EEncT+c7Ep*4jt1@df)s876iY3pCcHxBA@zP8 z7I@nejQd6L4kwgjxtp6z(r2071ckkTYy%2`%n=@dpg2MQ$p@N5y&3H*7^0F4ViI3G zme#ER-7r&=FIx#$xtZk9fFkmOjr=G|2I0ZLNUh7x!+&R7hQg8T z34rAk=vv4@8g;XXi~uFmj{m91KUYm4+A;8dpI2NA8M;vw-S}dp-j5F_3>9lw%_x1{ z%(oF!an0Ow$tfk1z=t($m0G1k;-(Q>ab8Qyx(135zH-eH|3eg&d@JmMx@qdOz~R4g z-g7It1!y&~tG74A*Y+Tfgz~rhKMARaM=HP)Yr7i=dxlxi$RZRXu9Mp!70dliOQSYdb51MC zP&~>YNSC{9AhHT>2QfhO`+RuW*mpKDiCa3xBpVRvm zkxs$61&&NtpZ2}lFYXdb3x|ML=Z+@}R6|yAOq`n7%X#APIKWb@oULc2b7B~@Y}DS6 zkI5}r=c;I|yV-lHdAr-!5QF-eE$aDIm-oUQtf(JTXGmjgJ53q+TGxOp17>H?H>}KW zeRv_8q&yrO@YQEb}kmomV_LWxc1J0*&S1!eDmk-rtokPd{M$}$e zGAX^D`3NPWxX?D^&5op?503TzWJ6*mk7}dUrC9f!&a)#(ET>6zwru?Y@HMZInh=h$ z<_#hullJ*`fbJwO?5g@V{?NGb8)UZMCVwrqH2KjncySsO77$ii$;A=gIom3N)f9wf zKh^$|HN*Yc}B^sQf;BqEvTv{a^j3j4u0A+Omqt5rV&Ns$o@9)Cv zIJq&5oTfbL+ef_0bkG8qeHJdXVm2@ z!cN(LnUxc?9_ipHzhl;9EfxL}CTMkeJgIEt5w9eijdpvutIh%?tL*@>s^0*~*6si= z3z~6ej7YV)zvI^#CLZVe6AFC>CP@z`kpLEB9XLGcI2K?3>~r_v4<)GOPQY!L*zX!d za7hN;FI+7!y=TF=M0 zC%`0XYn%O5mH=BA3L*<4$CTGdnP(f-ZU2FTpt_J%Q#a_0u*EZGl>^b(Q?u>PiP5dKvNl$w_M`gtfdWSpIVW>mvrYxj<=&5 zyo7=p_=XB2Tq6G{hfObe&IdO5M5&M@UThb>@vvnO> zZrrLa8ZQvPX7B_S@b=seCsNu}s7dY<2&qchN@~qX#J}wbI4Zb5ye#=(SB$Tb_Y6=i zIeR{CR|75GIc)qeUX{DgHjK+ZRK6RcWvYQ90@ZYdD)?ij{gJsvk2jw)9x*`mpxmWV zfcoh9I}Rl@JD?Wq_Pb28?cX%0iyV48wS6Br30>gCpd|DMUR03jcUHe zpsEz)gr3Q>_md{f#ty4Y-BcTRsI>Kys}!UeJjl{XlNP|oPJIvDd7XLj+Vx{M6(sDR zNm@-3H;P9u(wqz59`y^@A5$8d_FM-FAPEgffnt9>^TvfB`31 zoWlg?doQa;W*09_C+tObw6MM1tEsyiSKNM4 zM$=Rq?3G%vG~>oPf_@S9P4nBE2udMoi#J;3JrMVYC`C|9nPywq;*xd1<7`93I)VoR_FWlO3a=01g^t{03dxIzVhKLWmH^R=R;>zRV z@+8Bf!k9Lp+41B;%;?MDB8=Q=%Y{KPlEd2#A^1zsM zskg5q8sUAiiSXol0=andtinw==w=Q?y=o)4S3n$ddjP6=tn=dHr#wH(vmewY0>@wT zs~ip$OBx)IaVm*>eAL&S?SKIG?*<3%0Wd<{C}ao+B7%G%MG6OAbH8bUbak{t>RA!2 zR1Hz*Thv98FN6$8IE-E)Ro&+`g>h;fUte#vSKSY9Lhs52%)25_KYaf86Iq&rtl)4p zAcM8$es)~8H9%>t3`EKwBN9()M678j*LmRD>V8&ywP85ve$Jx1ZxGcy|0R9VAZ|hS z>%fiO~b&plXyutdVm`n`k@i%74M&&M+ZN^d^bF`(!T*98kDKDMZLnr zr7LZe)}uq*m@2@Y>&xpJ!ad`Z8yUD@7DvA?KI`_Pmb#G1h4!J3A`S)&)&`GP2uR5PLpP$sUk1PJl`n_71?1oU*T{%JY!I6wc(RKVCDxhSO# z%-Il*zIMs1Zo|Lh2!U|=7#?@6gG$HU*p%)W%DqYsR^p1CG2;c9{m;J)p8HrQxfKl1 z50lbbf2kCOPH#_B+kAbzVT^}T<;%9 zqWA!&-iRO`nR8Pn;y(Ka`(lN-i>VTvk)rYd)Dw+D+|~9H06vGT_@@JuLbA|HAshCcZrD%n#(0o?Sm8uOVKfG*uBHTXvyyzi3);_g( z5zo~Th|3B#9srml62B9R%+b(iW?-jB_yWr>LFnb_PlWJ`4>B*&iBQ#oE@#oc{dQ|L zkHr{e*}j&1h2A|gIYP0odj!riD8VC|6-j`>!OSkHAp_x~nWtadXJEf?yZ>UuJ!0R? zH$-HYL(u3sMdXJ=$mq93r1vBq-d&TmUvM4=^27Rq0VZji&o?dO-9$;9bC4c_0Kob{v1WZKgz9EM+9-hG^W)9qmcT8K>{E0;CBqyp67*Ou}0wV29ES2{Yg zPT=^O3w*V&Uz)zPHn41m-Bf2?hIB#T+B!zULE!B4bwr97Y#Ize@sEL5r6aH)Ts(52 z;oUeAiLtQkoOTjcuWgxmx{@xXReS7)zb#1#Z;24-%dUftvZxA+; zb?#Lr{!H=JMwchH!b@0cu>e3wg;OWE4P;S(kudK7bzS}?hL%#DdqyXK(I(lL(}21UrBIAb47RXQP?f71;b(}QM) zK*-pNe2%DYV+}U+A)d50SQmV@H>Yd4V zMLi2l7LyM0VB_QP+7F+^;&pVJpFooSj6~NKKo40b;G4%Ck$kl=qxbwEez6zo%-7>z z-PS?oRiM5cY@h@*5)8t`cWVSLQNil4a4u9gLLYG$SVtPLY^>8td_Ip87X5!lkQ@x;Ofu0X>An&Ad*)D z#gyHtPm9SIDH@-Ur)epWcJXgPcp{t97)bi5FiLmC34HPqKhQsNuQoiy2duAg!pj=T{(@2&;na*Rs*bZX zX@k4vK^b`iTpW$0GwWY6n=y(6i#T(*RVw?!vX9_CBGZpo&yr4HdG6{hd~kAhTWl5k z{M~H@X*o8-;Tw&7)@mcPYAwJ@#}LXuk4$^5|M-;8YOt4%L|iqd!xKa_7Ix8;eVa@2 zZs>U+(bm}i$<9u&A<4gWR`57i58*X%2-x3cT)1=n8Zi`5&@dQ}|8lDOx;_4J$px0b zZ_^74CFA`+Z$F_h2r9R8eau#bsP+D)hneh;t&mE zhj(-Mt8<~AtF3o?E;-@Kc9Pdjz}aAgzFMOG7LM-3`kwL8-Gn$ZqB-(vCLK*nQQqKK z#$mXR&bpVZyW%U&SEE=3*lP1XK58eHSkRHz|Il~;NsqyeOsrO2hR%vlhvvwbdVEKq zVD${u|3>-v2UV4o;LaP`q+#?=Un(;|u!gf{EwKPra_2ynFQAW#IXtAcHJ1YB_O{`A z*8)+60v@NIvpZaUT%NQ)YM4?t<;*cUv8>VnnaWYmPi&!1}X_fB8_X_Mm0$v zN%n*xmQ>-FMH1C0D^tTfB$DIg&Mif_pQPCb?P%mYu77w9YBvR!*tGNVtG`~WZjlGu zQo(K&IOER88o33c($jT3YC6;?7Xe4cKh#l}EM@;2^}_DWl5MF(*Qa1X{*$7mdD@ z%bcyAVA6>(2hZhSQa2)P^!l;qHYc4FOfRa!4@+t06Q3%|OQLL?^_E|fS>RlF->?@; z!HS3f=+8`=OPDQYM>5Lz<>`3=!V}_LT)4&bJ`ko+!EpiKjKhqCQvsDQUe=A|ovCWOJu}P#aU$ z6c7J?W*I3ZP%&Znx;e%&V2%+O>%a|;>)4Lq0a&L}C}KaQ<)J6Ct*Q~OB0KP)u2 z)wkimsVcIn?k>Y)?9#V*y+47m+~QdyWiICNIdbW!-(C5btTG51pvdCTtv*>>E1-Ai5?$Wo-lduA%7d12pEm3-M0T3{5N+319deIes;RE;-Q|g_-2>1qLBB z_Bl;9e8eSs}HHp(p5 zshhNI_NjV>Ps^;S4>2=u)U2CyeMU&joEcytH5G~JPUJ&-91zI-ZOJ$U2D(0WOum3 zwNSaeB*W6YB{tb*$bPhY<|(Kovu4qX+G&Mt*)4V{Ay%)C(n-kP&QC2ftqx2{;MY7; zCZ*3S`?>ou(jOiQWCA116f62XUcBq9!zMW&vE&ofub{o8*ry4^xXF)&-}euN9BkjO zEBo7VJ(af8@%}%`*!$0fi~>Dhp6+5jyl+b9MrtYw_ILhf~O-$C#CIIt84(lQA*Nsf9s<)IZ) zCC8*NL=K%rdcO{0LJ&k)8>bDWHLLVyNOv${SGhU(N@{bK6}8e7K?SXnC#m<_5_L+r zhMdL<`3gK&0M;n7=XY)hQf9&8Vz!$SnkZfq6 z=k^765@lV$8zD+w19KvW@bC}!l@UlZ4y!)leKj{^iT8F9~q3($Ly#CS_RBUWXx9v+@Y%k3dY_i z!8`f?-`AAjY%B3Cp$w@YFj}123Wca3mH{HnOfI!Qkic`If!^o+XTsE?f-t{sn>p@= z8|wSPU@KVj$9jcB$J$}|v&iGn=~&fa(=sc5R=-B)NY=Jd<|z)ZmN|zH_=KFtwNd6P zA06utV5mkvPZ26nLA0#>3}SCofb}zO%d!dyS;@85W~#@G1S@rR@0{kzvIRh0k78~h z0zW`*%{R@?gfHrge3c_tM}xua-UAR0#^{UUt8MErPDbK7%=6_N^1_jp4COK{H>AK* zKLf=-Ld7g7ad8(dFH=Bg6)j~u0B}P`caPA)WX5OPRW<`VrUFeQ45Mgq7g+rS(%`)SIpd*e<}F-!dP zU8Hfpv}|Co>u>iT((`x$ZClL<${cL2d`I*A7r!iv@Ckd}Ch-0o)RN5y6*95-+O

z<~m2U0c8M=0N#>@>M;c#=1*_EpWc5*iYuz$JM`U~XWZ2LxfxaH3>-9Vw;)zJTSypH zY+c}8YV6?qbY46YT51UT-wMm&92Il7dSNGdv3~ops}9#NDEmIblsA6nnFA40`#6*-~eaV7Z6!k0wQLj7Z3rIV}u&4Fb8KbxSGq#cn-kq?R^+NkTaxV4YeIn-N{K7EN$Y3DcP)tBD(0ls=kX)d6p{1z_pF-HpkFL`$#1XnB z&}bJ^dSM--i24>kUpL7sV@5J|U&KiBg{CJrjJ>8O_5&;~kRb49aNoyzE|^tJtMuIa znw3WgHBa6E|EKQ5#=~{aD06O9uuU*!-OLph#7d~pbRH5n&l5;TP z)PfBcy7qmd;JFHst%7tmfUfzQAuuQNsoONOg7fKN*pT#?Dlwp*{gLgB41yqnVa;I`l#U#L zx}FiE-*@wleIwy?DJj0{adSbYy7q0j$DwlIBdI1zfT*)VR zi{~)=n{$Vf9_gX1n(3NX46tMv*sPh@X9j{q^`6%k#Z*M1HN@(1z0cG3FgQj@FnC5K zFa$=Y=zM)|r56zQSkNo>y`WFDcX*4}pk;&!<>qwM^Z%TPg(}U2mo8)oBOD~_FV&A( z8VB)x`cb(grx!~cEvt5zTg)!2aLbC0$5C!*vp$?yUTe1lDt`py?=G)`*ipHm?{3@{u#+q%}8zuvo95$FYyO0lAs(kzq5Zj@;d%)h*M9 zF42N5QQKk!Kn?`FM z0{na*X#GENkw)j{JW5!XD~*dKIx*6P z?}-1JS%~*e5&ZW4*qHNJlHhy0-G7hY4(NJ$dD~w@e!V*B?DayJfr*;o`jd#j-1nr< z>*XZXgaC<#QZ0J>j)q#DK0=X$@v}4P{OpVsr9--b66JGUhZNt~`_&-J<_#bTi!rx( zuu(@Z!NnP*vY+Ppr4>r{>C_E)Gr5=9k=*0;+&JaR_kOQxcwM8#lqRlEyj-rS!UZ9w zu~joN5at|zCuzhO6tPoZT5Qa!jx8vDJa8tg5I_a(%0ekfK!?zxfy1T~l&7$w`|om` zT}p`=Y*r?cbYn5$7oxgd5d65m|KpfX)2qt>Hd!uf+B)Mxb1Rv%=isfCutD;fYFMBG z_m?ra;Lm4?Yqfflrx>C2KoMoAcRCSAc7KzAa8dadxGo-|3HGEX`2ov7J` zH0u5aCaMG_G}(poZOvZI-Y_MS=?;^etd)*Y+{-{;>t(FnuyXPWmxJ!pn+KhC zZub?3gB%s=69Jh`k4&X5!@b>UjRjDi#k{ zR26H0MNeN(twly)ur{*{zR@kEEUSzDa4h;uarVeBOSE-KgjhJbf{uSgt=8fUUOLV_ z6dM}9;*VC4qlIPzzydAB6xSRi;MvAyVq@t;Wm=3d1Z;$^`|*&j{PsbWPU!tkD2wO7 z&o!}m0s??gKSF$rB_|E(+Bd!?CQfDlG{?JEem0oG%eZPpr(ZB~F>}T+wCC07Ck<;| zCyR$ut!p6Kz8I#vbJ|$!RM}JU+Wl;F+3<7GetXv8u1A%eQ$@sL1xO*UxR?>grHdy;%qtA>9D6RQ<)Mig<1~u zWYWwy8UQ7d+Xse#LbU|aK?n>7^@V-z4&p~M4WbhuYyhI^+#v&2cYZ{V?AL({fDdnd z+RJCh3~9z7Km=_=p|yRdY`j!jppX&!tAoVLahOy7~v2RG+j6x}?F5#6N_)v{b2e zmPcQZTJ4k)ItdiYVYV>twtDT%)UH>lq-*#X z+R)0iQf1NAVcQXH@>ap5`4Yi)V)ncu(y;U$#lm#rLxgDuL|nZe5JD%IQEK#J`1?Ap zI{p}`A3Fv8Q$0H44)R1eSq7i5s?p^%Bw~(}8muP@*r7JMA4ZOTd)t>?R1WD6PSPV9 z|6mniTUmwXEEWTJ?HqZsPaqKWxER%qlB2xXnVW_nTpaVoZzB^k`;Gic4(On5C;($o z*Y;z)SQ6Uwai|0X=@bo$df3Hek&<=xIP=XLJgteE67~^EW}A*68t}GkD4rk zz_6B;dnmfHPQPJOY^?;)6UwF)B#eWqNnkDOyb8Poad(Y_K+oFtN~gZaP3avW9lWt! z7@1k7U*T>1>ycPueSVRcDsBVq1_&1zDn}uNs724Z6!<)@<3|on(-rqFF5tw7 z5h+s^+Rqvae*>VG)0TzG}1R@IDt z7E8ss8M^X;ffsHF&uoUY$qWC$S{Z`qWg)H9&+L>zHdpPR8|v&JTkYZya$jvpI3Z6K z=S6$=sVH0tYMKVx=a*ZGp3U6te$zSo>2iOgEe`5IWdCYFY2!XchMM9an|5ZCtkLlx z3M?#orZbDmv*Hn1lQot_I1Ew-KYp|mU^~v*pj*1AsUN9<)8r5>8Nao^>0&}@`kirW z8*cJb4yZi~WBK%B`4INp--DBuWr(>@-)qhlm(rqkiR`SSbaVNfAvl4~f;yYA)XR%V z5gR>;bbf5vTQxA6jLpI}6gY}czYTax*rOCToY%?+D2&H^+wQEUo^4vF)F%HIPB8!M z(E9c^QrmQ3IZ(&TIg{r77cyh4s*@7BQQQ^3)&M`bh)68hacB(sMYu@z{uoexh-(}s7CLVn~d z50d@2v?Mj*7oIVD-~}$4Y&e!1s3bLdPL@VOgwxvy;jAd!o%5m>>NbZZmEO2j_yRe- z_+lO$$7oQ1*s?)Y28P1fTrHxjm?FHxi`oPZkMhLRPDSQv%*LQBQ+1YoBN`#90@t<< zciZ(wUTa}1#UN+X@u0I@B7)HUQ-r@;TV79RE`?T;?C8$|lA#plY|m60vGT2X*!2M1 z{^`>ggtg2HvTE5nTum4c0|>}!-5H^Fz5?210s@Sa%Z|-;q>)LSqs8=Na~BibQf1e} z!i-4buYM$jcGPN5y3zcQsj1i(DDI*TNQw&6F))FS-&UK@3dsPpJSPf8drn3hhp?83>k>-WJQZemf<9Ug zMCb`YW@ytx{!eqsA{R&E4i&u7c)6u8chqqUW~JqS zc}&V%vmu0K3Kf5Ujy)*|JvnC!r4|<+P^jS^Gjw9>y=5=oqjf_6GYCbMKsE^D+I>c> z!YUnc^1wWJ=)~)ecJ?mTee4R&|ME+;a8mfbX!ln~@1{Ic)vkwh^mG$<*!k0LN6e1V zua3d*FlY?Y;;}X@WLgOP9TPcOm|rRw^osU~rvWk97;LhQ6USf4MNr1nv?Wn~a3bH` zBQ5}%>6>P{w}fx-w2)W)Nc(xJPnxgzs(1~O&(EL_ctZoeXQhJ++7EJp9b>rJJ?5ZTY7Jww3Raswf2@3zMQtXTT*6)Jc>en zCCHzay@SaHzA?i8#6OzP;j3s zm^4I1-%sKzRYm)JW=CZsMy{#%wR6H!Q~}Q=RAZY7A3D0j7?Fc&L`Mc8{JRA?qzu#R zA|Wwf!TJZPcc%>RT=D2K037F9jVwbZoWu?2HJbh6=Nrge?`~}}6&N`-&M^++tUSUDZj8#Q-G-&3 zvv5JHCBJFTd0(9Z{-N_8*)cvhrVV`J@?#J1c;5*vHf zY>Kv}vs-=mLDbcJ#u4fQ^M5^MHG?`@I8S0v3TJAR;8O(^QZeM7Dd@6)Q{Ewqou~g` z{o{5iS8av`#)yP0kmRiT;z---zdDW5WnFyvLf?*RR#*6Ky1DQ zNl1C=RNg)BBo(hr7o1+p+I=`Dga^R%3<~fmiSn1uMI8G6}r?>>gp*0DzT^Jgr)hnWgqw= zaZq8(P?=F~Y`^4?iWDDTH#(iQBU+70F30{ge0i2n8Ta!MuSV`v|Bt+i+&W+<IzUz&yc7N_FgM%s&@wvid`c3BmcJj8r4Tu9oOlI%U z=(`)zGpah$#P$vpVKI9R}N1kzQlv;?XaFwRS36_zw_?jyEl^+ZW*ye!x(L*5iIOp3@8Ir!N ziHV*sWT_4vl46NN`}^LAC6muG%uSMt@o-N?hi#U-Pm!pfIzM}WLE z5FF=%dl;kW$Q4Ow3Fm}HkZ@yNK9rGMd!Z@!$NC44$JShkb65Gp2-Rn zJJqV1ag&?pcrG-DYV3#)yq9R5_P3L4-C9P7a2+ysA+E^OTZC{KGb!$xYUlGxDcXND znSlyNFf-~yuKuPJm8vcr>oBlYqJFvnv3QfVOJr-WQ1tu;U3`x-NV|na2~saQ!~dep zzbw7|i0$#x-HCc*-ER&wp(gcdvE1DX@n32>UV$a>TvAmJ;F;UgK$csnA&bQUhxAQ+;>>f7bD2{P^nP}O= zrt924kU6&N_8@n(bcP1I71O;BMCBnMS$uob1dnsIRWNMSjaWK9POjo@kIwGKHjVrS z2@S#umf=OIw>Uk@F1MT6teh1@uDTjB{J~QTK_F7g{2>5g8Su4V6diqB!u?I_*S??O zTo8}%KxYsrQooZ?%2p=@SY5@bOO+G;p^=3EJLv*wWCi>_&{o@MAf>6inZz?l`8TXY zb~`7Ck8o0-Ov$hF=k0PIt}M^@cN-sP5}HTF{Pw$((>b<(RK+D-Zc`Kn#lJyvjlPTe z1gT>!1)U6iL-3yQN5IIs?ra(Z_rKhMA4mOuKJNvWv;`0sfxX+qj~4!v7{fB%nJ@a6 z1mEhp9YAYXf!j)JShU0|fU|o2(m|tAZOI6cxFS+gA>kE~E zH*-a|d&-8mkT*(WO)g$<;Y2ZT%RLO^dtNK=(S@@a!S9v=sTp^$Dv=p?%RXrJm@2eJ zybJ)7EIi{*PL}q?!i4CMxDOq#r<{6e0%7T;s$|L{F2oWenMz0c7rG(kyNE~#PS(a~ zlpK*snNI_7@Bwb_FmAH%ip5v=S#`~9GuQDdy%8C? z5UI;E16(jXy=_mUxZ^6aXZMYY*2@Kr zP3TZz_ehYB%SxtJ=P6aKYbw<<+4K;>eBMTyCC9|fZGd5|FWRrK0_gk*63rG>kMn)_0Gp*bD#o~}Sd^k%gU+>Q~ zaL}FUAdZ#by(W*O=GGaMgy>%_yWAEgo@-LCmFTu5RtvEO$FR9VH9$0N@Tk_X$x54C z7eC6+1}x4vi^d+0@_Zw>Ov*~XVf!d5m)w7Osz3+YT)SZe_MkTm!;;d(N&UMmv2FnB~9NN~0I1b>a}<8250dI9|HD3dR?e$MbQ;j8qwwFd19mP8b-js{SjzrrM)-J8^z$3y)6lgWxP_*st!>r4tbKr8 ziq^eU9r@73)9729UG*<#D8=gNfKb|ZhF*db{qFU54pz|RTL)ZI_mbYFLuUzYJcfKo zvwM$vTg9A!dFNY2cT3A^5JbsK4OL|^tsk&+io4%QYWk=CZ*6|KF@_R%M^96k^HN@x zq8i2oGggUa`8fC(S?DZ+@S{}h`Sy??JhwbfnS~VyHe*FXeuif~G+I6Q+byF2Ae{9f zE`wwvQ%1U39>m^<_T!!2UQd&3wVke#!sXjvUAq%{xxqb1>7B>Cdxz{S$!#Z~9CvP> zu44`}Fe_WWUiG>iE9=Gq5#RK)+Y-_E`M^1dnWUV#a0+Nl3ilflK~HH#Y#Tr)JRYk% zc5Iwu6^#)#&W#O|PRC=6UFQGc>(n7EAafqUsZQoUqe9+tm5@&HeO}qrk{I0|VhkQ* zc=5el9_qegdT?;L-5<_lu6ugeJU+46-(IL_>Zv|;@bN#xb-uyD06tDu#a5DampNip zOZwo|%gv%G&eZBWGikq9g?g*aJ1nSphTm_-RZwBzzuPQwjwqO&aWYvUKfGmi2QT>k z+7bpM)2FVyA*oN@Mn)>g$~!dH3Is3Ngb1_c5)0ga72z%}n+T<6*Ch@PdkjI6kuc)W z88`@G0a}tJ|CR~vqrCUGWQ4`M4}@?0L)n2H|DxZeEu84VZ^2peha~I#>vBhu&8wT} zXujOMEsGa;Mx$<$2FFSR;{n;7H|&CN`Z0wkLPICE&u8T*0#^yODey&ERB2asQhNNP`ME5HFQH zy^Oy~CLypVcD4J(1?*VxzImk0`kJeOLrR5*b1Y{hFZTvjV#*E>B%k_8_O;pAj{-?N z@Rd>QB7<53u+fNvwjoQt2d9s};1UP9h!hvoKC=rjavpPUqvNMCRM{w^3{z3O-a|}91{ja+e4%S+?q#!&TTBXCWfOC+^q~q~TaPov&=^BPg#1lP zMGwbM_8u%>N)gCPnL!xvyLYG1us3K)_$f_ds5+VC>0!FW8d`V!nCmgeID2+5NQg^; z^K-#hPS61)ox#8Hx?FPrbGLYP%SZ$OQ-l79UM zvLguu^sfHjkR2i$EnD2Uf-p%p^A>%qLd;y^W~QCJlswl+jZmb#p$rpbRDYOUG_9Dp z=E0AyR5|-vtWa|C*3J0`+B#78ab;p%EyIh9sG zQr;W4oe7+wBUni%9B9?u6*73;+yQD^oCa#%eaodZY0Jf4&LRCoO2$y^;t@+>EfZak z4kI2_0GZ9C$ErV=KtBz}0Vrk_krJgHTsnbWgIf3m=Dd58($dNQMcWa(x9nO2HUkge zAwf(L!lP#F`#pb!PR$6I+HuK6f1_gazTXXtS9M3Ms>Xn+O-`HC27F@^0O9b!k4MHr zGMve8UK2dNPA^dJw(&JS9do0BOxDqy7AJ6U_QFd1A(jdRc=ZSn_UL_t&%9FUXEqwNH-}-(wh&qiW6oplGe~=vM`V?n zW3Cfv$POPWNM%K|DC&D}CIOmNDSV!iR^IB2Hoe~JSjO;ZRKV8?GM0K0mU_^ud`zl* zBA&K~W?e+qoi*13t@j&6ZSR5`E}FD+U|iDb+|hpk#5(Cob)!h6QE{*sgJA~b5e7yj zs=-EjtU*%k*h~{U*+wx1#St(9q6ge!hc;JC?sLvis;WA#I{T^L)ab1UouaoaZA+h& zRT@prN8aob8(wT3OmNJpTBSd(KNjQN+UNw@Xr_OQPs5Z+&?KbYb7kv$N4*NIH8hGx zwm&b@Ff)l+hJ@oyJxskP!|S>!`8^r;;#x|~!?;U4jSiL1uLpN^_;?%xVHaGftHyaC z8d%C-fjQrZB`E4bJiA>uA^(*$(y@@HE2 zHzJYvMqdp61ll3xX9Zpho0fEy&c7#N%R7*2@CkF`re2{=jU}Vt%eNr%=)smK70C!_wSjv)b-j@G z94t#HBY-+Qi}+IsLyAUG?*f`lG3d-R4{Bc-S_z{HFyhz<8ueMBQQB{60~i(c9q?MW zNtF$%!|xdCJZ^ zkelb3j2Fp+BC7O25ZkB?5Y@NfBQ_g=K@V#C5jVKyFDl<8qd;uu45@^%+!0L7+pZ&e z*TAkUdZ*A7dr)FdFgguD(8L7!<8!L(1mbfhwFyRLT&`mej_*b9kjv@Q--9S4E6~d6 zgDE3Fbpa6Y4h9<_uMP+=mL6{bXp^QC7=Qs6;2!p zu+D=jXj3WeUkS!8r+<_AX9$`a@IdRbaeS{0xJVw9flVKkqMoG-Y%=C19e|1(f%+FJ z_s_C5uGln~v;knTQMiD$+yz+29WJ#Ko_NV=fW1Q@=>g}0Cs)+lumqfhwN^HWK~YcB zf}(xUY(&mqJ)}yZZYL4xACqyf+S7+cU263ss=K{~=bW~hH4KmE;>BR>sKL^sh;+6G zY@G)`*{s;|t9spcH%P{xF5(h3Q!sE!btK0IVSCsfNpEVkIZ?llhv)&PVDRH-{kRy* zX=pu|j9s|FY7&V1GFb69TT)~J`<2SvbZY6co%dws=4~D~XmM6RMw+n8o+ee#&1mpy z-OMIQICa9b96`Hmixj)bs0X#2zoE#X(EBhUKt(~Th>Ed^)M#wdp&*6pwBd4>uliyB zT7A*Hu_Ee+T%4)?FX-(Ys{9xro19;|x3BNGr#SBlg!_s!QRRwR2hdlp1K>7;RSdK2X(Ps~R=U_sQv5@fO5a@A9023iDWa*Y0?o zutDJ@8;gxhvId3LLnEm=qYnK&E=LPi$Uz~(m!*}z~fN`ariN86X zAi-F!(mq89*%0tFHPR6fdntm;kGhI7>KXH_H)tuf=Tm$Ql1RkApH) zgi|-GPy3=nhe3ti-t11nrAjgGm|}`P=^sR7Itco9(zfUCMW)U_h=`_7E!)oT`u>_* zKiQ3xnjvbl=U^PyNB(?_4T($SHXv2nZPOn>qOyS?gW_Yj5@d$pj3YQ%WO|L&&lMzhXG_j)gt;NS}`P(nbean`mVtH>k;}Ijya|TY~&#oXG zA2`{p7OWQn*>rYb91_|$yPns4PMCyHR=#G!52d@#F8`ECRqwLS=T#s4KaCMo|#a!k->OcpF?<>$*ST6jU|9uf5~ zPu9fdY+5#MF6#-eS!QdlxO7W5%o}6(w|2SMs&pEsYAT(^P=BRumim!uL;NJ^0OI`J zoQoO)RuzhqfsR|c$?ObNA-Q3Rb9jJ05yT7xRqOtgf&}ENVFcO{pJ}}#HG)^-t@*pY zBMcuYn<%IWSh#^|-Io|hsou}pa=OWJQ(m?xJwzI@68KiPntn0_;!o-@C=3GW3{WEu z5G=$C+LZ^W2l-#X592WeR&?$Y11Uc^qe8%!&)N-G(u7%3cjbcF5wEPh%$aBwkjnV= z12wbng{rt$99btQG358yJM48u;2mDC%sg-TokH&mc}8wHDIJLdJRsV^T06X` zd!jLf#)r#$Mo0Np;TJF&q!NysA2uZCUkznKHJB-PhnfEdH(JjXtsto6VUWmtaR`L} zp#fu3to1am*PDNryI8_x?-8XJiLzg4??Hpy`<87kA`{;VBKb0gALFX)JN6->nsdW} zS4o=eU~3ufU_h$WH{j`NxoFAMKK+T*{*yO%T9}R;dhBbhRhxO#?sWeH$)G3=`2e2l zhvgO*$>P+qJQ3mqXXiD$IzmkKJ)3jf~`ROEp;`=S;2|qKNi_-JVzF?r%6l z;EXMy+xSCjqx(aqV+@j#NT|^`6MGc&ALO8!>~EOh#CHpxK(tCPNl^1D97<1+f=DJesu@!hO*L&Fy!6GK23@!KJFV>NL*y; zD_Ag%poGpuxoUNXihcakGN&;5l54KYXt(Ry?^m6QV<)Dm);>~Y13cPmMONN^s^$J} zzC+nsFnR9xrrmcE-1e9qPs4GutJmXrJmNg=E#oX&^Ktx4+>|9WJ;ozY;Tdpxfr7a|DO3^Nf4ay33 z*A9ZF`oaz|`im=$?`eqZU5FR@kDabDkyE{~S!MBm+rc{QifoUKY-h$6U{LN46nN3v zt=sv=w6FR**2;cOS}l6!+a(ng6hb#pp|AN~WZILN=oL1ZMH_q80Ex*!=r@=(z# z5Teab-^ycZT-y?okfj7Ux~6UBnE~AZDWR-Ai;`RfZ~e;7%)~?m+WneuMb0Gc5S!bF z`EA82gKiYm+|jE=cfv#AgvI5na)k%d@sDYbit_lsroCV+cU?>(?Opm$(;HtA{Zt+^ zJ$K?DcGVuSO<~cW3JEK?4hdLM0(zvfr#?RQUC6QAG!(K%r=n6&i^Fa62_Vv(ACUnv zPkhdAW~e-1~XY%$5t0+`Qw znWxaM0F&GcV4UorIqX&wm|w)`By8A4$5CvOy-(6MSfQ3oJ2{APZp1u~Wb`=)B?EIs zZpQ5w8RzvT&Eue`!AtApm~>rb%dD8@zY?b7B|F;(<_q2$8oepxyBsJU#1hW3$eTur zDl~Eo%eo-$Wm4CujLdC5KC)q*?xix%QaGAK?iTPe*L{w*C=^5L-|;-!C8n4Z)$e6W z&f36uD3m<>wt$y1oA`vc1+KyTduQMCd}U)?OJHFLB6Zf>(({5H`f?0_@tvFZJ_qf(XQEx~&}y-S&Znh z$94+MpBr8_24Pz1+$*@VpGReK9#Ofa`>OU_=Q;JD%QkA!iWov|^MhYl#j5555l6N? zY&)w~#OL)^){q~5M?K<$LPB`A3Uy0;3cg>X!dif>r1v9z@P#;9jqec9GwqA+Z$g+t zNRWC(%*>CnyPoMQo?gi+>X$&#Ab4BGh$zJXPr`^?bBx5XWwhYT6?On+#U6 zg!orV*O`w^f6-I-1MGk;!9o)U$NRoKuy2Gnex;1}h5nCmFTsfwAEu_4?pn87P`!3; ztk1t3T396O@h_7(VC`bL^m1(iQ2HzP4==vJ-H@M1m#7^;#n4Z&wc2%E{5qgr|Sm!mpgd z|F(tg+j0NDEj*@+^>15PAFHO8QbY>FYeu>%63`>mgcLUzDLyraazBbQzc2s0i&`{Y zx7v4EK!=z6>#g`>L?px zXXD`ZL5-u9u?sHSY73ntY-C>FUlMwBMw3&PF@e=@yD=2Dy;B9Qab);b+ZxWyXKE)f z!_wL-?UY?dplj!Ffz3SuC7X?Gkc5>RGa;_#r-HKDwHEN6W{durRhKf$Kc?B~c}J{g zC%_!YUH0{Q@b-G!BEv>SoOe%_)TYDrI)7CC`E?Ni?%DFo^o~G#JJx>MvBv%=P`?X* z@oK+t?Z}?>z&})eXGe7*qmke#QA3ytai?{wLzG%Ij`VO%(}0#J+JL3xAO^fSlvp94 zSX94`f|B(;Hy)lR8bK-_hK4A5TrS_gdFS*aa73$uo2>qbre3W0E>g?#R4|4?Y-IIbx{kMhY`i=13kIq!axt!&QKq~|wDJ(sfl+bq4E`$Z%TS)4IW7d{>- zI$IbVMa&s3jT)dtCK?epGOK}=l@C)=BD#}h^QUc2U!IoQ61si&#|>Qe*qd*vgP!@YVixcW>{a&7iwRUF-Z>Q1RBEw49dn;Glq_&cLd_3#3fH~iu@CF;99MCG4O6>`+lX9y~ez5}nr!z?cgzd^=S`A|QTBNV6J!Q<}0V~L|; z`RW?hzVARA>m=nOO-F~t31pIpG*cjyt3t@w#pFH5$hixZygH&4y6Q38Nz~$m{*ko9 zAFR=cwFQMA9ogBPCi1Bw?;*uUnXPM@;%nKa5c0&CB57|cJCXMiAsYx|ME&MhO*vz0 z;8yu6zgD4g+z%`E@$%9JAM;aumT@Me=9`E$s;Q(2<+oUHA~NOjq($4n4pk4GCha0e zA45^57{tZHISQG1bVf#-r^wZH6S0&4gx!dWoLqc`_AsUhrgjzEUgi$5d_ZYR=$F>$ zU-vv%UkT*}OFIijkqvYyAb>HU>#f=`@0XUVJA0-QsdOCQakSp<8Z7r%^X%4n5+Do(uX1ttxfUm;pZe`Ue*E= z_p8{W43u_)Ht1gy2@V-F6Uppspd7Gci!4rU&=Ru8fZXg2W^u9C>T{I%`BlMK_8~D3 z+72I-lY%WP*9+I&B;4iZI;0oV*Jt-^ab)z0<(gaWojL~H4zW)>-0{TvdboVH;kH3a ziqmxE+uZ?XlDxO+RJp7$wa!TI&r84H@B|(6NuAe`taG2sH=nd{$^u8aA)iH@w{H_2 zuUAWf@9zh|jU3|hn`f?5PcrtD3{)bivd1OKUf!v?|0 z?2+!lKanxw0X=3t{G7>%^=!^CiXT_R--vBYj>2GEzE=UttnyEz;7RgP-4DckdlfHn z@B0Ip->3=ZS^@Fgc1IBN5ceUENKP{MF^^J* z7oAsn?4lC#$Cd0izvdk;Tt7Ss@-^FRSfCx&hN8xl`N`e< zPVLNDNh@cVJL<7!Xn9oyx_%4gF$cn&W!M8JrSneD8?|(UD=6eWi#;IEyJqTdRsBjA zJWdw~ctebqIhk8kqOw-r+?whpTW<9Tr|BI%a>>GHTX3Ml_X-fW8y;^z?P?YhkFWYs zA8bG}8xv(bQL8i0%z2P*P27hR*EkS~+Sad{i6y3i5h%ooj{bp_!#wYBUl;XtE>80J zd`CE7rtXbo@uEc~WJ=L&nv$%#4I7}U!ail_)NtYFWpuKXI%VxOyT!`AoLsSl-kj=2 zj4rxF7Y3)8l&xJM5M97X3f3lRr`7kn9K6ky)$8fO?!70w>T~&i1UFWr$Hxt)YwnAm zt{?|vXk^{OOszgr_N1PPdpRX&CO{{dMYQK|mbkp=Tmc?yk`B3L*ODoif_K=yIqZ1`<2Li*@YIgPUxj-AGaIXUl6S;0B{ zM=?!)D27cI&f#(}XXCcqL%C;Uq9&u72PAd)_);ITb;KtL)1`oozv`x$GVs#(U(@9 zWr*c12&gQYRuEfgKh^YaVU%DA+hjX=%3M7Hrjr>xb1`R6es{+Wu^ z8g!~DAXh%sEe_?6z!t;owCeZ4%=d|i0xrb50<_`sx98)-c?liM{&!B#3+0K=)9h8r zmq`G%$O6czwF0c00(#@qezUMCZiQ6W%v#O+B3#uj>>{Gl<}%2`GH~6SwgTyoQElOb z6Jo%UcMKTy%p-0suL;G7k`Im_B@suAT3)>;c9&tJD}snN9vc%sSA5U6x$vG^Wfr4H zmr+L~WRS`JDBCz4eRBqjl9_p_tnr?Cxe(ZI7?%0tp3_8^yOtwqmolYzeQp!lzKw-d z(WAVfzv5t#5zJ{PSGXZu@KKFc%z3QCnh~S)uD|}(wEwhj8I3LiXaOFMKTP}pmc#7S zdAxdHMLdK*bMK?1UMpNt(?z9fbvG})cf#q)s`4fx6i3W4_`*O4RSmi@Z>NYceEceX zfkd1=Sly?LR$ArE_b(}JQ~s^CFzHF?)Q~gY4!`4g z20jPXDnD0E)2qy;}0X+GuItRYd-z4ElG=(DLVc+R8(ZK*bxmoO2Bz)Mfyl*;B>Y+{k))b63Q zHE2Y4&g6vQ)|RFbrW~#*8ZEa}hteD-GP|AJr2cq246_&!itZcaKoT{@5L4H+GZWm9 z`K7zbj%uftAoTeweu9H_5;vy6Y(GP%1BHiX`EqrhcDrYCv~8|2CDw}3VM#7%S@OrS zh!)wO<~(7Q*S*Az6A9|EguF570Ob$`vbx!5sP(kMC5`K|5~trmO67#~+*vkWYn3DZ zn@lqAXR@nljzx`&Zn)_x(T6WeWD8J=j6m!4d$?$6yE^>X30?);tr&xWl zXE8BEd(|ANaZDuq%d-l00*l;5as!hJo%-&q(DCii1H;rh)$vA(6*^G0BePQry5iGPaPrj@+JFR^#6dlLd@bP#CuQ2m zb9nXAzNpl8e|;=Bpge_3Sgnopar>Lj$P7uS)AWnDT{C|nYI@9X z4f1JqzC)udG3~Fjic5ZJxIB|Eq^4W^0cEwwbLj6}l zFFyo^e|AVatPEtuaQ1@1x+>6vbOdGx;S@i?`4;b4LbcFruV?aLjiObXd9^%M7WucW zot?7x$|t|9D(D~KC|9%*)kG%Gwo0~F!B{X6K$`H7ftSQD#Lu1+EGbmDt8rM$%Vj{S z{_0m@we#Fnd2JYBEnM{<%xolwI8~x#9mxv1Ws1r{twf(i;3@>q4jG*8VKXuN5zP01 zLJAIJ&o8j~(GW8?tf7RS{c$o%g$(bqFfs*dGWVkFh0-=!o$p0?wXV)(^KzaBStqf& z+@x}~2K{HuxWj;GEdx9PEIq7yqiRk6^j;i<8Ic1F{E7iqW?}^m8y=J13Xo)p?l>GV zt`HrV`Lh70DpCQlg%vF9+*}U_)Kt>w0te-pgG{YzoScO#ChcqGP<3gMHPXbo2?C9P zQpI)UzKVMnt8l9tDWfc!A^)*#Rm4muTB@dWq!pBJ^PpwxHRE4G_4rBTqRR2^Q+ASI z-Z%{5O%VuFv~~8zi;TTtTj8RYK}r4u>fkQ3gaT@LKlw+TQ>gB}>adF}c%3Y& zJ5j6P-kix*T=JDKYh;}y!Se-ib9t&13y&sm7E$5;(w)!2!_C5|qquoF`YU(Ezs~|MJU-6eRax9pr$9;eESL2({An_KqE6?` zsG2RDZ#ci8MzC7r3T>VOX%~n&E-7i~wU+RUES(L|R<~Cw)ouf%dS} z&F--Ihsm0AzUgtUo}GGH`;8eMH{F7S#=T+FbmFOi%3&Ln_H#v=$$&l!LlXO_0-|CN zYUJEQ6BgrP^LoiWs_+`*%vzVDnrDqh;i|`Zy+a$iof1eZxd%;xfpsL@^`wT&QGxyp zjAv%jrCkYPQRDrfRi^Vn+IBNOK;H7La4Wqq$-0+b1s_*FCHpUsbL`XKukJ>nXy>zV zY9?m|g2NjTYg?Ndx8=a#;MX$`Eb{ocNlW)82(u8BFw?uila`LU)%YeN!5afDdP%xP z*_Ju?$l?zWEy$Vj=y+9vxD*>4Mhi2pdjEGb7wD^!zE8)$!~ySRX1key4+4y?rr_|C z#XsODck(c~m;yqKZ)P^k`ve@S{%Z&ZFC8$p$fE#1xkdVvUSt{0eV9>P&cRS0x0!h? zx+|+sLK;e%@OUB72Zk?s^REMhxj%dv$MZtuD=#|RB&iZoD>WulF!T3uLkV5B*W>cz zN6z%u+rw!@?6(8{rHqt$1^yW9w~*CK00eqxZ%H_wcpAqsu|Q@bk}01&2}1ImQ+wo? zH*c0?!RhH}$MURLcEmmeZ!NZG)a(8UxCl9_lulxCxriGwRG6v1Yre=LQQ4piWr=qG z9-#u38xBEy(mu0KeAUBBI+xPulD|kvxGm9-ixgzuj)Q<5Y{$DBQfmhbTw zRu4D_rHq)95rs8q7G+mD@gDZ$FRP}++d@xM49}8CuS&ILp4ls4m$Fv5cZZ244hGKM zy+ao8ubv3eBv&=oh$+q#N{^KysKdJBG=QBy?;X9MhG^tdYmE?+q;zV=g2&i1pK$TZ zL0Zc5&5KeL6vP7+V2ahrV(GK`+hD}htDpJc3_;`Q2vx?;){r6OssO!PaHYg9?5S-Xb$9Rzn40B~1W3w*z1{tg zM7fWfmUKc5Xtn6#sh@dl{GQd(C2X`|%_v@O#I=f$tYiuNx;zwg`(pBo-Jy4PASm@* zvlR16Mvrm}JIiQo;3#wmSq6Hk{8|gw1xQk3Y7?@QwqdUpj|zj(;w>$FcMC~^j)NxazjPch-8PU?Guh3Y)(g!JKLwQrcZn{A7bgvK-Jo>P>M-nU0}=g zDOJs78xa^yC2H|qd-kjq559qfZ0Q)rl9ZRnSVXJi*(|Huml z4}4%HzFDT@*g3@~O-E+OP{T*>U* zaaxq2McD~7DW_v;xQc8;4a(UFX6UrnxK>V(ijqF8azav{nn&&2w+(uXx- zI)=%{?Q7IqvIO^Bn$sdg6)eT}pd@Ks9;Rh~o02xP2XCh3$VM>-tG`6EnvBV0lg!(0 za~pMp;ZmJ+ijIc%_78CCfnH^zhm+GuEIb&B6BYs5g zCic^r^5$TXIc~)>-`~>~=oZ|&ru1_WGi0_((pi$(7(d(6^65<7x?M1DH2fh& zZSg6We_@gi1km;hAxE1$2<8h^DD)2ZR1rYEe>NfY)#a(bO3?BFT8Us}cux(_WS!?(2$|^G#n%h<==yD+9a~q#H3l2*c zJ;(FR2d;>mloeklz;K1e`jtw_lwKR#^|)r0ZqyibED7@~QU4wFvP8g<{H)CFDj}pe z?Fzm0CToBGmsrqrsewX21vGIpra(tlJU)GHF{AwJ#7^=0=f2#)+e0p+QmN^x9hCMW zBA-)AsvH43p`vi7>{zCb&!Ov6hVkg$VM21=V=BFsWH@G&9qkY@BAx9&q0nS6>J^LG ziPNj>SqIce&s zj}P7<5bp1@^OWhHq0tn&ZnyAk{g1uzRh`+3bDQi*+dHK@eKcO5r$v?NZsC*$liLUr z43d{~o1TxOyVvDW*4vib`mH2gy zIW3zg4eXH+i;cdZ;8$3d8Nu2(yu9A(2{WwIxAzAbCDXSm+uA(eZ|gPMT%S+pHQ7E9 zGxIh#tUB6z;|H(vC3Hv+kIQt%7(NlSJ<&a0PcS{HUP@p0L##lR<{afZgv#>e9Nb7E zaQ<^0X?YuhASF>Q^;d6rhcrI;3pMHkO-MP>8cuudg9%GD=ZEpwAMJglqWN&H6*Y<>_P9#wnamwR`-Stc zYp*OQhnosn#=v|mLMd#Q>0g|m0R~4(YTP68$;*x%lsYt*=0^Gy5ZrRi$;LvIwVv_6 zG8rgq8zbi^ipoqb!lQ*TW-E8+dlo9>pSM4@T02R~7h|~P=5+*?^j6q#Dt>bw5{suD z7(7gy9AfaIu96%Tov5dbj;Rqg^LCT^)4zctl9YIf{4UC`0rDzS+{f|`bJ*lmKe>`C zf4Av1G;{Owl06)Yb{H(8{a!z+Ni2NiZzRRcYT=Di&sh^j_>p6P{IFE-g1Ln?|tMu7O`L^rG+8BHJwedyGTknnb+^yFXiDYHTq+(_)A+N5TqK2*+%fxRn;MT_3LJtJxW!6>X+mXSwJjufJl= zSa9942nXlM8fg6&v!oV$?5A4$`w7+=Ug=_aTldV zRJHH}LR-S6>Ywa1bs=!SeNun-aohe`!|{!jTlS;Cx;{{&SZ)}3_-d)`Nu(CWE_rE! zEHm+3vucZcp9ZOBt%9ynvu(==;DS+T&-tft3mViOcQQ}GgWUmH7O2lZH)?(oYcxOl zKiK37;#nMpuUPA5)AF} z4odsCP4WjE3;R)~tt0FH;$eGuG>A@PSxatsI7Fj9mpV#SCb_>EcyYU51RANjWCN2} z{*DUBwpBk!X6r477?=Wm_;j>EydepV;*+r9A7A7XkrklJD3}v z{@ZM;4(ch8n&n|cp#Bzv&yxemc+aJ)PN4i~BRg!Vkxf7QA@w*v;PDcc!) z-fsOx_B`(rMuLy{^fkQ$Am&ojVY^d zQAh-BUAFSEugD@9_L5;Hv`ZKRm)pN}@8q_E(Z4vnMYy~U74nyU)b@^>Pwf~>7qYUus zPu{JX8<8xh-ekwWBAG{!cF1UZU>J~zu___s&5)9p@(Ac_EdG2DTW+5s8nFu?8_6;t z-KW}Gy>Zm5`Q_&PMt_pnU>=1&cs*l0m+{%R2tpk-)t18wNFc0{WQUff%-xd1vE^w$ z$3%34^id%Uf|ei*lyqp3Ctla1XU+7+t*Q1`9f7*|^ivm-4pKIhE4^Q~Tt3|rf~7Sy zp#zky;14IwI5TGXD}&$2jDJTFTqhV>e1TCwR~ZltT&2x|6Q+ICnX#K}{TzjJmq1i& zo`>*v`xtIPL%LBUL_AM=jcx0{3=WHJ`S3QvGeb0bbP zGZV@U`qgMo6DjGJ!~NS@DBTe%7dlyEWOh&&VX^qwk-y8~4~4jK=5A$yuK62-mQ^wi zT(hz={NY9}HeSPu+w8$u_4BJp1U1PzaNt2s)Lr#>!lE?I+{#eVI^K{#Ka<19~;-kP};*G%dI{BPr*tS;lGBTCQ z0h*pH1PoggN3pdxJ3+94Uuvypx9jD?SM8>Z0)bBBq!%QaV%&Ud#(#uSGUV%4T~umn zoJPwibroQCh8&iMTj!4}#kO~CoBOyX)+^&0D=e5_L|W67dbn4xFw(n?wjD~YWI0pF z22M>eUhv>X68PvN$OLc%2grv5W)10cf)Yj@(T0gr6HZ;Z;K}y;3~^$*Mh)4pNA$Q> z1!9zcISpP2Y~U^iL~;o8VZ;XWZc6mVV%tO(Af;_c8BWoOl~ zMh6$2u`o*F_2$I30Wr;bXfi*d^}|$U~3r1jd^j-uD7i zo4@x1NRCQZv$f}w>(OE0vMHvQUEXVubwQ}5zbHD$M4A2B^TcacKpZ-eTA5qH|Blt( zu+1Hao1cMnkxGcgqlf=Ga3NfJ0lDrC$ZTKMR2?2 zs)FlL$0L~qC=gh4vc3Yxg|MWC)al|{09r?yt)8*ciJUvmjzxDucCB~T8*T$^Lq`&H z5#H_@@O~7;Mh=WJ!FAg1Oz!VaU`r2!=77!4&(P|WCqRM zxXCp!k-ky}C>n#c$`iyvfhusKC^Axv7E%)mzn5Lf{bVVB$fthJZRm^mcG+-F?wY17 z#}PwauBI2+IWEb%)_0*#l;u7LmW$A#m1=N~h1WfJvh?rV`k_vOsZE+%Y;|^Afidxk zZwrn%_Cw8q!sqN_Q1;)GvK=Ey6Vr>j3Nq_vG`8_)m&B4Yow=u4NT%S9+dh{Y&t__Fetxzl?GI#SK_3z=2uJwamA7u-i{mT ze7?@-$K1Ww#)zh;WS}>mPzk8^gmYhJ;E*zqjHPT!n}j=DdY;4+eU;%2kN_#MIhfn0 zx$u9U+sb&z-U%_wG&mBib5KlWxR*GED__fXIi&HItZsQj@vu4s3GJ7P@fhm;Ra&Z} zq&D>l`=J+e3_TS{1^lx#D@@+rZFKeJ{{`I(BJ@S!6Yb%}K15*FQgTx;h6t2^b|%>U z#CQozRaQq}REnCiyoiZ`6!e}6C^1VQ3zr%Hc*MdxQaC~=WZY2y5aOS$6fLLd=I0kb zBNa^xVhjUW`oGW$a}*>3WwedCYvf&ttO3m)kiXiBp?$mbAQs8O)7UoZG~2srU|m9u zT^6II9?!C!porWb#0|`Ak@P&x#C1{BH3<>9e~L-4F?1NV{xkW*t(0~wmoL3a+PI?j zN^UVlAmJ#MXpnGHE=ZA5Rl~O_1CZZBx zrnYffVcUa88t*Nq*dM(+vgw`obQOqRzn9C(E9u6$E!a9gOE->r`svp#!Cax0aChr` zTcrF2)TXTwbt}=b;Z6lwy~u;K=PkUSSz+TVT!2l#-G^in#k2uOBPkhzuI3I6Ro_HM z$vlR?0j`J^O#wnu>!u{4>sCL34mwmVN``uGNXm*$uUc;ym1!Px^xf6P8z;cPBf+t> z;U!5=ZMzxFoidJUkSkmw(M!3iS=3^8RdjOtJJC6^Z7vM~V0le{Cz8hJK#Np^`4Yth zm+OL{TQLPtU`5p>*|0VEGPsVoLSR;gTs;7U)Tq=OZPHhgv^&NB!E+AWiljM{mE6>O zYs1|(gL$AzkN_NUmpirlY%^J+rB=7}%Xozm)8IPb+e`;+W=MeNr) z^^eW~f5NowoJALV%Y?Ml?9inw>-`^C0K@|J`taHujb6u>-LODhcb7O@{?Uv1k3!Jy zosTE8zW#OzrN?EERPVg^b9Tj8`G)com*J|{?-lFpqSg<7c*jYhzQY{|kgJaqXjkRB z*TaW3aY$3ASH;2%peS+DRk9I8%}@3Q)p7Z%U(;(_0o@fbqUx>G)67eCg|{ghl&aD+ z)wLpBTyIge*cs(qLHdG$&K1&~fp*p?cf{Il0ee`uorS7B)NUKg5z%&4*ZpYQP_+a= z*Q#szqlq64aWI*BaTt#L`Cu5%2k~&|h4bOSn+@X0WIQC^&?h90{4n$f{$Plsz#n+A z7d8vDHK;OCb_Hdyvv=h=T}tnjZi_+_L{VkUmf}o?Dg>(Hs0!Cq;rlYBrE6In;07x( zzk}0R?tBROGzYu&dqVFC+~6iOLV1@P6c1nLj-)~R&ESixn|D$6T0e*OZELj-$JO5b z7F8D53zaIqv?@{+^F{dzL>Dz<5M9SUWJp6@0P;3;dkebD1dG}r+Td&_B=*jFQVzgy z!58(0JKO0b)o#kHxDaB5}N={{{(`Ih5!`+gI69#fJ;T8QJ7#j9C5u=cuK z9Z@I48cBqfa&F}HR1l^^xq`l8NyIfQT`WPd>n*5lD^o|#QWnWv;bMdPUdj@tzf`pgisRR6rZ6QzJWQZSvXxTA+NjhPgAIWhxBO!dZ6rCuj}8CJZl(^kvmn#eF&RKniA*09aR;9{i#p9 zSrkT*A5B7U9>no{G!KW>gn0gN5YM97XfpKYvq_BcU@#m{2Dl})V~Zdy zZWaOVT({b)gH(N+E0)MiV(a^Jnnk)gjezBb)wBJodR@P@(X_!+xE=v^7q#lyPL=+m zX$?3K`Xj(r@E(v2am>^~t?&*Kui)7(;`kc6b>$P7$I3_AB*aBD3zN035`hDDPn1h7 z((D+Aq49neB%-@SG0JzV<MI^g-?s0*1b)95WL(*>VgQ$>2LGNioZplA+h!a@m z%9hse*#$tw@@ZBQ?e}usKQi64ANY!~@})6)>q}9U0jJ~F)LDeoGqu5j}AV#;7Az7MNyknfskqhCxW>!$C7ab(3KfV-#MQD?OyMMPJ%Be@bgOC5C&ft4%-;w|POlyg~_O+eLc zTy!myp=}XhDcUak^8ah`$Iazp3DdoN_hPYhk<|3X4@&3H@rMjybaT0=RXw~VWwleG zOs&{I@2+0MQ`py*Q)$2W}kRUF^dgLdLjc+HON>=42{0?bV_d zF=2B_`=CzqgnTEMYoM6xX}`v6`^doSS3K7u<3j6qJ1r6|%3!_!gYRWAyS^K=DrDao z8Yu*)4=W<(+%BG~09MkJ)@)l)bljeH(}?h_!RJ*hYJaP~2l+gif89@kq<5j-UrPZo;X$1|*TeVq)ighMSjw(pCt8XL( zm}d93z#&963hAKg(I<-1}$GOeM9` zUmG-~gmZjLx+0c8GeM5OgQU*l(qD`ymZ;;j<~kQj@uex4)Fe;e#@E&3Ay@M0cL%RbzBdit;Q-&MYB*_!dRevxa38(3Zf^d& zzOmFbFQ2`HA;IAak%+==DQkI`i_Q)gj6_l+L!Hp@q*iyy5qvpZZtuN>HwJb~P z;u4xg^qxj*oCsCrPM0i)Qj)yH=FWR_YvWG0$9r0kAK`At9e$5GsE0W|Dn#v`k1ZTW zxIRqJy*OL&w8Y!Eo;&aczBl(rroPn_lTkeL{Mm3eo{?xWoX&$uJd3B3ct+w;><6Ri zC>RU|!OR;^i8uEH>;)q-jwgfpe7=`5=><8tND_2KZ&xKpSMvIo2sv=v-V|$c3FAeJ zf{BSd`R4D>*Y&AFsm^MbNuOz>shdWR#o>9LHyMrKf6w!_|My0d={NppI2lgIzVD5{ z@%+hX=zW8{ry1hz&zhIG_{MuQuI<77Nj{F_oUCX>&QB0>P|3m*@yp4x%JwWYpnFO_ zoSggvt~gi~B>ujq58jHWxvaQ7`%N4GG(0N{dcSc)&U>KdeBUd{$MOum7bN+<$IDGZ z_==FSht7UDIeGRBYX3UGF2vVo&z_;{5NCp?tdo+ToSdBe8@*-d4dpdvFV2#67U{ct z1iw6Y_I>^h7^^c_V-&|b1PR!W+Nk+YPut(0zdwI}{{B4r^M3&V0RR8q=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: synapse -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/synapse -type: application -version: 7.0.22 -annotations: - truecharts.org/catagories: | - - cloud - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/synapse/7.0.22/app-changelog.md b/stable/synapse/7.0.22/app-changelog.md deleted file mode 100644 index fcae9c26312..00000000000 --- a/stable/synapse/7.0.22/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [synapse-7.0.22](https://github.com/truecharts/charts/compare/synapse-7.0.21...synapse-7.0.22) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/synapse/7.0.23/CHANGELOG.md b/stable/synapse/7.0.23/CHANGELOG.md new file mode 100644 index 00000000000..e58640b837a --- /dev/null +++ b/stable/synapse/7.0.23/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [synapse-7.0.23](https://github.com/truecharts/charts/compare/synapse-7.0.22...synapse-7.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [synapse-7.0.22](https://github.com/truecharts/charts/compare/synapse-7.0.21...synapse-7.0.22) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [synapse-7.0.21](https://github.com/truecharts/charts/compare/synapse-7.0.20...synapse-7.0.21) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [synapse-7.0.20](https://github.com/truecharts/charts/compare/synapse-7.0.19...synapse-7.0.20) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/synapse to v1.75.0 + + + + +## [synapse-7.0.19](https://github.com/truecharts/charts/compare/synapse-7.0.18...synapse-7.0.19) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [synapse-7.0.18](https://github.com/truecharts/charts/compare/synapse-7.0.17...synapse-7.0.18) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [synapse-7.0.17](https://github.com/truecharts/charts/compare/synapse-7.0.16...synapse-7.0.17) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [synapse-7.0.16](https://github.com/truecharts/charts/compare/synapse-7.0.15...synapse-7.0.16) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [synapse-7.0.15](https://github.com/truecharts/charts/compare/synapse-7.0.14...synapse-7.0.15) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [synapse-7.0.14](https://github.com/truecharts/charts/compare/synapse-7.0.13...synapse-7.0.14) (2022-12-20) + +### Chore + +- update container image tccr.io/truecharts/synapse to v1.74.0 + + + + +## [synapse-7.0.13](https://github.com/truecharts/charts/compare/synapse-7.0.12...synapse-7.0.13) (2022-12-19) + +### Chore diff --git a/stable/synapse/7.0.23/Chart.yaml b/stable/synapse/7.0.23/Chart.yaml new file mode 100644 index 00000000000..9ab883e3c23 --- /dev/null +++ b/stable/synapse/7.0.23/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "1.75.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +deprecated: false +description: A Helm chart to deploy a Matrix homeserver stack into Kubernetes +home: https://truecharts.org/charts/stable/synapse +icon: https://truecharts.org/img/hotlink-ok/chart-icons/synapse.png +keywords: + - chat + - matrix + - synapse +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: synapse +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/synapse + - https://hub.docker.com/matrixdotorg/synapse +type: application +version: 7.0.23 +annotations: + truecharts.org/catagories: | + - cloud + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/ztcuui-aio/3.0.7/README.md b/stable/synapse/7.0.23/README.md similarity index 100% rename from stable/ztcuui-aio/3.0.7/README.md rename to stable/synapse/7.0.23/README.md diff --git a/stable/synapse/7.0.23/app-changelog.md b/stable/synapse/7.0.23/app-changelog.md new file mode 100644 index 00000000000..bd273a30e7b --- /dev/null +++ b/stable/synapse/7.0.23/app-changelog.md @@ -0,0 +1,9 @@ + + +## [synapse-7.0.23](https://github.com/truecharts/charts/compare/synapse-7.0.22...synapse-7.0.23) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/synapse/7.0.22/app-readme.md b/stable/synapse/7.0.23/app-readme.md similarity index 100% rename from stable/synapse/7.0.22/app-readme.md rename to stable/synapse/7.0.23/app-readme.md diff --git a/stable/ztcuui-aio/3.0.7/charts/common-11.1.2.tgz b/stable/synapse/7.0.23/charts/common-11.1.2.tgz similarity index 100% rename from stable/ztcuui-aio/3.0.7/charts/common-11.1.2.tgz rename to stable/synapse/7.0.23/charts/common-11.1.2.tgz diff --git a/stable/synapse/7.0.23/charts/postgresql-11.0.22.tgz b/stable/synapse/7.0.23/charts/postgresql-11.0.22.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e8719337257c9cf50e10aad6ea391eca1d64bd18 GIT binary patch literal 187570 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�NT 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.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: syncthing +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/syncthing + - https://hub.docker.com/syncthing/syncthing + - https://syncthing.net/ + - https://github.com/syncthing/syncthing +type: application +version: 13.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/zusam/3.0.7/README.md b/stable/syncthing/13.0.10/README.md similarity index 100% rename from stable/zusam/3.0.7/README.md rename to stable/syncthing/13.0.10/README.md diff --git a/stable/syncthing/13.0.10/app-changelog.md b/stable/syncthing/13.0.10/app-changelog.md new file mode 100644 index 00000000000..735f0deb21a --- /dev/null +++ b/stable/syncthing/13.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [syncthing-13.0.10](https://github.com/truecharts/charts/compare/syncthing-13.0.9...syncthing-13.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/syncthing/13.0.10/app-readme.md b/stable/syncthing/13.0.10/app-readme.md new file mode 100644 index 00000000000..492babcb8ff --- /dev/null +++ b/stable/syncthing/13.0.10/app-readme.md @@ -0,0 +1,8 @@ +P2P file synchronization application + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/syncthing](https://truecharts.org/charts/stable/syncthing) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/zusam/3.0.7/charts/common-11.1.2.tgz b/stable/syncthing/13.0.10/charts/common-11.1.2.tgz similarity index 100% rename from stable/zusam/3.0.7/charts/common-11.1.2.tgz rename to stable/syncthing/13.0.10/charts/common-11.1.2.tgz diff --git a/stable/syncthing/13.0.10/ix_values.yaml b/stable/syncthing/13.0.10/ix_values.yaml new file mode 100644 index 00000000000..a0d148904a7 --- /dev/null +++ b/stable/syncthing/13.0.10/ix_values.yaml @@ -0,0 +1,42 @@ +image: + repository: tccr.io/truecharts/syncthing + pullPolicy: IfNotPresent + tag: 1.23.0@sha256:cebe807299f009b7f07b25ee8aec85c16b6495f6e8c301fe3d528283434956ff + +service: + main: + ports: + main: + port: 8384 + targetPort: 8384 + listeners: + enabled: true + ports: + tcp: + enabled: true + port: 22000 + targetPort: 22000 + listeners-udp: + enabled: true + ports: + udp: + enabled: true + port: 22000 + targetPort: 22000 + protocol: UDP + discovery: + enabled: true + ports: + discovery: + enabled: true + port: 21027 + targetPort: 21027 + protocol: UDP + +persistence: + config: + enabled: true + mountPath: "/var/syncthing" + +portal: + enabled: true diff --git a/stable/syncthing/13.0.10/questions.yaml b/stable/syncthing/13.0.10/questions.yaml new file mode 100644 index 00000000000..d07ed17ca89 --- /dev/null +++ b/stable/syncthing/13.0.10/questions.yaml @@ -0,0 +1,2026 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: VPN + description: VPN + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: "General Settings" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: "General Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: customextraargs + group: "General Settings" + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: "General Settings" + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 8384 + required: true + - variable: listeners + label: "Syncthing Listening Service" + description: "This service is used to process incoming connections directly to this Syncthing instance" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: tcp + label: "TCP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 22000 + required: true + - variable: listeners-udp + label: "Syncthing Listening Service" + description: "This service is used to process incoming connections directly to this Syncthing instance" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: udp + label: "UDP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 22000 + required: true + - variable: discovery + label: "Syncthing Listening Service" + description: "This service is used to process incoming connections directly to this Syncthing instance" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: discovery + label: "UDP Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 21027 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["clusterIssuer", "=", ""]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: string + default: "" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: clusterIssuer + label: clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["clusterIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: clusterIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["clusterIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["clusterIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + 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 + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/syncthing/13.0.10/templates/common.yaml b/stable/syncthing/13.0.10/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/syncthing/13.0.10/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/zusam/3.0.7/values.yaml b/stable/syncthing/13.0.10/values.yaml similarity index 100% rename from stable/zusam/3.0.7/values.yaml rename to stable/syncthing/13.0.10/values.yaml diff --git a/stable/synctube/2.1.7/CHANGELOG.md b/stable/synctube/2.1.7/CHANGELOG.md deleted file mode 100644 index b103ad44738..00000000000 --- a/stable/synctube/2.1.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [synctube-2.1.7](https://github.com/truecharts/charts/compare/synctube-2.1.6...synctube-2.1.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [synctube-2.1.6](https://github.com/truecharts/charts/compare/synctube-2.1.5...synctube-2.1.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [synctube-2.1.5](https://github.com/truecharts/charts/compare/synctube-2.1.4...synctube-2.1.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [synctube-2.1.4](https://github.com/truecharts/charts/compare/synctube-2.1.3...synctube-2.1.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [synctube-2.1.3](https://github.com/truecharts/charts/compare/synctube-2.1.2...synctube-2.1.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - - - -## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) - - diff --git a/stable/synctube/2.1.7/Chart.yaml b/stable/synctube/2.1.7/Chart.yaml deleted file mode 100644 index 091a6e430ce..00000000000 --- a/stable/synctube/2.1.7/Chart.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: "Synchronized video viewing with chat and other features. Lightweight modern implementation and very easy way to run locally." -home: https://truecharts.org/charts/stable/synctube -icon: https://truecharts.org/img/hotlink-ok/chart-icons/synctube.png -keywords: - - synctube - - Cloud - - Productivity - - Tools-Utilities - - MediaApp-Video - - MediaServer-Video - - Network-Web -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: synctube -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/synctube - - https://github.com/RblSb/SyncTube - - https://hub.docker.com/r/littlestache/synctube -type: application -version: 2.1.7 -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Productivity - - Tools-Utilities - - MediaApp-Video - - MediaServer-Video - - Network-Web diff --git a/stable/synctube/2.1.7/app-changelog.md b/stable/synctube/2.1.7/app-changelog.md deleted file mode 100644 index 1bccb5e0791..00000000000 --- a/stable/synctube/2.1.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [synctube-2.1.7](https://github.com/truecharts/charts/compare/synctube-2.1.6...synctube-2.1.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/synctube/2.1.7/app-readme.md b/stable/synctube/2.1.7/app-readme.md deleted file mode 100644 index b2cd9b3e736..00000000000 --- a/stable/synctube/2.1.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Synchronized video viewing with chat and other features. Lightweight modern implementation and very easy way to run locally. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/synctube](https://truecharts.org/charts/stable/synctube) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/synctube/2.1.7/questions.yaml b/stable/synctube/2.1.7/questions.yaml deleted file mode 100644 index e34f5d3ae6c..00000000000 --- a/stable/synctube/2.1.7/questions.yaml +++ /dev/null @@ -1,1829 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 4200 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: storageconfig - label: Config Storage - description: This is the location for the config file. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/synctube/2.1.8/CHANGELOG.md b/stable/synctube/2.1.8/CHANGELOG.md new file mode 100644 index 00000000000..f66dfb3dab4 --- /dev/null +++ b/stable/synctube/2.1.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [synctube-2.1.8](https://github.com/truecharts/charts/compare/synctube-2.1.7...synctube-2.1.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [synctube-2.1.7](https://github.com/truecharts/charts/compare/synctube-2.1.6...synctube-2.1.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [synctube-2.1.6](https://github.com/truecharts/charts/compare/synctube-2.1.5...synctube-2.1.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [synctube-2.1.5](https://github.com/truecharts/charts/compare/synctube-2.1.4...synctube-2.1.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [synctube-2.1.4](https://github.com/truecharts/charts/compare/synctube-2.1.3...synctube-2.1.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [synctube-2.1.3](https://github.com/truecharts/charts/compare/synctube-2.1.2...synctube-2.1.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) + + + + +## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) + + + + +## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) + + + + +## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) + + + + +## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) + + + + +## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) + + + + +## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) + + + + +## [synctube-2.1.2](https://github.com/truecharts/charts/compare/synctube-2.1.1...synctube-2.1.2) (2022-11-30) + + + diff --git a/stable/synctube/2.1.8/Chart.yaml b/stable/synctube/2.1.8/Chart.yaml new file mode 100644 index 00000000000..d76a85e9e5d --- /dev/null +++ b/stable/synctube/2.1.8/Chart.yaml @@ -0,0 +1,39 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: "Synchronized video viewing with chat and other features. Lightweight modern implementation and very easy way to run locally." +home: https://truecharts.org/charts/stable/synctube +icon: https://truecharts.org/img/hotlink-ok/chart-icons/synctube.png +keywords: + - synctube + - Cloud + - Productivity + - Tools-Utilities + - MediaApp-Video + - MediaServer-Video + - Network-Web +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: synctube +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/synctube + - https://hub.docker.com/littlestache/synctube + - https://github.com/RblSb/SyncTube +type: application +version: 2.1.8 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Productivity + - Tools-Utilities + - MediaApp-Video + - MediaServer-Video + - Network-Web diff --git a/stable/synctube/2.1.8/README.md b/stable/synctube/2.1.8/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/synctube/2.1.8/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/synctube/2.1.8/app-changelog.md b/stable/synctube/2.1.8/app-changelog.md new file mode 100644 index 00000000000..3132750dd58 --- /dev/null +++ b/stable/synctube/2.1.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [synctube-2.1.8](https://github.com/truecharts/charts/compare/synctube-2.1.7...synctube-2.1.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/synctube/2.1.8/app-readme.md b/stable/synctube/2.1.8/app-readme.md new file mode 100644 index 00000000000..db80b336c6e --- /dev/null +++ b/stable/synctube/2.1.8/app-readme.md @@ -0,0 +1,8 @@ +Synchronized video viewing with chat and other features. Lightweight modern implementation and very easy way to run locally. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/synctube](https://truecharts.org/charts/stable/synctube) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/synctube/2.1.8/charts/common-11.1.2.tgz b/stable/synctube/2.1.8/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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�NT 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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�NT zH;4+JRU?&lXqi2yz8$I>E~`Gic@+0)-{{84w4!vvZ3#oE0kPqC@v3)_qxmBj5vjY| zXIRe^x)~f&-fJ5mIZ8;=VhtFO*k#CNX*0fC^g9(1ndhDxs3xnMpUSp@b$ou==|k|2 z^6RH3Erd=A^$EnW0q(y#$ELx4kL~`=Ss-}YK+sYRV*)DgU{hWe6kUL_yny7`7RJ|O$l=kGbe?jF-5NH((IE72(^ z{V>p!Eq??z*Vg|0BOhe4@QdCG=AYCzusqjK5#4I5* z+7-%Q7e^f(3V{i~)SQc~v2tiZ15nqovs37VPIp!*QZnUk{$`hg`t2iEMbY9brl;e$ zlR38O2lPuT6$P%^ia6p!^41F>Lk_bi99hcLb@A5V3yc~ic_NQEd9Vt5;J`S>6%Y3h z{@3n3?TK&v>m~>akKv?l@-4?(aB2IHbYGZj9PvdjBN^5aO|+enw01 z?(AVC5`N+%i*&}V&~OqxoO6OR@C+qU&*8;mXEwat_@o-h%cb^UI#*HDRR+N+ZMaCorcE-KV@=4gj;;R2%}DwF zEmMJQu)a!Hq1lo5>%e#$uh(TU=(k4Pilq7sufl_zMF`Qk(J1Ec0x4)kR{8+VPc8)mQRTE>RwcBoJr`xI9K*dUy@zFB_uc@N+cn3pU#qQ5;5w> zA0h9K-4v=5RUiAMZ1wNIKS#II--7W7AR0*MM# z>p}fbhwYAj{YLqK%WYxerb-v#ezq0ch!>)xWvH%ldT+8Ba}l1bCCvZlkXYR^bSR%r zc$BKdB?whdb`l!n!XTfhOT9tFgKs>Tuurco5NR)>D(DLrmi1RF4)*L9a??KV-Bhs@ zl8*NHg!Z)2FXt)D|N1i!zj`Y6Tt;(0d@=unub>{5`V?fdgNEiunMlYF3&_u17Vv2W zH_Piqdmic?!9CCPBB*%YK8-V|Z!({dLOoraz8J_tXKwBGX(%%Q>@>=r=G)c@i*Oy2AkV1T(rO`2!9QJokp26mAn`vF_P$Q9c9J%AG19?@zGsWDfG z8R3YR)0*a!QbkAIta=b~r1V8H#J(I{qi~m*g9pS^EGJFc$RC23;N1bk3<=dQvGMq- zlq;%wY=lx^moayd4b7rbOHK(h)s?ytd=|LYL z^E>}SNKx1DdLr~qop)`+CDbc}=M0V}7A6FTY6o4w$;K=pG?S-{R|v^C-gq1@r4k5g z6Y7nsv%7e>Td+d5G(2*-6xV;!VlO9IsM)Xlz}oyp>8V9$TfB!U>F>J?^Zs)O`sWT8 znD53J>^uG}G%d4M`-yX`P?CcRRCwfQV3>N4U?mqxWVz;0VkLf>OeL*R8jrrjcOhLU zaIQhm1f|CqQY5e*v;lcx2Nn`TFg{5SY7=S}*IpixW(eT$kB+V!nMiRyssX|UbH1qI zeSa%HnG;DbOUnBq>pseRa%kr7Qx_<@hoOkvcgK4rEI&&=RV>~8!EE{A;)1uaf^rFq z>~ADFW*Yc``;xSaB!;hG!+4aLMP8=%pBStJcBf?5=X^M1XQVMfYlaB8&6>OPJ*LI< zFtZX6Tz}9C!Xtv~22lMHX2WP{)<%DiDjvb(8+Y^EwCR`h^X|nTMl6Qy5-!-Sfz&-pZa~;v!(g>4){XVHzt=IwXP9U2^rG}0a65^uNKG2V9DP+lHzKUkyE$o z4{sCJ@LsT+pwpWSAeXX|;k6^}#YFOl&)^xGSrqtT&{dMAZtd(M)XXl_96Y%n=|Hd= z*@LD3h;|AC9J*j^MF6&vKw4k~P=Qf`)CFQDl#qXdDHVAHMxB`qliYOSJ>=XLcq0?C{xDJVT{U@S#{odFQFsBT z;HuKKrlT2VQ8>6yi`Xj)Dv%-=MnS{V##7cB^$V<9Gft9{35x;7mNLUeM`BsyvW{jN zZ?bj{P}t@`5VZykwt!$oiT*5+X-Zo{lZ@U@FmbTB%0f+wzkfL?8&ujJz$lV&&S*R- zW5hR;j_WN0_19bNAxWiL8QSTDZa!8$szoBFI6q zOY@{zUWcL_DN=lf#!J&dbjexV~-Q^RAu^ z{^yA*oh!%KwkBj}?<2z+ckj}+MXK_-yj=_Fki&bBENvL3XoM-lC^R5HWCMCWtY~K@@AYag=)?nwXr2cR843coW)~$dp71!dhdgRt0yB?Qq0LvH+Fiy2f__E6Z_w z;ggcE8rN(UD%y^ensK~_BfDsgiafjFCS?5lS*6{yQ$_Ow+kv8)8IT0Yd;>-EKOBi7-MVe7-n8b7Y zfD#76uGaHXAVJm~vGMRx+WH3pS*8a88#Xv?Lf{fV8JQjXG}#>e2`NC|}+Kf+Q@Jd<`ocy;4ywda|H5KPVU) zM6NXfk2x|R&dkOV5l)i&{-mNwpmfRLLVG>xDTKc15_EYdT1mm@wZDxCAfpO}@Lq=% zc8CZd_vrNg0Z@J~x*$o&hyRMHbS)lvw=SV5R))ZhXi`vpv|ZZO=!JtDT+$uu>xf*; zI#W~+QXKRGpf^z0lNweyx))kU=PyNEB{OL5CL@U^1!@X{(A}qsFMIVrCjlNy@A@-@ z$J0sd2R#iGGP~^SY7YxKG?zP4>!=D)Vx+uqvmUYW8}J!_sm zA1mf9dS0bHTe_aw@33cVJsLC^^aLnkc$lh&ddd-#mL<*Dd5J+2 z9h2={T7CY*i2MGo!FPry+Vg4r{q!{3sQS$zz0EU6RpO%=zl8gAY(SuKc<{@Z&w>KRq|rFyg6azux-n~~J31etx$RD;{2-M; zTq$knJ!$S(7c~Zm5j$+`Z;=zkB3I7DD0fOUjm0|BV1}2#_1HN40+scKdMiu@g z^-gVLWh%RcqkCJ}+K-(7T)B}iGK5&4O|JejKzU^YCIv{eC5@_QTMKAyj8@G^FY`gw zQxX|^aI(G@*Y=Wlm|l%UQ|ylpU8YM4zCc0NSEYwo2?2vngoP8NE$&qqA%~3lY9<6d z!XPuK#U?U4^B&NPckYUC<4NukG#Ye>qG1g)MyTSsy|6xN$5V-Lecr2K>{PMBMfc>< zy>&^!OG2~4-l_m}Ll5c_1&N+)bTmv(EB?u<;3b3AFx8F)L90tetBC)>z89Zkh#dC8 z7b#j+kULWq9G7j@oQ$W+QjYV&)5{mpA@!Z|1PN`KwVC+Xpj-c<4+AzeD>a+{TG@t( zz?0yP0tW?5mNdJ-OvqAEW3T!+Y7I(`9}Vc|u8gQxr9-pE;B}jTu8VtX|9YP2vQ`~mePw+;IVh!ZaatL zH7C+0-)(|}`vk0cJVRJp^=oI$V1=enwwSv#%pHS_VugY*2F~67LZVNF$3z~3IsRSH zfto%m;97$c=>-RN*DN8+!|FP6QaQx|eZYL@Rw{DHP|f7fqWiTxl=7@uYw%&rBO`qf zS6sZ-25IDeW3S-PnI)XX4SjJUHFZ(>@tTe?+qQak8F)tLJ0`UaMeX~gmn#~ST^jp>4mJd!;J z$ohYLXyPFvi;`KIzYpc*^_zd~*nYV^qrps`sn+Tw9!ZoCNOYp_;38=qnA{;vmo6#JR845D2 z=I_{G(|fl1ltsB){#E5RFTz)=fqwjURH8(&7eU_64@(Y#Je54<`fLs9^1BP}cQmHR zsIEZGPzW<-jfq);L4a2mdFA6{g6h@Bq%ofirs-C@oHhQ|!&<|>g)!I##?F>Uk!n52 zNGF21^wTuA-$)G4e@943ar`JAh086&)z%jg-f_498TAj;FA4wogAj%pY;Wj+x(fHc zg!KnVfMhQ?9`C)f39do!80y~W9Lw^>NOmDyV3>ap4BDMmy4=uUqsj(4R1oo)zsmmg4L$VCI z#lVwOxG+rr`r+Mz#h_W)-!CI_P?Y3_#EuF4SyCboBPO3{UV;~G$0n|RL|BvzK>(E>WVal3YBgy5Rd53Y22X$m{7X{S^QPg15vWP+ z4F*f~KBoi5lMD*f%S-GoH|dihA63+`*aA_(vDml+KqO~SEAbdn;du??O+sv#8|Zf~ zpGUm)1gfB!LvS2kE2i6P5z&H%bnWP8<4p{97Tzn(Q$#Eq#J{7DA;zq1w{sUamB2^! zlazaOHJ&h)GS}}Zun$rmln1NMi7$o@m7wm@K7SENAFnMAp3ewG%OSTDyvQDofk*oX zrYvU`bmNs9YI2XmpZIw46=xv$1&bADXn`V$VH=V2hLW~o6m~Rj*$>JVVsRkPbCJC? zXH(8`hN7$T*K$%QwVtf#U;0UQ2YeaAaDYUOf3pJLOXZp&XA=XLne}V&aezc?8C4&; z557*ZkHTeLEh*EeJBa^`2Bs+cMLvLb{D);4Tm%Dm(*+mZ26e5W828VUHPZva`a0&| zPz(*es`$qaZe)ZWQh-TqLerkTy@Pgu(U>5{FZE=ch<|@&8r^qUg<2+$yhc|%``u6n z>gom}7sNBI#V@kK`*k7Ll`f!6Gphysr@4VMlOV$J=@i%AY}`RAy$G&xTU!m zl_;U(d*Txh+o#26awGgQP)BuMz8a(Ry_(LyIdum4UcvPMW9;bnQ6+Uo<9*!Vg{7KH4}@k#LCMyCh3UTFz}$AHq(#xOw;`5r_fs zG9R)4K}X)PLwo41c%ergvXS&81sgW9`!zR!(8QlZt9&_kf`9an9ojW%6+JGC13heO z@y76)ZAgQIB?6&lQM|YG_*h1&CPaRTp8SiqTNvp2H9KSb;vq5|_wH;1Df6%EB1qAQ z`Dqg9fFnaF-R=!fMyPmMd9E~@Cn@P)(D?Evb$i(6g?u)*4KkdzT}pk;Y6_`)2oNi( zJUT|W3b^Nml9)}@9*!8{Avs-&cckNDLB%p}m}3eeH%h^a8%X~MwC)1PQ>?&}PO^tJ zUZ}84s2Gy>3RM+^3dna>GP}d>3zJ zDgGrCRbu{9ONFIx6oAhfoOG2-nG@)gTBGc+$xVMp=`HLc4e%cbgiiV;r7RJ5qSY3Nacgq{-q>viAxvKza2<>ID?u!rnrHh@7Bbe!32G4baRAcrdX7*AASh}T?PyUr&DUAq2s zzg_iEk+55gQht%*&U=ynGE_JZaTtK#7G|O94Y!mlZ}TUog9w(dLwuOqRT%9!pWa`= zG&DdV*=B(vGn|AgUokA23r5bYJ!&}lBr727T{lC%_);xjweL&~kDyNyZ_{V`T^9_FDgO`!X?QH(eEb%HE5M;S( zko8$UT4N#wJ*Ld?9fPUhII8hcp#*$)e29WeI~XQ=N{Xr36lrRsrs68~?H)ihM-~sw zPcVp%`JIMq(IaShAhciWU(S^Vgj0E7Io$n%TDp9!Yg*-qq$nSLv1&WzVKq5nO7RbV zwN+Z7cWskQZ1`;;+Ao<0;ZLTkXc*rAC`S!6ZAIvK^gVbFUIalaKPp|xlX8UU_VBupkKR-+D45+UJ)!4h%95iXc4wN=!q5#nnP zX}xZzr(bPH4{M{2`fFL$P@3C>!+e-{gOD#7N&vP~3@-3s8$M(UBJWyANV+6X;-zO0 zo#fLhCS@HI&GXjd;dq6ZG=i%A_GWB2G+i@X(7LQzjaoB|2g0~Svgsp#aE_{(s zTs>09iv87!V*`tf(p#L^aBRttRT@Net=`RK=IdkSNDEXS-S6bmXnxJ~u21C;<=b{TgEtbv9@G|t zI||W!GcUQl6r8VbE2K-ETeB7Fat6Y~UhbrSPVqeX{=V8y#tIF${M6B`m%D))>b5)` zK{uE@4sv%(*pJA>-u)v$D^O|t*H-$>_x9h-Yq-1R`y3%wRx*l`>I%m=6JFAm$Pz+a>fd26_*j7iq;_o| zvMy1)DsXYCGNMU!AsD?F)DW1A@^*CH6rCL1SM+3yl^$)8y@{1^;k|_hp>3Ye2bnI- zkn*TnYGC=W0epE9nQnqSA_72w>T}g~X_wH#(43mQ!YwtEB?JFgkUabYw71PxdFE?g z7}OK=$DX-YqtI4_f)oxYGrFzBgTxhi`|*#=a0`)LEk*y&!PwE+o0nr7-8hZW1lU*? zZ_?wBS1t{8CidBJiR8CI^byr?fXES(cH~U6w65u7@!KaZ|KFG*uDnP-!ovZ{dfz35 zjwUAIzAycc$x6yii`zD*Sh2^A#KRW*6u)Vv{qP%r^qggtsie6N<#6`7BIV* zB*{5X?pbjVY#{05r+VkEFXzh2rO)F~hrhO}2Wv1_%v6+gUys;Oxd8n4q82P@<^|$~ zIb0FMQH0hX{*BEz57E}vw?+nF802Kt#KXOBk%El3)m)$gh~>P{W>kS}AUvT<+B~km zV6p+cCY%*bOa`}wVV1diOb^0m*9Ex?-?2qnKd7*0v0MTiHjIgS3phydcA=?QDSGN-oO~y!10-G&J$`4MCi;9SpS!0J#YLgQ54@*R z@5uoXdMeh8rRfBc9@SoC2azAfQQ6G~{qiMuMxmtzc+j9J$a;H~oZ&^`uCd-T8r?$X zs9!jcfA+xrx~*{^o0{;lNJl3XB0S)E-G@x5#T|gU+v75JXBERD2np9{yY@ACxelIw$J&ClI32lq(0^qus=H#39c3Rbw zi>p;854cFVq6xrU=0v~MaFNF;v-{QNdn249^o!g{_PXiHjitYXedZ!Xipu3)suX|32g>hRUPzySSwaTSR^KptNk|s z1r$m5eJW`{w1Pyjx0EuyRx_t4=2mkUc4_JQ)(eWKV=Bgn#-@o@(eVO{d|1qCu>FBt zJfiYKu>*LhC~`bWY=m`I^!>HeapN6ibELTXfviW{8x(>>&eav}eM%lSAq>`&KVTOT zkuV~!D=GyqH-i~Hfd)u#mn}CUA3R%acp@fqMLI;FU{I#gC(To`aye;fg>HFBsj0Oe zfhL0V=Xp8}IF-+{jt!ZK?(}#R7xKxjPm{Zr9zjOA}K{(ssd^!h9B;dRBXkr}ZluIJmdYcqQ&7mHJwPEk_ zWLMCKPt#5Z6&1F_`(^}lj`pBLW=UXMAXqrnz6pURBV5L{{K}*JoW=xHs?^f>4SU!d>}GUd z?E$tlgn)rMnfg7=eq1$ULGL-rzEr`_2gkENj`q3QNkQ>uB|8Fb>cFe-EGg>LuNY?j zu>WkNN{b;awL0=45L)H*VbN14YV1n+L~po4TZ_3V=jz;; zKP{g+wzl;mCh%brAXH}xD-s^v$#2d9Bx)Nt2I&>Xk!}d<5?rU@I8YT5FA00BTCdXB zb)BCo63_MCFH5kV8yvq@jpo`gTi_YsU$XqM{R$*Wq!Gma*d~x^DttrmKz*R>Unk36Xl7^4%Hoxg#hg<7K!v4Z5}!f06TyJMU^g~Iq9Ze8@IoVT zy}edS^UH5MfE$6X7p8(jvKpJW2_9KTYrrli9FI9OXxF&Nv=&c7CeXGp!|Qf`Zzi(me(N`Li=b+wFoN z7A#**>N&4j>0V@kO@(mJ(^e61Kdx2a#xYx-^~o*ivtGZ3!c$wTfAdPCHCA_|_H6?(R=(ePgu8w)ytb)pDj(->d5&x#+Tt@*p{jRcO%j^oUb{^W(T*Q_&#u zW6%t^E`#*t-BOX?a|5%TdjKVB-Mgdh!nF3qv#Z}jUTEjI&!WZ|fYdB%xie5OxbVaC z2}TfQNbdfL;w{xi=J7R#*NAz#ySuJj;BS376`wtLx|_}RZkPu^&8cq~A~3$KBg(<} z3d*(8Ma4=-X^g-!A^c#tWg{LU<)0~rxpb>0N11_@RsDC?K0!*o^^@;(sYdH3CB!6V z>nEQ?+*Y1up2-k}M=^&ZJa0?P&o+z)M6O>TJa0dro_aOjpq@0x*HfLZ<7IJ2BKO&P zQOry>L|D6N*C0d7@z~q!^Y{F@k=}SK+ zGrG0tjjNuW|Kz1i(6{)Woo5_|X*@i_OIIcf{H+%G3S(fayr1iw1?d$=%r4;F zWpHwXoIJDp3CYXH5n&h@3l{)aZT5X`{y-k8riLv45ovpWYRX5X6ZATL>QF+m&<#H% zpl`Q6>s3o=+$35kf>TJ+J}C5D`E{#b{l*{Q?Rd8B6$TGdnJUhN@QU3>6dQqCA^2aH z;GiV9(x)IQ>LR1RG({^KU`HY&pxqD<=`hH{3w_55R$xDVLz1;+WSwNZ&sqI2S!S22 zu8Oy)!&2aa;5~?X**xbld)f*lJ4~LkZ8qHctk(KV}*1VbhVIHd1wyCV7{0gU&M^fh*iS}wnIP}5&WL$#J#6v2Txqh8Ilc&JL; zWBQH>S|wtz^)UoODe7+vigYbnj+clp$d!DOC+ZR&P#bOVCaEYS7jH>w$> zhDiTpZ@%k&Nj*&u6uCT>A$3jmQc>4R*h{+CxC?AAkPl1zET>(w9D|FTp~<+jRTA3=%KHmGltVcgpI5 z-~Tm5Q3kfjrkdUk(jUmuXD4LxTm7_!$5rJ_hB;)3;IOnfkJTiA6`d5$I>7ig7Ugq- zuyz`RY%ubWT_tbYh%3x=4Y(xZ5QUyQW@BXc$~UMkVFS(5>;a?9z^s9JXM2Dno4Ob+ zl|{C^JaJIfUeaoY?J;pejkYYMdOF57FM-kLo-xk~M0;c&nc=zNE{N<*(0a0l9t}_hsgyUR3<_-A?}@(Ndtxdp}K={a07?>2BnpN zQtdBCJqpfL-TLO`a%x+fSjwiCP1;)>X^p@GS2IU4B`!;O&X#N#d<|MRK+12@fC97x zW~-;${EgXD#>|I6$bW8szB`>tx>zy40R-LYF_D;@l+{*yne2;$R$&aiGE!&kD5@6p zoMq%?8iFW1f!I~*I*fr8gEhxhLH&dU`;g!E?hb%0q&0W~6k=dd2gE&QPCdaWw zL*fACNeqkG)l=rJS(ehYtCQF)YId#TAV;j+31aWmxYdBfE=tB*TIEp+;~v+*Hq zx3l5HTGSgt>)T;|5G?*Bgd;(hfPEFJyy-Mw=)sA1gN8;=_|`B{e8;qBB?({OF+z!w zU(%f%QRuq|WMB2PcZ?0HByR-mv%8aZW<8KSpR}I?zro-LA98mmXb`+F7@kK2ed7xO zojzAjxo zKfd%XFT3BRj}N!byL!6LoY!hT=e8~z^{zf48?W?x@c%#S=^t~JO+Nkts^-sFLd1ny zF?{|>ym#B`68l)$dgO*9K&+s}3+f`yIX6NbRtJVo>IVOI3|jvBKy#~z&g{4jeCU-r zRLnqeC8jmrn%}Mil_K%aUMLaF1nr+%JCFhA4|$PWloEU`URdZxDoe>15ErS}A)$%z zcP4HQTpgpcicgR9L~i!f4cfeEH-enLkrUiNHNGx#Nsd}7nCrFJ-N_aS2}g+4>wF6G zAfOnu4=ilb#&H2Sp)VA#BezwEHV!K19+}o?)W~>NQ%7TTV9)QaF#9_<&Ry%d7r4 z6HI?S|5O|~Q|BpT&XP3oRA%zO{-H0o!L4#`1ok4U@bPtDkOT8rMN0@y#y5Ti*fS#x zbKyL`gWG-w z4nsPrNvi)4Ln5iX%xh;ahB`FCQ-eWq@-`~9iH~0wXM>i(OkOU07RbJwI$ifu(iu5C zb=SYOBum5PR~5xWVE5pM5ZiS1*?MhsRzr&DN=1;5HWXF76sMd^k}Pv(nkXN_ZxzS7 zcxA^i8OL%Xx%aMeB|FL+CD-B7+xoCr(*4Bv0-t}X^j|MYtzpyhy_&ne%NQV$2R)mc zo2i#m=PoaHEj9-|o)*Z`@1BJepTf`z|3r{wQIn^^*B!z`d0;K}V}R5E>k+`ec8s)5 z8VYF5xI&uz8_zkga9$JvjySq2JJ|S-K~1C~&85NNNhJJwqhTNNzAV&nbmcn8JgZ+N zR{e)Z%fIOjRMFQPiz7RB{Ug;Eafyt!;IrtrNS|mJBL#$fq1>0I70sLwmrq%to!r@` zNm?8OiKVdev2{roMg#3xAhSV)bmP!t2%50mZnr;kh%ZPx-n%ZIzG$=edm@f!?ysMu zoU&V2c!66<(^~z-VJ4?@8=ur83f!xmUPr5j{yMXN`|R}9{5?bi24itCvcCjW+as6dO}XRZ*hm<^VK z?XV%q=Px3SQNfkbgs*4u(#6$}%~G4 zDj={0k#DV7o7aSt>4FZ@i8clm+dxl|IhM+Ki$wgho?pQzj)*)3ZZoU@j`hYVQBdz?xE#R~%Ih zf0>(MRVGqFu5`Ypy&zL{>v>;6;E|Pu&Ab;nbQ{`CfUm4lM`I?;dd!?Ag^Bg-mXjv7XS5yd++i?jga7E9(R>C9(nbC ztDS*z#`kS5@ubsVVZKZa|mWBIIw`1|2T71@k#_nfnp_AWYUnGMj(x0GV z{o|a9iXb4N`u*6e%3ijR387rvl}F?bk!*2|g|1RMl!wI+m2AOUCYCBpxQ2k|b}0-5 zM__Kn<_PrE+SeVjpdef_LH7Gj;U{y8USCQg```jfL$6joUZREZqf$j+IsyeX9hY6L zuox&?Q+V4yfsy5K6?a9f_^YU@EVR1ymA2Di5ZCf|^5A!IWQcf54ZGZgb(8X9Fy*MW zIi~}N#Wq{S(5bURumL+emiS$Fgr2S?gn!|W)b=&BJynN%a0rM{M?_+m3LD^}fr$V3 z(eSiK6fhV3+#y3%^fBmEC|_tW=~M```?7g-%w3&PjhLCjorW+yg1Fe?hA(ZEd30F3VqSNONL5#U>2)3tOA{I zT@||aM=lLp1J&CSclJ9JT0$T%Mr-TK&$!iU38RZl<7Caa39z$Y5Wj+Cx~t^!R~v@) z>B23SDg0noOm_&V;rO5O9fs{L!nJ0Vy$(0c+KEPg$1(ypLfJ9|7$vbm?KYX(%QcGo zdwvgkfkp7N%-U%R;gr2zo#gJrr+S8>1PwWslrwcBT14ovvA=S-ULS_l{bF-M7W2e- z>YdRK^o$LH!l!a8R3EcKR9;jOA%=h8L{*AY5j8X^t{a#?z829tdponDOS=Y*1pK)ByRUvBLU6O6ZIBN=hk~cF?;{tcK6{1bnR70l24=&kbL>VxI>BOAB z*L)SYKI=PM`#UYs^KGAIM?_(d)c^eR`=FkPU=cZGkAK!BEECll9xCu;bEUg??FOA@ zrMTM)fH5`mjxk+YAgbi(;yIP(i!B<*NWJewW!e~AdAc^(46~_5v6&-8f`ybhEKd>N z_w6cx=gj`~SJiNnA+w#Gf%Es?Cgm1cDAk0dtEf-rG-Wik_Oop=X&cWXPTxMg?(E-5 zMkIDwQj#6FjMWY9vVk2ncm6ZDz9qSeHJs`}QaOBR2^iK<1)F)u=$;Rt_b}~~GVXVpmj^UfOV z!!jE2FYslIF#`6U&H^e^CQq**T}Tl9q-AKOm%Gb`CEkILRo3o*$>6*DzhnUMYJq42 z_EDb+d(Ymo8k! z{{X6;=HOBFzX3gM`Y%9hz5&&ZovSlG7`hmRRAUXzj)q9F2hs}iV1lB-5sBZD&(=rgusQOpS zm3j4M490VkOsy>35?pVIdBvf9ck)-Ed-Guzf;pPKx2`+W zpJW2f8MuEymmOjV*o$YpjX(E|`k_n675nm#S@PczZW9al#wdf@<9Z-h_G|PkWg_@v zO2V-28(9L4ptI3qs8#~-I4qq(&G*2TGEtQ|){x1{GFtsKjli80eCi_&_rRnw`Y6${ zZJ!uZ+1nqnf-^}qaXoB z6-G;uK{y<$YFS1nh7Zf+-^zE8Rb_-#V(!>8u#MCn#oWkUTyn=vR%4hc<@A+Z#3oYK z2M&Kz#nWDpv{MA#GxAuFI?gBUe8f5VfUeTDl1Z%9hlvo|7n(I&ZLg;*Cvq^g|*Z zLLrnDigL)-X)NMzn!o>L63&0 zU37Q=rnn_DEG-LFD|Wq1WHE|jqhD5)4UGJ!FCCX2MGR*)nH!tnXSO5B;?fj0QkSZ> z*MWdok_7Q7JavP81|i+2hoHuC6F!2fbAURVfIA4IhH~7gK%v(Wr^P1b)U4L(l)WsA zpyzrSkKGFFY3WV;dVHb^Cj8WWKle?J`qTp!TItl*hpH;^R&rnim7KNM(}`y3s={jO z(&|fjQrSTW3zWTFHv9@fT@{=?&vvd;T2cY^oZY2ssmG0qn0hovr0QU7a#-9rrLSA};1js%qr} z{QV7#LP+@2|M0|gUiYj_y>m4Ojzt2GQ+XaQT6UQAvsy{%Q03tX^I;!@aL=)^9n3`; z8!u<>V6c%k;c|AhM8o$<)-nKgR1k;Uy)n^cID8o%vs>;B4R4Xx>sYy=E92bGA1%G` z1jpDwP7r65L&p0Z429+fsnaea)CidMy0ABCm?V2w;eXo!7qX7M=E?t=X|s6S24k!P zy+Xj2;3T;Y#D3CAs$Wp4l73$34}YyZpJK4NqjaOopZuxP%^8i7_vzM@gcnl#^y{+N z5z6>H!8R%IgdgM*XpH-S2Z4(*j8Yx%4IAKflE~_P*u(8+-qY!g>;4y%x2B*+$CqGF zRQ%cO(839wKl-~CQo}My_cb=NPp{koAhxzD6tIx@rj&#?9YSD2A0bLqOGpfbuv&h_ zl;C?yLy2*BcviLQg?eBHzv{2Sb}*bm@qe5{JXb?<8_iK~-NGFZ^{37DuHLw3Sr2B07{vnuN}98LTiLeyO<9)b`M=at1yl${3>bv>p!#y~BYoFK=#< z@MR}!g4`#<8P`Rv{yKiv41a2@&D{7|-dcm{qU+2#ThMaIbq^yq3V4VQq?bJbnXTt7 zbNPk1t}uh}z_Gw(8**vxh8Fld#7_*hw++9Z-;m`f)WWGZn$Xf^thLCc%=$;}f>?f} zZcQ2Hj*+GfjL!Yu$jj?|%jGOqP<*-Rpf)Zs~XF9R!s zuD^V|&1nxkR3^1prH`&g>}Q+SOjOLoN$Z~K zO?u7O;Ic<^W3v}iMEf{eB&jguWE_cTz@DjuJP=K}UFVlfH3;(N-5(NR^Qr0)k#kAJ z=<8v;6r@-qqf6!`q)Ag{{|a1{JOxNftmpl5FvReAn~*`99s$ukgmAW{n1Jr#HG@Bd zr^$ji1{3PMteFZNcq&G&zY8rltcTa~=eOhXc(oEqg)_gOYIHez_1OA{5K@p*sb`e@ z<@nG}isf|4ldE~kRP`3moUjOKXc@08tHMgZhw|TPq@?>i=Ip*AoOVR@&^cXkr3$qL z&ET1Cq$P&K9a?%vp&6C1<_XZ$H6}_jusH#y_LBIiv@&W{f0_+GIibG#(tFNK>d)8CX|q*=H_uasmN=o8 z)yq_yIWAdOlBM*mYE)DA7ic|o@(-F!+pH$hm+73UD(9Ez>~#Fm7pbjm+-6Lvn7smb zg)=jHcjmIM^E8V~5dZ&f2$yj|HGiw%`stt7+c@u`*zc7|4z^40RkPva^`qby05lAe zT4Wya1yA_Tr}@X0Qn{~L+pd@69ziXEH~!D3UwhlGd)p0zJ)46)8n;&$t5?&XRmQ|F zg#HoNUCNO1tQ_LiSG^uU4i|HOthZumW%ki<&d<|0l*>Nnu@J_-nLBSrO0f1*ApqVfJ`+O)QK)Ij84qQ6r3yReTs|$bJ;t33EG zk28ZX&Oh_ktqZn32=&EvO)ffBZ|H~WfhN~S;x&#bH$RA`!WC6!dpyOd@CAQ+XoARp z*xPjW%5X6gcud6Nc|y!p&|@j)G??6F!c|N|1m5?2erQ<@f$)Fm@$M0S?SFr`Zs6C= z)pQQO_iL=+)D|LR%vX4>_gg4-tJ90#cFrd_;g^zAoY}O`wAv4HEx4B25v`!+gMV9K zvfulYD-B|4C}BbhZ?vKQ(W$YbGP+XU0C_HJD#-1OJ$l@wxrYP0_{r zh`gnKf4HtBSn7jJEJ0O0xA*ED>^$UGUALqVP5c?P=61%eN}IaYe6cr^*45s z(%J}UAA3Sv%3Q9QcFaeq|Nh6CpD(j!8B*~NEm-?!d!@Pu zzB<}K0!|8fDQ*fmPl-GAZKi=_#P^~6#-foh$B3j$g3RJ7JmyB{ErZ)r5Sf(WHU1=} zTZB$M4Wb&eE2(ea~sz~_O?#`nTDVJfQOX5>P%B>H2E8{JP=?sA0Z zRmOPjVqVW_sJ6q)aiz@Rb2o($jOq55w}HayCb^x@1ky(_HFaT^tjWJn6unXR-m=EM zIMu6CO*>Z2%RUL(GtKCPfE1eXZ4{8B39hD<^PvMLRHi!ND!^9=auOH9bcbl}q^0R@u5wN>A3lH+kkI3;cA=t&s z!nyv7UC6uM0&V7l!2p6YPwRXZ;@`Pw{|{T=7+u*DeHq)fZQHi(bZpy3$7Uz#*tR>i zofq3SCcpX5tTi9z%dNN0ty`eh zTda|Wden!kCON5P7>GKAvE4ka@yZ1M6SYb6Kyvwm%D5>j%8SLKhGnvS0fEIcWZ?L& zEOyTBT#Vl<ta{ssc#Xh*ZU4mf@TPhdXh$l<@pDv zB48c{VEb{9arR{cY#7cVd^p;T;kQD|Cw7eW8k?@uM{q4gJzXqwn+V^=<)Y9u%tczO zn48av#20@=J30P&I!Sr$;7-KUPm;Z3PfWh)4YL$x)lZh0)3M@SBHQ@Kno-!;n`CNV zo6)hZb;p_=9oJ1V+3)M=TetI(34EU%x_BOnl1(4OF+-G=QJtDoyPLzc>VuF>%l6Q( zZw7M({f<)_1>3Hst)xGqn$fKA>c+jhSiG&*tM1BQ(6=Z|h9pn<=i#GZ&n0d$LMB-_ z7_p#IIqH}9DZ^XCs@1+62EISMQ!>oc^Cx3EOAvysOH{;vLJ2#eIBoeqAKh843gmSxyIGm63S_gSVd)`1Uy~lQ znr4Ui<#kTlJ~Mu97sGU4g_BbgZq$*9Pt}o)F;9smZo|o{Y{JR@U5_72N^xgSrJ2{4 zCn~zI03lvEW(i8D$P|)Vk|R2h@EHu!pg>}=u}6h!-7?ZjpeR0geTj-WQjVi#K8{8@Qh6J@{+KDg|C zGX)S#sWcqxpzyn_sWg+!_SaNKH0q|DKbZ8U|BQ^c@-t))@DBu6Mn7NDY2+R4y1iV@ zm_~ikyz2)hQ%#f1#LpNrb3X=?Oywypb2Zkq%-E+$_TFKZWcJqj$*O0Tw9JdGVU~Lr zE%ToT=7Hslqu)S(@I0SVs~9DiRIB)zfXY;V4C!@>mbTY(wBs=GLXEEor+}zIf^m*j zkYT{oOQC29s)x%E{Y_Y+JRf~vj%Z2gT6n0;dHo#MDqjjl-&UyU$1BAAlzI!$-xOPC zSnx`Z`W4aHX-tXe*HjXQAySSrQb=t+TJ**mTp{9V45BwC8I5twm=jgG(B5EB?8*;z@tzR+ z)srQvn+zI>MiRzy8cJO%-LtV2orZ%Dm;7?_#k72{`juqvv}yI*{(WZqtTE3THcKZANX;{F z4Y@H2aRjEr@yv$G{BXe>;aV+8rD4?cwlmw_dFPQF7UYUSY>RjDv$n02i4pQE4jj|U z)gcL!z+WDSvB1&#RxO9=u6Pz~J5`r-F3(7`X}PeQ#^XfjFFhf82TmuE8=0W7BE@lW zFl`@W^cWLsN!onzn2dV4asSHY(hG~Xso1B_HYZW=r3;=4S5I^*u&D)r@GZ)nl{B3a z=7BWTOQ~XsoAC-b1i!3>NcHv$UZLu&8Y(cUBW= z4*e6)8sH8_A75ECEi~gY85*3@vZPJUl}%n~dEmh(K9pr_6FW4d{ zNc9y7fJC64*lBar8GdWwaMktvvg54gUY>w4@Y>;ZrmIvNg!O5W;G}1)huJdRNDa~5 zodc+?vX!AV6B4A#gt%%}yI8S=IY*C)`xuKLejgI8)^_GUbjd~UNTB7gfpj%a>8aUdJ`p{o z5}>xDo6yZx9V_Yo`$->ePg0JAMPcrt%zCIlmEoWU<;R^55YERs;=wGpzq zeO1RsS(s^7^H-+Hw{e{QN>h1p{yZhq61wWTOmYQGIm~$3IE$}3x!NIg1$7<`%^z#3 z+zM)=3aV^Zbota2Id)e%9-qo0tqNH=o7KDQLdZw2RBITrDfu&+I2!ns*)vyDZ3M46 zH>RtQH1mReBv@zD=LgRvp4L4div-U)x*?5=Pzv$7d_?-3JOd#Pm#X+nttd*xD(Ebg zFm{)G#~b`Y;N|z;VTSR^{%9UA6a&Hto!P$Ri4if+0eX$4;U&N?%!k?N1t^pxNub;AkIXg z%D}FHF{GEJBD1h%649>ocA<%YlUSX$nvqy|5sAVjCOs%j{iI)o@2AjdfJ!&mLs1Gi zjk>NqQwKj0-(r;_Ssaa*#{&N|O3yx3*X0-b{ElkLF%XS)Sce zgD2Qp&S;SKM*%@8lh?ZGP4+Vgg+HIBR-^BC%SUFNE`AH7Lg9yzeK0W(FEi zQPv*{FC%79O}QMAvfp6(d#Z$bS-MCou9`@oIJuC%K#5?AP+lz^Jjf6=A9Eh+dg?IWs^{X)Pz_2*M#bV=_1!Q%mWZyM8)H| zvgwyPmW9*L%MsGFD6%pNFr??{m2JxCI5s5?;8>$!kNz*N>_iL?Pu!NIr9sD&hVI$6 zQi-)|FsDCjkb+k+2&$?%_ji9~HKz{FTKDRQ4$1DkLPA&L7hh*_%y>_*R#9^ML@C-L zIk2idn7wm~J?ZvmnHxJbtUjjRCJmO+500RTWo;=Mxl#o}4%5EjRE@C%*5N?~yxuS+ z1)r@F&z=k)_qKS?Q&+}|(%R_vZZ!kP(C=!)so^cM_|+29=m!PdAXijv(w?J9=m<#7ye4m8seS6 zO4raKlyc6dIwC0zx#vBF= zSD`wK`!bfEppC_0KkcyG*}>J~^p^Im_-0&xO%B2`k+w<5x0sX$v9hfjSY;BOd*_2Q zI%~-C6ub^A?+K_`_aUikw~8ou<;pC}7M+SUoH277rK>aE+8k$hU1!66x$7hryNPOb zML}I;Fm;vLWt=wzjcP9t9?qZaNIOxAM$v>vuZI;r*Iwb;)ifj;JDD@n>Il zY-|3uIGrxV=nzUV9!?x-jh*r8Le}m9jP?TzH)Hf1FI7jnB77UrdrWA^Y-79AK&B|+ zIN26K(%V7U_t?92TrNo+{|jp{9D#eaC^p=?S1}epO!Mb!r8>Wi;Lh|Cz1DyfTae0} zV*rUATjBsyZU4!!PDr9B3R_D<__qxA_70qfZ)~0jK3@QA_MyyXYIt_sLReQ|0snKv z9F_i2?B22ru$MhtJk9ka#tt5mxQL)sdJA>dsuJxm#GYk(saRTYkgop{$vMkS=KHW9 zc+e%rIQ~l0Gu2OOSC4~r;Pu}X?!Ifdd*>fi!{BqIZw~K>I2~zNusm#UUh=_0xEVD~ z^qgug;3CcOL{vm*z9#-+$tmL4ggWF5<;b7(aTM;2r}$bbCHtTch=#=dF5G=wumn@G zDss#fX4lj%JRhLHsKE4Wv|bW%T*lN~x)x`ov+zrkA!^$|sV)|VsMJ_9FqqQumn^=1 z6p34bWGq}g-Fij}C_(mVw~kN$djhFo&xu%uEZ1(`%x^&hp=Hl+;#Qk&y_u%h<78{40^0l+*@WyYc~))JEJ6cYN%pS`qA}?oVQb z0Fg@(F|nH50m>?tmq!u~Fp%rHNp%v#X^H9%xsCqYv(`6+=DJg=DUyzd67B*UFUQXC zn}yKu#K(&#{>A(En$Pxgi=C^Vjn`5)riwNg%NFm@|m)syw|T6VQ(e@kdVQFT>}m$0JXLP`rL* znP1Umk9Uwk*u;lc)#KYCvS|jq5hcBh&9@W6IA8U?QY?}MyhtguU25@(1&%+CD~pL} zH)JrS@hhi~jQF8N zC@!ydMJX;dI6HSZG*B*(Wvkj0E00ob6J(G2y$t-)R&Fgli*x z^nh@INyu-V>%O-jx{x_X51pC*x)cmK^woDiIS1}ze027wZw#zLTM(Q1S9HB~r1#0Y z!^WW4suJ~K$xoIIswp_>Ia;Ku0Rr_(FOVi+8pDxQKI{7>VJNH)#p;UcZ zR+Fd*1YBKTqU5PFGs(1ip}TgeHb~EEncT+c7Ep*4jt1@df)s876iY3pCcHxBA@zP8 z7I@nejQd6L4kwgjxtp6z(r2071ckkTYy%2`%n=@dpg2MQ$p@N5y&3H*7^0F4ViI3G zme#ER-7r&=FIx#$xtZk9fFkmOjr=G|2I0ZLNUh7x!+&R7hQg8T z34rAk=vv4@8g;XXi~uFmj{m91KUYm4+A;8dpI2NA8M;vw-S}dp-j5F_3>9lw%_x1{ z%(oF!an0Ow$tfk1z=t($m0G1k;-(Q>ab8Qyx(135zH-eH|3eg&d@JmMx@qdOz~R4g z-g7It1!y&~tG74A*Y+Tfgz~rhKMARaM=HP)Yr7i=dxlxi$RZRXu9Mp!70dliOQSYdb51MC zP&~>YNSC{9AhHT>2QfhO`+RuW*mpKDiCa3xBpVRvm zkxs$61&&NtpZ2}lFYXdb3x|ML=Z+@}R6|yAOq`n7%X#APIKWb@oULc2b7B~@Y}DS6 zkI5}r=c;I|yV-lHdAr-!5QF-eE$aDIm-oUQtf(JTXGmjgJ53q+TGxOp17>H?H>}KW zeRv_8q&yrO@YQEb}kmomV_LWxc1J0*&S1!eDmk-rtokPd{M$}$e zGAX^D`3NPWxX?D^&5op?503TzWJ6*mk7}dUrC9f!&a)#(ET>6zwru?Y@HMZInh=h$ z<_#hullJ*`fbJwO?5g@V{?NGb8)UZMCVwrqH2KjncySsO77$ii$;A=gIom3N)f9wf zKh^$|HN*Yc}B^sQf;BqEvTv{a^j3j4u0A+Omqt5rV&Ns$o@9)Cv zIJq&5oTfbL+ef_0bkG8qeHJdXVm2@ z!cN(LnUxc?9_ipHzhl;9EfxL}CTMkeJgIEt5w9eijdpvutIh%?tL*@>s^0*~*6si= z3z~6ej7YV)zvI^#CLZVe6AFC>CP@z`kpLEB9XLGcI2K?3>~r_v4<)GOPQY!L*zX!d za7hN;FI+7!y=TF=M0 zC%`0XYn%O5mH=BA3L*<4$CTGdnP(f-ZU2FTpt_J%Q#a_0u*EZGl>^b(Q?u>PiP5dKvNl$w_M`gtfdWSpIVW>mvrYxj<=&5 zyo7=p_=XB2Tq6G{hfObe&IdO5M5&M@UThb>@vvnO> zZrrLa8ZQvPX7B_S@b=seCsNu}s7dY<2&qchN@~qX#J}wbI4Zb5ye#=(SB$Tb_Y6=i zIeR{CR|75GIc)qeUX{DgHjK+ZRK6RcWvYQ90@ZYdD)?ij{gJsvk2jw)9x*`mpxmWV zfcoh9I}Rl@JD?Wq_Pb28?cX%0iyV48wS6Br30>gCpd|DMUR03jcUHe zpsEz)gr3Q>_md{f#ty4Y-BcTRsI>Kys}!UeJjl{XlNP|oPJIvDd7XLj+Vx{M6(sDR zNm@-3H;P9u(wqz59`y^@A5$8d_FM-FAPEgffnt9>^TvfB`31 zoWlg?doQa;W*09_C+tObw6MM1tEsyiSKNM4 zM$=Rq?3G%vG~>oPf_@S9P4nBE2udMoi#J;3JrMVYC`C|9nPywq;*xd1<7`93I)VoR_FWlO3a=01g^t{03dxIzVhKLWmH^R=R;>zRV z@+8Bf!k9Lp+41B;%;?MDB8=Q=%Y{KPlEd2#A^1zsM zskg5q8sUAiiSXol0=andtinw==w=Q?y=o)4S3n$ddjP6=tn=dHr#wH(vmewY0>@wT zs~ip$OBx)IaVm*>eAL&S?SKIG?*<3%0Wd<{C}ao+B7%G%MG6OAbH8bUbak{t>RA!2 zR1Hz*Thv98FN6$8IE-E)Ro&+`g>h;fUte#vSKSY9Lhs52%)25_KYaf86Iq&rtl)4p zAcM8$es)~8H9%>t3`EKwBN9()M678j*LmRD>V8&ywP85ve$Jx1ZxGcy|0R9VAZ|hS z>%fiO~b&plXyutdVm`n`k@i%74M&&M+ZN^d^bF`(!T*98kDKDMZLnr zr7LZe)}uq*m@2@Y>&xpJ!ad`Z8yUD@7DvA?KI`_Pmb#G1h4!J3A`S)&)&`GP2uR5PLpP$sUk1PJl`n_71?1oU*T{%JY!I6wc(RKVCDxhSO# z%-Il*zIMs1Zo|Lh2!U|=7#?@6gG$HU*p%)W%DqYsR^p1CG2;c9{m;J)p8HrQxfKl1 z50lbbf2kCOPH#_B+kAbzVT^}T<;%9 zqWA!&-iRO`nR8Pn;y(Ka`(lN-i>VTvk)rYd)Dw+D+|~9H06vGT_@@JuLbA|HAshCcZrD%n#(0o?Sm8uOVKfG*uBHTXvyyzi3);_g( z5zo~Th|3B#9srml62B9R%+b(iW?-jB_yWr>LFnb_PlWJ`4>B*&iBQ#oE@#oc{dQ|L zkHr{e*}j&1h2A|gIYP0odj!riD8VC|6-j`>!OSkHAp_x~nWtadXJEf?yZ>UuJ!0R? zH$-HYL(u3sMdXJ=$mq93r1vBq-d&TmUvM4=^27Rq0VZji&o?dO-9$;9bC4c_0Kob{v1WZKgz9EM+9-hG^W)9qmcT8K>{E0;CBqyp67*Ou}0wV29ES2{Yg zPT=^O3w*V&Uz)zPHn41m-Bf2?hIB#T+B!zULE!B4bwr97Y#Ize@sEL5r6aH)Ts(52 z;oUeAiLtQkoOTjcuWgxmx{@xXReS7)zb#1#Z;24-%dUftvZxA+; zb?#Lr{!H=JMwchH!b@0cu>e3wg;OWE4P;S(kudK7bzS}?hL%#DdqyXK(I(lL(}21UrBIAb47RXQP?f71;b(}QM) zK*-pNe2%DYV+}U+A)d50SQmV@H>Yd4V zMLi2l7LyM0VB_QP+7F+^;&pVJpFooSj6~NKKo40b;G4%Ck$kl=qxbwEez6zo%-7>z z-PS?oRiM5cY@h@*5)8t`cWVSLQNil4a4u9gLLYG$SVtPLY^>8td_Ip87X5!lkQ@x;Ofu0X>An&Ad*)D z#gyHtPm9SIDH@-Ur)epWcJXgPcp{t97)bi5FiLmC34HPqKhQsNuQoiy2duAg!pj=T{(@2&;na*Rs*bZX zX@k4vK^b`iTpW$0GwWY6n=y(6i#T(*RVw?!vX9_CBGZpo&yr4HdG6{hd~kAhTWl5k z{M~H@X*o8-;Tw&7)@mcPYAwJ@#}LXuk4$^5|M-;8YOt4%L|iqd!xKa_7Ix8;eVa@2 zZs>U+(bm}i$<9u&A<4gWR`57i58*X%2-x3cT)1=n8Zi`5&@dQ}|8lDOx;_4J$px0b zZ_^74CFA`+Z$F_h2r9R8eau#bsP+D)hneh;t&mE zhj(-Mt8<~AtF3o?E;-@Kc9Pdjz}aAgzFMOG7LM-3`kwL8-Gn$ZqB-(vCLK*nQQqKK z#$mXR&bpVZyW%U&SEE=3*lP1XK58eHSkRHz|Il~;NsqyeOsrO2hR%vlhvvwbdVEKq zVD${u|3>-v2UV4o;LaP`q+#?=Un(;|u!gf{EwKPra_2ynFQAW#IXtAcHJ1YB_O{`A z*8)+60v@NIvpZaUT%NQ)YM4?t<;*cUv8>VnnaWYmPi&!1}X_fB8_X_Mm0$v zN%n*xmQ>-FMH1C0D^tTfB$DIg&Mif_pQPCb?P%mYu77w9YBvR!*tGNVtG`~WZjlGu zQo(K&IOER88o33c($jT3YC6;?7Xe4cKh#l}EM@;2^}_DWl5MF(*Qa1X{*$7mdD@ z%bcyAVA6>(2hZhSQa2)P^!l;qHYc4FOfRa!4@+t06Q3%|OQLL?^_E|fS>RlF->?@; z!HS3f=+8`=OPDQYM>5Lz<>`3=!V}_LT)4&bJ`ko+!EpiKjKhqCQvsDQUe=A|ovCWOJu}P#aU$ z6c7J?W*I3ZP%&Znx;e%&V2%+O>%a|;>)4Lq0a&L}C}KaQ<)J6Ct*Q~OB0KP)u2 z)wkimsVcIn?k>Y)?9#V*y+47m+~QdyWiICNIdbW!-(C5btTG51pvdCTtv*>>E1-Ai5?$Wo-lduA%7d12pEm3-M0T3{5N+319deIes;RE;-Q|g_-2>1qLBB z_Bl;9e8eSs}HHp(p5 zshhNI_NjV>Ps^;S4>2=u)U2CyeMU&joEcytH5G~JPUJ&-91zI-ZOJ$U2D(0WOum3 zwNSaeB*W6YB{tb*$bPhY<|(Kovu4qX+G&Mt*)4V{Ay%)C(n-kP&QC2ftqx2{;MY7; zCZ*3S`?>ou(jOiQWCA116f62XUcBq9!zMW&vE&ofub{o8*ry4^xXF)&-}euN9BkjO zEBo7VJ(af8@%}%`*!$0fi~>Dhp6+5jyl+b9MrtYw_ILhf~O-$C#CIIt84(lQA*Nsf9s<)IZ) zCC8*NL=K%rdcO{0LJ&k)8>bDWHLLVyNOv${SGhU(N@{bK6}8e7K?SXnC#m<_5_L+r zhMdL<`3gK&0M;n7=XY)hQf9&8Vz!$SnkZfq6 z=k^765@lV$8zD+w19KvW@bC}!l@UlZ4y!)leKj{^iT8F9~q3($Ly#CS_RBUWXx9v+@Y%k3dY_i z!8`f?-`AAjY%B3Cp$w@YFj}123Wca3mH{HnOfI!Qkic`If!^o+XTsE?f-t{sn>p@= z8|wSPU@KVj$9jcB$J$}|v&iGn=~&fa(=sc5R=-B)NY=Jd<|z)ZmN|zH_=KFtwNd6P zA06utV5mkvPZ26nLA0#>3}SCofb}zO%d!dyS;@85W~#@G1S@rR@0{kzvIRh0k78~h z0zW`*%{R@?gfHrge3c_tM}xua-UAR0#^{UUt8MErPDbK7%=6_N^1_jp4COK{H>AK* zKLf=-Ld7g7ad8(dFH=Bg6)j~u0B}P`caPA)WX5OPRW<`VrUFeQ45Mgq7g+rS(%`)SIpd*e<}F-!dP zU8Hfpv}|Co>u>iT((`x$ZClL<${cL2d`I*A7r!iv@Ckd}Ch-0o)RN5y6*95-+O

c?5`4YEjEkSK82_kCmaL_Q3bm;(yy%jIn3G-|n(32U)h}v#=v;6$Upay- z9&2Un-qvm?RNGS2Fh7>#-K9Lk^{A_|-ivS2pid0|?612v<^8F}j0qTihlx4NSF8le zpO3?k#JWGn7GwqNYm+oG(;+;%uD2F+V0; zz%&iKZ31!8!R~|q$-FJlGudv8VOssX_ey(bsvaeY z0)7LWGNDc_mTm)nUTm=1T$#<#RI7DvhXP86gaKHll`9FIBfq2#{-^@2I5%o2^a{W% zlLc$Od2Q4!sJ-1E>x8MmSWaCv^2dkln!yBB`6G89{7>d>6Ms}c-;qD6fbPQ|RcOB( ze^gN^_@f5RmHDFrV`=^VrbG=dOsg<6-8)*F1*}${_h8D272jE?cWawUeJuD^m=xY zF$9wXO1NMU6TMDv{P>^h@G%g-KfxP!}2ZM}Ghb99nPt2x^Z+gf#3F-U99y4u3SBK2u4O+L#x3RRU1 zbZMoqhVcqaaxV6b%GB?4?e?l0tNQQ-`YdaA86pW{incZyKm&KwwJA8cb4Z%bs$M*I zDLcyq3WIBvC(G=%l~+%GPT;jl&}8w^+sX-#E1c#`AAI2;p~|M=d8UXXTTD!kMwEFe zi92A;l>mR{8{Q|NPdMmfMYYYNA_&)*8ZM1)eS%{zFS4amm@N29nAf-|rEz06nNfl-Qm2W0AC*lmT30CRwIrujn>Kve$1D2E45RE9a$K#B%M>`;w)g#tZ=x&+0 zR*`&OM9Q3aKUYbb_-9az^)9{J(01QpE@+0>M12}TdrYgUV^oiW))C{F3q)cRo_A9r zF{-$e&E_XZ0nO$e-dxjfeglGDD9J3XTMeah1k%%QrS58|2KS&!(eGD_a_9tm2wufC zh2yeB$$`(a% zLZuC&?hunMA4m3gJGOuRW-J&}0{rc7KOCLD`N6zJ@tA^WKNoZY1&(2w&Ol5VL$Q#I z=n=Tn=|rJ}<2zspXP+(K4<*;888HD(U?kBj`qs@kQ=}pzzWq62SGSnJI0bD8;xWA? zpnVE<1}{MSt^Owl-DyU;w%eecm0tYzn?ddk#F7#mi3OysczLW*xB;GzvxzbdOOyYu zbolZ`f$V4*uTNL3M2xozgcjFdzk)WC6fqW039@8qZezhDot7zfPwE|=zG(>FD$D%& zgl#uuxd*@@zE?}kaK@<5JRgQ1&5Hs+rNq3|$9Fg#Ew!c@(QQ|070i)xr{?ZxPawlE z8M>|%ay7xc@^(VWHLWQfr#QYD)10HqCr(pVd6`izt{LLLq*YKPyRKWACBybD#G+O) z<-?qae1T%}3oWgfb_OqsSLP~v_pbI-!=5qE+eg{>8=5 zr{{;?qIvVJ%_tS^403);Su#fg)K7&H&CZVwk1y^;F$I1Fdg&JLOQ_~n)t8VyrKV5M z%jazdTe~l#B}iG8A7utSJ$ZY2Uk21otiph%)x-VE{nz^!N2R`bBE+I^{yl^O4x#cg zEYtZKAzAAG!Mo#wpME_3aB*~Xc6{>ot|TZLs;2@b*Gr%q2<{T17pL#e?=?yi_zFX$ z+B-NsuN<5521ns5|8qc@lAlo(#L>zA>vu<2`yVcUJUY2NKG?rJK0R3iqRrfqgsmYAHF|6x%zN%bbhk`ehwcx_)$Dn zsUuEyeTBI+4Q8PI!8cMoB#J-10R-)_z9LHF;yKq73V4c81~yyv1wr#xIEy828S5WU z-ygl|nl;>i{g@9GR>aBzzvLK+zt(i}udDa6Y&3d9D?i=g-kWOu>g_J>QzZY2$~9}4inrOVUvX6) zQvJ-i3N^SJzud8*jM5ab_BY_qdXuz_=w!x!NntX<1hjK$z=8HSdj7??SieS~oq6v9 zd-7|f)E@X>2l2oD>mh)00Y%Oqh>L3tO#uG+PtYbHdL9~n5%|}?)J#>oW7;%3cz3LH z+p9`pi;XG$?)c-;E9GGOt50qaJ(pji0(aLjhImE^N3Wi*d3pcV%jljRa zZ@<-ie0REkczp5}oJ({8=IWARdk0qn1>{HoOuz(9D4Rv#Uw@Tfh}XKJr(5?KQY#T! zG*$Ven>$zE6O?R7-jJz>X7YR7AJ1PB#obY<(EP6u2_ z4wlW0C&twWBt@OE z?O3_lbk+Q;?8!1yY68YNOF_G>Hlf>XCD5biUuulauhCxk!4q=!gBFN;FJ8Xb>Pm#W z_Jgv_zeZgpOS_Vu!5~<2UC@+)`5ae24CR3chr;LjYOlX<uh}r!TP?RCHDX6 z@Sa(~7v=x%RnLD8ww}&^KFXuxztk9;>!9TVKc&|=UVgV;pIUeO>KVfm$Y%Dk0~7FG z4)&@G0#5O;lM9^MLLCFj-E`x_KQobEQE-1+xphAn&8ugE@Wa9;hHN>^R9vLPZ%v<- z_wIwP&xks=hdNUVkIHzhuh$0kJXe%g7g|d)s92=7JppTWvs9526DlYF4#F7pxcdPN zx=z>IS)=%lj7RNvGcdcWBnf=VE7IUWj>l8}_f zJQ!&|$ghl&+Oi4@_}(zTRJ8x$@-(Ux_Isg5;#JUk5#&|ZN+}ceJcx6#4YY3QWwr0c zeg3YA%60wW7x|$c&1ft{_7;h~sBX~8rL7ksQ(Jz@1EG5+U(}^rYy!aJF`6JBghI9v zLL;$NA4Hs8(D-J4FXocecEh{Ozqa2ha8V+?X12uqiebDDSYM($p1f1s=EXxUg+^25 zg)OfRJzEU7j*Bf+m6rgfhbV%L|{>2J4Exj_uER=@pNW8chUA}-Y2Xyt~ z|7t*&24~IlHG+H)Q9Cj*v0)UNimLM?>J;4IyojclpKY+zgCGXYk5DV+)^6|=dXQ|? zkuG3=`H3c$fug&^Xa=wCW_HU)lofB6!mvsEm5sjYHu?NJLOk%L2{4U=aB@9u4pN9G zmsSwhjianrjwTF7ajh^R&48|#`z=jI38ry8t6%S6Fg*GA{vgki`u|(r|Gm>63@Yb; zwx8~QeUwM}{}${2WqpC}=zi%SjTL;prf)U?+^V{GJ?E(79HCc8?6R`=L2I3_KLlQ_ zX>8*zmbu*MdBxrcJMbBEfyuQJ^S)qJ7qH*L83!3dBeh`)!oqmu&R20HY`)G4p0DOL zIQIs&?q9&E7$bIzIRY99bxj}wXCDvrvCUGW<=&CHo9RH9{9;YHmYOOld zx-xCaL1}Dqy_&$9ln)zMyhaa%Q^`PWYQ9Y75oOxDJP)UZHR_DjBGs;~EIt-yiT3Bl z^3Nb~pKJAb>Da1upq8c?h|nYxvqQ|nsb=2>hx9_L&j&R@3C=67Rbc|%Q9?)Ii z)a<03%Vh7^+AE;WdLw-f)EC%lH79xBGIh{+0idyElkePn^BhzbZgV?r12oNV&8@`= z9S?Htc7i62uBHDzSyVSPg{%By)XjUExO(2Jx@E~yU?r{H$qMyj&tuNH$1DcTw)@-( zTP&DW1^ZLCo7q)EaR-818XJBoDO>k>Za-})<<>VPB|469jg(v5Au_VT%VfmuptC7r zrH<&A4c#yw4F)x2$eKxzx$ZAUR&Sa`jfZK1D%$$G$WS~dA5LBR{MySXE6C{EC~Hio z<=nvLC#GWiD^UUs7oom$ukg5`w@tAPV%Vk_FAtk z|Na95SS=mpnzWNZ0ewu|!INkm{04@D?F7Y6Oa@nC6tLuAsPvNmKYQ=qAGeJpiq7Bq z6gWMZU!)v$tKTi@Oy*uib~4&=Y^~)ayF0r#Mw3uCMr?usK*^d(?q@$gJV*j0!IvI( z65@}2F4Tns7RV*LMZ>MeGH%i z-s$mVIvZ5N6OMWrelnNf^ysJvPv$h{kFq52Vj6%PybRLmpKkx(5_o^Q6)2W4QufdE zTuVZIyZ6d(jbn8R$A9>1uQ=v``1#b^mXBHEm>=_SINXB~)^~%Sg4@a74G#TNpjdQo zhd30hCJY;SHMw!Zy(}L|zA`AgM{5PYl2CpMxkfl_>vxvI|Zhr zulcs(8^MR>ck(1h!kdooaJV@IxhB68JXrosOoPHF@*BZt<)6rDEc--Gd)YU8wkug= zCbb~4zb_M60roTUN^l1$lU0Bl3FHToi~}3Z{e+@ujy)%zyEtO zoy~ju?>Sm!{V$lS{sn^o2yOr>D8f`!8d3y2iXcb+o-m!#8)F1#fdH>5r1zB@2)6kb zMjKhwx!mZ>os;}mrxTKe59^OcmZ)CiJgh_ulcQ7{>pM9tb(|?w`}kyLbE=E7_N~Dx z4V}Ac>!3WjSSxek`d?GB`%kzF4zy9KZGrkYQCT?-7>0yr1$e6wHePOowefyA>J5Th zMWk7TJb|mMKNot)zCJ_ESMta}a|-lk|C$iaI8B0yIKhZ5{9X2>6C$}vtT+~^eW=+;Y88nQ@b*&@|nCI3%v92$UqeGi=xcN*Ae z>Tkec6Oc6wyed$mfGSu`sTU z;%04U{Gd#o8{d0`BErOiGiNP@*AJs^bL=dC%vN$u) zDZJThI_4~lzAV}djBv97M|WKXC$%7}fLYHa1GGR)C!^-OsR2`tS4}A0wsVu+jh~Go z%vP{{Ikj##PN`*EH3E_E7^0Ug;1x$&9YA%ECqb#~qrwLHXN>zY;REa&;yID@M&$f- zF`rFkD7xsZBxu@-s@xk&_{2oaq-RJN3tD0H|1cKph>yP1rAeO}!z7rPNAgchVl>Eg zQUk3VQcEB*$d>~mW6^oSrIYv|LP*z6Gn?QaB_+kg={mS_4z++!V)aRsKC8Ht{hs}% zBIs$z{Fh($ltz9N!JlH}ii8TZrBnrjY~k;NT!0)@1yc343OLcXvEDM1Gnua5L6My_lQb1yP6b~Y-B6r! z6R!~s5l2jzBx}g9H-s_YHpag!I8(aE)Kqde8AX!;JZ?#q2JwGg;H>)=KwbX-V!Fu3 z|5uZ7AOC-jRucdJxY-{`IlW@)N8=io8bp@mQC+R?xm^mY!t+DC3KLL`V?hbwPvKf5 z6{+jIi?shHz^wAtB@pwS*0={{I9hP5{u%-+;MhKMr%0O8mr6%l?IO4bmi1QaC&)wy zNsF}VhGmEkbuXv0*?4KW2+11L|8JN{ll$sLl|7mum|34qv2?o)&xCa@m&HO|iZh9+ zTc%aQb-`>8F15&Wt_Axk(8s)3d)cgO@Ub{NBivRFYDmp9YJzV`q+mJ$i>(PSXCT zA@bXyue{VkB;*Oil^GFvR9Ebyv?l(aD!~49{@;9(&;OsSrhWa#XKA0F|EJ6SKg9o2 zAjo^m5A9AV;-=N zgR#pOG?6ajgvaTh2_!vH5GxzUl@(MF5K1Oz-2~GdA3T#Q| zHLjZj-2$|H=PkgN;oaFWOlem7ifjBer?2bA**J}`=pL4)>kW-x3%P{V7fM#!A*J6o z^1g;4DQqhxAUx5Mb^vCfOn?Q7VzB!_ov&!QUtbucx0W(L| z(ZwtS7In*tG{)P`$IMSpx1O4Mnvc_)%imN9!cW$v%jtZYZp%H-PfqxE9+y-P<%9dR z4$a|cKdBV!eePdHYvBLOJ8&OT0HntMpUuXr{QmEJ(%1ifmiEc{|LO|q2e|$cK&jVX zxSjgB9e#z2dirH{ynZ~$(L?^%tXTFq!2xx1c7+3Pzfj|37ol}= zt4q49a+hoTT?x%J3DghE+3Liy1`IOS*Z}E-)p|H$3`akK7vAe~bk53G2U& zr?XZ5{+G#gHRDYRDBk%|7X1$>qxh3s|SeC&#m+ zm|(O=@;ijESjd)P@U3OjDFDFAQAu+7|R?o$XKi6<WE;A~}-XMLq zY0^j}3@SoT!9{5NtVViTxJg~znKx38ZAhXYc~7dPJnYYnON8za-fa0Pm{?LTH=A2X z{fEw`fbrzBsX7r~CD-gUpG*PaN>?y@hiGzd((um! z7enjoboC8ovRk9%Z*w^^GGH1PDkWD~NycdjSbbyx*0isf2PqjN;wN))B>o+8+-Yti z;^*X~M|KejQOMJIK_57U-)6=5GE+7GMBbOi(FdO1RM~9K3@lP-EXBhLEf2sbdyu|c zz{B`tUsZ)J;@VwgXS5f~JXwm;KfAIj80M=O$|-hN)gJ9EB5PV682;X5Y_HvanKxhV zB7Ses?I8bZYSqFh8rijf(vMEnEqfV_3*A{4X4}H&vm11O2tJeRSWH22Uh)`yrlg*} z6k2{)Dx(S=hl#st2~#2DG}THR+X7@xA`+0z{ojNPwh1C!0ntZG75Avi(o%RIZCPd- z@%ffzd)+%MUw)6e_>N7UY`pRwzV1p^UB@-oc*W(qEUvbeYpuyjt5{o)xvZYe5K)~y zjvZns$VW9pj1^vIg>?7-D*S)EgPRBY{(oo?|6eY0=l>_m`MA&jc$U`8|2J1W-y#rE z;Q#^2AwUa=GH%u^B>$IPPayw%O9(eI<{;mWI2rLRQg7#PD5zN0b|ZS04csGcG3puNA(FQY4@AYO9kg6B#`zWHwgB@ z=82-vNAxld0`(!2@QHX(9HAq(s6B zfLu(bj;X+G1Cvz~t3c#OCz)x`HzHFBN{^@Et6PQs*QWQA>;Lg$o{#@8=i_Ow|DU6^ z(Eoo+T?4>441M8KD;}w0am_`^7sjP-RlDe=qC)#joJi?OLg1q)Aon8{AurW&rmHB^ z71*t3ztI3&%iXL+IEDPmh5yH%Wp}Gs|2r7sYsC0aWp#AR{rN+K`d{POESLW?o{#(c zAD^W;mH}Rm1QU!B9vCSeD7}&~d50D5WxS4qpzXbk`NW*HSc=*0HUCD|h2rTls-ZS& ziouTD?LsL^zx*;x5ij0w2*6;Ag58L1kG6!|3{F8r(NNwX6a*R>-SO;{=rhsHfd01O*YD{0bxvC8G&#B1d7KpJnRasJCMr>?hznQaA> z8S-L^`Te=FqwMW88i!{xk@*xXmdC|M-%t`qCC?D_--N-v@aw+D0b=)zqur^zMyUwo zH3`Lwg~x(%Vd$Uc_U{HqYaAZ2?I8dA(98eyv-LLs`b+TVKY#x6&DWpjo+58cz(BK| zuy(VxHX03bFKeO#7)8N77!Fn8%OS%)0>j}op&lA~B)kr=#~B#jfGy_{J3TtuV7`sl z@|GwuUYW1Qj?%7<)GbxT<<2SNW!lI;@v1n;OC$9 zsK3>3$njuLE(354ae#a=`0Pq3n+h-Ad~I&Xk|5rpZ^epW`B|%B^PyO3Ip8}1=o0en zDLCTkQ;LKR;g@nfpMuxu7STPk|2C^D->r;azrgeq{HrJ&=^ABqAXb|RB>u1_ayil(om3e?YZoH$n&jm7v;IpKEa|c5IG&FZp zuhUmkPjr~thjx;A5sA;#m3S7!L=xJ6rG|&+c2h)M4Acuc3AGt3LkoEUiZV>q+mR2B2n_dTpTJY^)R#oQk?3dE!tJ z2?w{-6e)gBt1ygVxe#ceJ`yM;TI9^0k&muS(qZ*F<>R#q`LEgL$B0n=pfu1r`9GWI z>wk{N{r!*6(_HdjOggwG6hN@Swzwetuh2UTc-OYuUj{FgWhsehYPA*My4 zDBo%<;#J431-m-dH3s_u3T;>i=J~E`hy$>n95Z-LfWjD31QG-Vi4)8JzXyL}|2_C$ z1CS8zHQb>CU?I^~xg<2R2VA8{RELJyT61vFkT4g`X_ zV>L;a`u`HU*RtoKSsKuQZoO)s3*JXRfx&R#e*M4_U+K;1xxP=qe-HlK64c27VJUq@ zCs*fZuU-!S>+7qE&Op=N{=^1AAJ(#uZjJDV^DU%YXV(^pl*h0|cMS+?onF=iXo98z z;;F`*J8+WwqZyZdEDn1phF7zDmy$1k|#+y9n-zfiWb|S?2nS# zJ)Ha}+yw{aUw;xA*A?sk4$=^Zn}?qOuZ#bU=hM9Zx9aczeV*20{r{l&0l+nhxh`5l zi8`0Y;ihKcr`)7Jc?UNYQJrBtI0TVA0V4X=0upn8 z8DN}}a1-1EiUj&XDEWXB0B;HQi?n0_%hFnu_^~GszM=3IQxfh_$VYqs8;92T+v<7%x{BORR@|F(*67u?K_TUMhm~v&$b}zkK)OR~N5e{CM^9 z?e`bwFY69|Xp75a8f&lT8h=3kIgHMHSxidS*vX!HG2>+Cd@O-GpZfPg_<7FfN!KqZ ziK_Z`JWo1zJkEMAf5E(l#6H??5o-i}-!bAZI{-*eN4G)27Xxq%yde@c2p1M9$z8*@ z_~FaO-?iv3H&&YoDtjy)VtQ>m#kZGw*XNlRuw-B+ zd1u5S-5@SIJplXiFs*QIa43AGvUjYI5nyO{i|9GoMUWye`16-wGM>(bXO@~xrBDnw z*{HviH4_{YV#SqGpiw2_`e}EZqt4jY{jq24IwufaLP-mSL0+m3%Ap>80X(u>3o$E* zbw@Er00sdt*P5^(lM;GTIP0D>Ip~qlgWQ(AmSo9cX~9UOSssY|-Ifh`8E8({XN4b2 zE_A`Z_q5RwEv92>J{EaLC3w|I{$w%Dct`% zS@ibbvotAb&Vqp40Y-KR$O_e9a1C$J0GQjaB$5RTWWtKv4FKPKcLA7S3w)iFXK7|3 zTJd_xSH=95G%{eIVCi*PQrY~)sNXDMUVeW*C=~>0b?NBVD@tD{yuV)7fZGx#Yr_m| zL>c0ji0-huUPP@U2O#^^LEX0nTPMMwvXcx==lkun;BQbW{(f4u{HOR92WW%*r#$~V zUaV&M{h#He-~V}*CguN2nPLaB=}t?qCHoe4TNDBx34i64Fk>+TF++YsfuFazvW{{! z_+3Vtfmy+qNWL+!Yi|C@M8^~t=?e_od<})>yi7p6WF8EpCM>}ERApu5`qv)nLu|i4 zG+6)hWg-4IUG@7v&(bRGzw{93mN_d^!R|t;O*nC$SUZsWhia`G>7{Jg&)Mfeo z&Mchj^&dx3fOaV4Fi`dNp5*@TY5xAt>14KC_Ur#Snp*!+B-lH-{;4?ay5=_3Yug7K z^>f2DUw}8r&H@~L0T{eRj!vThdT2`mA5m}%DHe8$9qW=oDg8kbd0#A#^Fi#5{e}^x zL$}|!o^7JI_$ z%?cF#6w5(v(y1r`QfU?DV$~&P+JW(NdG_5w=|m;73?^eR9fRro5l15|IP}fsca6r9 zzT9pk8C&U*%;#V-UbPGamoJ#Ia4?IbjE${euKwBLB!kcfrWHnUk>S9gY{?sV^v82P zl~$?$A1D2@KL2x8IRCTi^FN=bNdfaMq8lX7^#sI&0gx5I)0=fdUp`WtqMvC~q0$1l zO-eOl?r`%pNbB^UhWvfH`{^STos;Ok@++Z;OFr2rJ8WESrM?{4dFr3-#OVF(>s`#a zq{y3FM3ubFVP$q_fiiuL?~{uPQ*5lB4qVyk&nptE*T2Uf>ihqpN&Ih`U;nH5w6Fj4 zEUnW2|6W$FKMx?@z0(Zxn6ZG{B6wCC7%2PbId_JBWATBi^)GBwcJ!l1LQY8#AbOS+ zG8YDXQ>jq5{#Wzd`H$&*yy*S^XK8Z%OT7e~^9=4V-b1hV%02=E1Da)5*a#i8 zu_aoqe|5iEo24&Xt^L2qo&T6l`|}^q)JoTXHqZH`ukY1sz3Syfc~$FO0dBd}gAC8= zRc=6Ux4;9qu3X;=14mcxRSgEoRfnakIDqR`i}(Sp!TQ%#=Q}F@Cg;DVdHp||&HDO( z&(e(bUp~)D0u-M$lmW?=1rD`uq&?%%M;{KsXPBd1*;Nn8>++fhj&|m4gKCu(ku1m) zvp)f&%vi`t5eL+Q95Ka+1i^Qax~w|aQ2}Awijd#AdM(3G(93BW7+oA>BscN=_4_b= z>)x8n|Bl9A6aR0Sum3%r&ind*&(ezWKX3e5Kev?nxn2Qk1c&f$v@38V!t6l$v`=2M1X}|yTEUjey z=U0B)HJ^9#aJZ>nnbmSY;$!Wyg!)S9{j?^J=yUidu|707^T>aC^eZP#LUo~|SA3g*o~0S<-#yPt9F#xraOS5f1Y9E%T*rZ2_CYz$^@c)|AaVul)@DQAJuF~f<|9@h z;I<@Oj$*E_hu9Q-`}MST^1qu8SRen(%l}zl|Kpijx%|)jfQ3gLq<$w~@B#Avk$l2( zh!6J*4Y(z~VR^5u{6o8gUY_@@thJQ?onioW^1pch$8_A+e}A6lkpHRVzZ5?z`P)I{ z=R*MzqMbqkdDK4ba6mH3s&GKFaT|vvYKE-d{KN;HaX~Q#Vru#nSXCUvx;((vd(X9b z{u^jb zBH$+0dPMy4Y`)y^%ivdvDeHAxQmHOKsN={OvP&&ST?R=PgA?A<{ss=fp;~n zbFZdt{Hv4zhKDt66no5-k5!-w5yuq1JIW~E$w@YO=Vf(lu@5wUx~+ly*X#7j@_#1d zNk0E?GG6uhf6vkk`ESg#(g2BoZdci<#PVw-y4@PWA-lVZ?q`mRmC5ZUXG=e0^tNcF zCUa6PuT$?+zi!EFMsGh!Q?zd%p%vvnfj*)~Kf)k*_|3nn)%ySQ{Q3XIeA=J?eU>I~ zcKR0L5TKCL`-tFB-TQ8o{0Q)xLVB-Ce~iF|P!B->)YWRT7LmMPD7crm7o~^t*N`C} zkmO!@a*KWB>#8Ev_s2^X9Kj&S^vKZ{;2RVo3OUjxNT94(76~Lm?>?zkVwP(vUP7fI ztCA!mv&K>ioT44X@}4Vo(|tpbFp7fv1m>?uu)5d37|`QLfSUC`n@tM$zm3Pe|Nksa zuKz3KkX4E2hZH1-TBJEM&Dd%#wfVE=dUtec*_OFt`XgqSw$f7jfx* z;vNjpsQ8sweBfsg3L7uvU~H~#UEtUwJ{k&>NQf=pACgd5d=&i@V_GQnmRMZS_esb` z;#>7;ncZ1}r~J zRDTMu@n#33y4i`~U5Mx?eP6(L%t{8GA&(;75VU%^5!_4}RSWS1w54j=6q-6~~ zkHn!9n_Ri8G{RiQLaI=?srJ^WjQ7#IGXPk@KWEU<+CgMglI=XhMIJl zz50+I8HXHQ$AJV?+o|<-Ww#cjYls7|pZJHb30GIzVjtx3+5Zze7`U)K$UA`6@!DY% zCZcQTxmc&_yKMx!e3p8H?LSRVoj8Q7TT%;06$b4-)SZTi-w}EfkpO%5Wmx};46RSJ zIqg4TBR`S@SY!W9my3Dc|69)b{J&>um4=&Ly73VTMLH$9RV#92s!ylKC8N{zFIQhX z)cotpVs*{I%O|9+E5ZeVvd8+4u<#|F+PeTA9APmIr;*e z#hh$XFF%YjA6%Nf$j{lrrIwEh2w*|6FxrfSH=pzMt!^U1xKM3B1t5Zq-4W_{>@I^e z!l6K$(5j9p@-cg8pAtx;?skx3=&v8zp$5~eOA>C#BXp_2H0sg|uy?a1F+&gSHG|Zs zV@3k{&@Kgxd}mK>;W+ib6tB+`|C!8JdHuf}_xT^s(f{VPN~zUZIU1 zD4D0}AseJ+@N0=6() z*fnSu1wwhpN;x}_OvpvetsenlhjDbnsu#JAB+!YZyUGyU_b1`>{18;G zL?UtplKGPBUF7+WZi-d4lD_C{9LpC?6Tdx<-Z=16ll<(i@_}j`qy43i|Z6#lfoJy@I zIjVi>OKzo5hOVF1;w@#{o$xiK4I!Q$62WbOB-0*S&A*k^LhDM^!&c{HY)*cL$(AGD=rEU5GFjCwPIMCL?`YN~|Ex`kMCbW!$ zOzhjt0qKQRG6hq@fLsfi{wnivDBp2`C3IU45xl<+7**18&-Krp%p}S&|hD)b*WmKV$pW3K?FGnK{DyDMA=F3IV^{=!b z%FAKLU=id?jbp)IWH54sb(tG!k6{>84|<)jdwI}0>dVM4^{GFEsBbDjGsV!Db`9mn zPs&=lJ6UjQ3YTj_iy4C3*>w*JSKj~ZY6K6Q#GYIupGTt4v49mEAw!L0}d5t&Jj zf3T>96s;t(;d_4(R4wq<>u9CS$PMwhx?%`VHuZQmPio2SxXc=H{IzV~e`MSM%2`+b z`?j?!NyCorU4I5?K@4ifXkJY1aIrLYT=rgnw^ani#-v-Cu)v+;i*hPb!Z%su?%;#FBql&8f|*xW5Y0bd>uY=HGIx9Nzllb{}#9 znQ|62f8G+j`vEWXSJFrQeC5wx$$@yns>hD7BLH%eh(U_GITM9LZ?^1Jkl+M@W}r>< z9R61Su=llIW}%{&J^c>HK#_dwXxMCvJ^l2&+aMj_k*)hpmDQ-24`9h-cz6c5u-x1L ze9|q{OqK2dB0J)mG+#9e5Eu#w-9Lf?AURS26CB?4-6CvR1-JF0*B4{qmx{Zo6M#=t ziNqKK84|}|tq{HOvoaIx05+>5Y=gH8kN{YT`U`9)WS{63_gN z-LoUzUPjZB`T0HAQ?ixFODqqrV%%IHAG6ODQhPOoYe%RvmX$KEVmHlWRl~e{FCwV{bg+J6 z&=P`WX0FQ!D8vgqLDN zf{0mjXviKxi|HpDjGZ20%RoRP8=$h4Ay{%j9Nwt%+5vhNzudaDib)GToDcC& zM^)&tBEL1SF;9vOWGA&bRqW5rKmOsp$tv`oJ)J5!omUm@vnMjjD6|NvTTNcpH?f)S zy^3|wa;_uiobCJ?txg71Pp_uj02Iq>M7}D-3jiN{bzq4FFC8#nG?to0it#&(+0%^75~{B_SVWnYy1+T@EGa$&S(0 zB;G3ZB#){U#X;f(Ng#ef)lx!Bwz19Ad+n2?+JkZKqv%vb8)DdI1nuhBIH3lPZuUCg z3GLKtd-77$KA!?MhX5~@sV#s&79%iDziJ5_jTwoqVxp90srw*K9pWTfV_dh+zd=zS z9d@Cb=C_G{)nfeFm(nMhZKsAApd<$J76>D9M1_<=xckJ3gZ*qjkwgP;5{Sj{yvy+~ zB{B35kjFKRivaG-V2*!w2@{n9Xq3QEi-`wFaIfMF^uD}CV8wj{Ax^6E$6rn~2gXvb z;(lflO#o;gUnDL97s%dr4kNCPfvAMHl&x?{oI;LAhkY2m1CXX(CW%YNe;+2T;hesP zv9AiBIZ8e2ANzov53*N66*&_qMuQ$R-;zi)lI>@SHOX74UWEz4XNit!G69}T_a^LtK4!?qvWzqf>K$)opzSgaJ0uYxl>fs0juYpY=JLmhJ^So7OM_P4pC7|5Vn9O5<`HtE&s>aO=`x z$A!0`m$;Pb33O^aAzhmmZ`8I7mUo57$%4q~pvnY)sDgj6ww$Koo~|g%yy)b8_&RLP zjv?5T+R(;2>5u3Znp0;pYwpa}m|h;{*q1&*O>ia4SBuNsk%ZV~?k$cejyyH~IYf+i zTxybOy2?DJAK{&hcl0WZUlrcNWzBgwGBGIZ=^*I*w-g7Bf}Fcu+Qmf0EH~$ch*(2? z*(tIU_sebF;c>Cd_fG9* zty3{Rl%}}VH?ZwAvGi$r{IMI?F8o)LH+%Cy+1PViN$1= zC5j_t{8Cf_hPxAKxue&kG*r;mVl&!;{&K7Dp(n}akXvx=d~~~d$C!+I4&&ljW9d&_ zh!!5ymmxrbz9ACr7epo>ZgEdRHZ(0B-V}mx;9$l@D6i2zO}OEfd9?DT>1de$b+!M* zDI~5i&|$JH>kApyF{CSnL(F2iCK;p`vjZZU4+qpUU~lbI6_Fb~3RUvTP!i!km4h2v zRZFb4BH6t31VFC9MBq6|O84dKFY znk|l`(TUqQ>%ChmdRZFKYdt5YKgvkKuVZ!QCQwM|j+~m1<`pO3ZoqcU>QO`HN$}3a zdl<%lARQwjEW+^CV-7<@Hj>4ji$UVPHfIZ=BY1H!V7X?6Eh2Qoe`#i3HFe#52(Cql z^i<{1YQj{jvU}5-P}zfmTZGt0u@=y3cX1y6Q1GGG_iMbIhMvMFqPG{wJU(+C&D8pL z^9?`XmZKK#v1DY)KoxkL|5;{xpOHruX#6e-m(0B;J*aT&4`QkShQA%DoFXL^sE}Mu zWi!2~@r(Yh&viORg-L?{lE8eSJS~P#D}zHwr8yQy~G}(F=fP22W(^K~=~u9WOmn z$@x9_7?iVV2e;T@}?;R9x$Th1@f^6 zwO1hHD1x&11HnNNJI4OPq=*;KhLKhw@G{khvfO9CUZQpm)Z&@ zbM#SL_E_%C+3o)z&~G%EV@0chmM3fDq)Zim724(gw`-Bv41EQ8q;`EPy&fih>PKOy z6+Y}i4kYF=89-D#`I@sV6n=MIPL=JvJTFt1wZpvpmAGc1v6ytIl@k-TKs?C%01duK zmvoBjQ=u;F?Ai>M>Z(bWhXMWKrb*Vn81rm&5P`cTDB2xT;!zmz#H}Tg%MgZCUwGo+ zR1$Cf#9fxBc=GXPV>Dfn#G_#Xhny~rh1Lg|Yz!DyMyklByl>yZ&#>EM{D zhCL+s(Z<)pqio#n4)nZ-#^o zNQd;X>w%dy^XYhAyq1Gp7T)&Q^?Fl-x_@!rZPnNi&{5Dq!&Im$dyH}$YucDAhJnWaf;DpThThtIgW_ZM>H-eja|h}NdAZ_K1b@SP zq16z!#pmLo1}Cg|=H^|E7g}j^V35Ml5PMutm$eI@lrW7Eg#!(P&IFIbEt+n)H}GcLd=aVPucXU zC_A|F2o+wFjK-+iX|u}eYjLW$fjQKFJhh?$UU7iWPf5w&r41M3QNjA3e}l0DV>kpj zx^oXl?R4N$9FjgpO7p~jXL2!!{3|i2}D(p3EftV((o3VxXDi}#EeC?6bxn6`>{16&!VPE zbKHKOQF5m^m}I*h^kg1C5)QM@A%TUHsvA)N0sg7ONx4Eq;?$4Ir(56(BuIJSF6*`_ zv(Nv?EgR(1%fMX}^E2DtoV&$21?zR(7|E)Oj&y&H=c013#8G?tC_5z9co<*2P2#i* z&TNhqU4|QI+r3??Sr`7Ht4o5>Lo7wOn0F_5JCXyPh4*%Zz0P_M3HpZ{Ymepd^QQz2YHOi8dC-PzOh@|k>#7D@L2IcB z%gU#d4UlDgR30`nMjQ0VsjHZ+3OjT-JoL`+Uc18Z?fUJ?_-B|M6_`MZ%w?rSX~bN} zgZD9Ch2lg?PL50^d~I^xIm;uDp*z>uGg)#dKlge6WxULVSe>O<8plZ{_~ z%5`(#{*rMXAKXnlHxF?(S7dH_X2R(>_M0y})g9rld9Hi=j7$0YAM9QB{u|H`UavW~ za0-lc_DvH1OnIU`lGOpxROFPd9dfzIVyStDMel2Y1LyrUSl+WPR1en4u-;=zn)~`N znXHu+v3(FIt{!29m$@IU=Y%cIcX?T_JY<+Z9cSY=DE`gF=S6u?#q-ys)azzVB?TjD;iFv)EYfT(9nVX3fd+3%C?v~@(43^*D;hAn) z^!Jd>DT8OOH>DVTrXWoXXuS3FBXC6i=BiTDb=cBipzX`qr2-0Ho#>8l@EyPiZ z=cfC;i==;>*h9tr+E~JV)IpkkSpLZR&@-$WEPK7TIfyW$P;QEr^ zNB%>)Xp2{NJqp z;){ExCN5=L#t&_sdOOeJkp*K#hVFl=vK#q2|DM(IIh-o%$|IB8ZqLBHm}my>kdn0Q z$9G7)La2>^sKPw5K+iMg@O1sSqB45~1_smdUjEcYftd7vmU~MAvJp?Mmp1$i_7~RH z+KT8Wu)UigCs)(!>zmfIj07u-%{5P{yoLR(wN#$4#hW0ygmF2Y38S5}o1OwL1-#Dv zt);ia`d+_C@-MfluX1#~J8H0mdSq<@HO-72+b24Qt$YcBt_5SB1Y@qze>bc@wdY2La|E9q^B0}t=kv^F~w~*84|#zHzh$ak<`0R zt7TlpDKXP&-7CtDDLpomWk-MLvD#}|DE1U2Y*kOgbiNQXv4WiIyW^@CoDJ=bitoEH z>~vO&*O!m{S-2l{u(26oBOR$=Gz|5y6%!W2-ccG3fCHfj4S`|xkgUAH740Ow(JLj@ zEHN>rxi8msSXAegHScoKp{-BG$fHv^gj1oX7dKFm-IehkeK{K>B@zei#HxQNGFP=# z)pf|vOGzw2rd7A}*;JsGOP~uC>0G$ct0vW~0zU2w&15{qr7wY-k^}(+f!Pd!rk6<+ z#(KV}P8?4>!b8T`=Q4Jq%SO(Pk%eV$(O6F=!t7{2QFVVTKR%~$>Sk{FF{b|-;A4$G zN*+pkQZYWS^4^IY**&Z3DWJeVb;LSjd+L1rG4XiO7=m3<9r^ZucnpkO*sjyP4mQw= zYpJv8v^DmN+%@(oik~yn!{rlBo6H7W`t9(M3K_FOr_*WI>=&8W!kzOL^Jcu18!mJSSW;F5C)iY-1DnX353roovL9uo=2Z=$&0*O?wfsVzgp5_@H@= z8(HFuWsA;voz2A-c`d~jowb!&SwA@Hf1?`L?e|M&NxRU(OU9;Pa1uG990ZF@E!(;C z8`9deZvM*s$NgiOs-V0jUDigUt#s1=c$LEhSl(a;Y__Ck_f+GRFKLeK;D^?ebJk1OK!JDhzwksqDx22 zmK}QKHGXi*rKICQqPHn4VHRn&9Ff&eEheKdBXI)*AVDP8xp6Kbfh%{}C~rsPoOr6P zKkt3#PsqEVUqcWQtwaOV)}W6dymawjt4sUH;`v;U6lQpi6(*P-;2l*2uH!QE_+qJ>CPcq@rH<~CLtff>_d{$WmpyP}xua0Fj7LkKGg7r$AFL?hDQ?v)yMR zCn*l*Vq>ZKqg~kbG|Vi?SS>~CWumeeJIT$AtXeXm-XkSlHeDC)cQ1zhZ{3e0Lub1r zL|l(rEyxy)+=zCZu|{%QV_y|FQ3EyS>t;DRTqrt#CNtN9jfu0F^t*>B-XBxy#x<_L z>h%2U*2meG53N6eU0Enw)=*nw%w!ksHA8phfd9l@w6Nmh@YZC%_vyjGWei(aHdJ^> zVRZ-&uTfAwVHNMB6<76DIaXkwq$+dWE7aR6tm3C}_)pEZGoO!RRQ@k@f8XKnizkY) z62E!k9Nc<6H%pv?`Xy{#P98$bmq@h(7LPaggV}&Bu9MX`#C`|AVl+R3%G8DoXUhtU zTvwaXa8=b1nYYJS-keR-jYC2_N>2{TBg&iKITJMpXy_X*IF=p_14nC7vYmT8*EYZ7 z?T6fRaq7Y1%FyFnhTJ!ooo1H%aV^7bIdG4T%}(|;4?aujbBdH5pxx_dQt4*cXD^9= zg-_);ElZwj5z-tjcE(NB;xICDFX+dvS;+yftheULz?@Xa#I?*W$3@Jb_8mv9mClzP zefkYlD>L7$CUhILNL%!UOa3)U9=Lviv`tLh^87Fe7tWOu!MluO?}9a1k|S~bJt0j8 zxI7%*%dgY3@m$uvs&}#ROw;VXo)V$Qx+>lJeu%RD@IF#GshK_ZOH)0m>ES8hinrV} zj{eC~+Sdauw~g2?thWPD%?1k4xft(QzfCfYabM0r>Q#cHj&hz~?!06)xc3$ADvl2l zfC<0~p12Gd0SNEFg-npf+xk>?xJy~38_(^QYVAra(l~A4$k2A6BTIG#IwR?kOv69j z+*kt&>bWo`r>bi?>tTO9I>j|kYw5Uiq-(VQYMxw|4%<6pNg7Dfb=dx09$vJ=YeG1p z?Cs}w)aa?9f0dVJe^cx7tT0hp6&JlhJ#BgY`<8(%Rzn}LB+VYX&LuplgstflS2zOR0gOm`U0a-GGmFo`j@0K z4(8!0pIBf4m6RIvs1MbC9z-s$pcm`5X;+^6GS9l)a#!k_s=C0<8$Nw^QRXgbSuQRS583I|(0-Li`mhxhEN08XKWuiSxiwp~J_@l}amtYUvwA*mEgH5ASM9%+&adSR06!L!Pq1-B`m zg#_phnlO=M{>k`ItUX3Yu4lF?W{B9Qci2#ay+&y6Y-`fp;DJ>4Jv&72&ox%jDe>EV ze7<*AQ}eTd(E_6fcV65DQ-FlAgHHfe%=#m8%9|aF{_JSW*(>tFgd1?@2O3)dmgN_N z6Y+?A0R56iwAoPlg{pUIiY9_{edSLOL5s{hU<-HF+iJEwkDYgc(A9-i-^gbH4n_(t z@&{%zzgl-I?0q@V5ZyXTXy6tJIx!f=CEm&l<`uK0HGy}0fM@iV+6=~oC;@MzXuJq@ z*8|LfQQRwmNKtb)h8Ip9T6vbnd+s*)sXYr&Yrz2q0V4i<{~gN_;7V>rgtQZfDD&3evQTpkikTCzkjm#+UxfeR>c4O90290EQWm?x*byROK#-@$1kDs7HVM5 zR}eYwx#daljtTaTlpl#|jAWv<<3#}loDF2qP`MGjfn9s)>~Am8>~>$D*Vhb<*UM@Q zozwSfOUKQ?$PcftV}jS`qxB2V-7UP^Wm%`Y_w%jw8cim{AS^7P`?BBnsi1j`&YjT1 z(GiC62#0^yKFO1e;8#BY!}P|2IvoZ&2m2$^yqY)#KqkT|$%{S8%=Pa1Hj?(buef-} zd7o2qXXbVM!L^CNX28V*vYN>%@DDGTF7(g|sGHF@SWk%b9KOpZdIf1gSQPNw-VlIo z|5NhQ*W>NFL9pjQ&F_&?gd}M9Mn$+y*_@<{_r5)p*{zWiAL(T_7^G(;hr#kstJovv zn-R?RI(>agXdnfy(o|r=`{g)%$&3?gHh#h=Yrw6RzuE-g%#S5&CY}3DkZ6vo_cJga zimVoLiRO3S<<{u#Tllh8G_)tpZnL_>z=-!FnEsS)uC$eL zIwUuT&!3VKau^f>2PJBjALm1oYG8`ce1v(i<@YfRa2{ms{KZ`r#^ep9ypWtQ;=V%m zD@JI2L%hRWo8lG3u_43+d$>NF&chPgtY=aPKA{tYF^N=vlRaK&sJ%r&=YQ8Y2U6@! z5P?me`Omr5~w0Wl(sN@S_}CIrcbXr3zCgEv$uQaj^@ z-PaeHCV7P>+oL$#P-T`G7obHE>&r+sfKhc1st<1P$2D6`uvIiLw#3*HZLJ{TM=(nhsRauiKbcyHx=hV$^)yJ+A>C z=3fXw2}=Pnhr%2cBAxJ%l?L)dl0FuL>qp}6ZC&pP2cd>)Y#OO|w)G8jkUanJ??zNa zsx@a2$5+Xe!tpGEiX%xWdn7uKgO%6=lOU*Je<uO@tmbAkg8&;1q1*@}w~x zq%}U7tXfd5Y!<43(BHw-u>GslmK(?WT(--SsM!t90JFg}vxZmwNCA?H%!zS?PK)YJFA#!J#0klhnkxc<{|#b%aZOZs%|g}4Cj4_M z+GaFFjH~?*5_R3U4Ke0=?=z)N1k<=MQ@OpSo&xFg-n-hcB0QlY=VrS>vXrxg!{k!p} zfvEOIox;mnJ#Ii3;)?_}>_wV0)0Y$MMJxUs*3S1E`{Jg{8-V0?| zFwRp0x2kFx9>E$t`sz+BtD>Fbm{#ST>k+ua;9lW3iX=W7{mDWb?war+hT_aX`3VKq z+4UHx#V-QYJ=hT&OQr!_)wPn8Kej=yY#^Yw;JKUx{>I_p&zJJcs*XL!8<&7hw%&J01c~`n>7wLtd zo7}1}tT!GA6X-F%_#9o>^Ssv)T(jpPR2U-mF+w9l={S+doM5d(R&T^P!SFF2Arqz4)QPu7otMZYPA;!(AceK z2N5lr_FX9HKN0+K1a1Dt6|3I=AZAH0Va&iYORk&#tA+=$EhWW)?MKB{6h=hiYOIE9 z<$}eE#N4kLlMNAo%TIsr0m&+0f*-MAWw;zKu(doFN47aL2G>SP1dV@^m!H&+|3M_CBRkPi=kb$DBF_#Qvj68B*;N z%QiPz1NPUGPlVcozsO3*F|xvGLJa8ZJ1lMl&=v~_qJwQqiQ^d^{gu>7GLK;$5Fa+Z ztP@t|4wlbxw2?9tcr<$9E@b9j(BMb$JH@0b%eaeG47^s8xbjbD5MGn)CL4{4qxw6& z{>zEIavzo0MM`@bXde+lo1`-OvqfIWqq&#FV+NRYX&?VOA~7R0+C*?^3DjR<->%Z8 z!V~3hF+lSi$&H*CsWn8(9E1t6tETPc{>Y@t&aa$Uy5(D;6?5LnHG%;=o{rmw_EWS6 zs*LRti#sCzGe#Jfj-h%H99by#kT{|n_4KAx3{2)1v8};Liz7#POPiCJ0lA>K5k+0^ zp~n6AY#_w1$Bs;(lkb9Zw!zL|^~M7-sbH0HcP3h{5eQ`mSEmSDinl0_Yy5XeX;n!2Sb1HlbY?@Km z>cpiG!~Rx%#ydnD?19eDK;kI7wyCsLelmzZsj+wT&oU%^&=(a8h7JylX*kNW^)Brl zA`%2Tsz-WMQ{=-Kx%4Nt?b@3JmV^6G%f-rWjxG8eN7&MWvt$22kvo^Hd*P|8VYC;O z9{Qxjrxwcy9<#!GhsQK-pBEr49Y?MeM&-BYKKL}qy78>+JxcX7KN5}Px3+%aYeb!Z zX%XTS?|8B!JP|FEa9JP{w@0`!K1>qzc_fOYTZHKAI9D3m8Z*(qZ91?i7U@07G*UO( z-ckNU`|Yg$;S2U3EW$!3q`v~c?(yVnR&00g?yF}?_vxE-06OEf3SFA$iRBu;G>MAz z9sknnn|i9F^(q*>Nqd`h>^sd;J8fUpn@c7xSMG zz?jNic*k5kbI79&vxrj7qIG-qReC}m4ZL1v8QCe{)oYkOI>zQ`6eE@M)dH$8Czt#C z&mSf~dhP`pJ{RZc6ywJ~Y0;+k+Sn;&{E&H9rTRVGFkSe7sz2;VZr;tZ`&cuZ*;>Zs zwo!q{!zGcj>z>t8(HL}c3h5XxXSetc(ad~V+eop*i+I7zFw;?=xv)y{w<^7+Ski`3 zqyTYxEwxBbK_sW&ook`wUvEdyha*Q-kY!?t`H^5@R$b1{b!dPTXf(%xD0FfVU51eOR3`zOqOd?Z4H@ zpI`ZLHcwOB!Ke3#-!Qq_V7k%Aq98bAgp6?rhq~>Wj(6e3?Y`gt5Y^eeo8M(5wkMN+ z+Ccf0_dyGeL~c(Zpf|muXgXy6WUbL~SaGUM&z;YqE%>`AF89`R(jAJt``P*Fts&n&|j%@;8CN0=RueE)hx^&4%2#(IFR@* z;V8^O2F$cy@}yUGPf@X&Vu!vpY(`Gfo9c7Go`jf z?L9-fB#G)>`tS3dp@F6rLqU_JIU^&%SN_jZV?-AXTQ5dK4OL!C3)NpS9eMhz6>1jTq++Bfza%JpUODs^Or zR78_^oZt069}Tsg9S~DH3Yq11R2+CC*NWK*dblDDu?u`pGn>g)4FtT?*7Gi^FmyGh z&}1a;-xRU%ok0QC^;;z6a@g+(5jh}P%&819)7Q8mKd_CVAOyGmfK+`tU{fm84E%Hq z{Fwn{0{%%oD#6#C9@vH2LPmOUsbU!(6z5VRxe7**vFAdAdNCp{K+ImK;~>UoXJ+&YM+&wY&Gtr%`P$4mHF7UH27B!`hLqI7j5*{-Vn^~J(ft?J9`n- z@5Wx$Z4a1m1caq5rv1QKR%##|9G>H}bX9`+1@JT_jLR7;3?yrQO!hWxeoQ{qy`-66 z_#bU+UjL_1(7B;|>2tZE+W@u`-8@O&r{OvGj|`WORXy;liM&YvyhI{5v9N`ScEAVYw<@$<}}i_9I!3qU_wg?316{!~K;yui=H&;qOvvVxOiHk`p~ zMN7N#GF=0Q^BkS5MMA!Mq(lQwo}ts_O)vshRn_}y*Nh7%;le5(|6!1%Kpqcuj89)_ zJ6mp=Il=F!JKF6>1ABIdPt)n-y|2<}r3Z4$rvBnPiz@F$@sy6F3OUv?k~2tW*4FqP z5&pnW?)xt{N6< zWL-5THRP3r3yF6JM|ypKE%g@GvX`(wMCK>YK}D7+fI=>h7;PPJJ6q*reVnhDVOelH zme9)*5kI4HvY5mdOVK>C)?L>A>QzGIW}_iahYI5H+%Tmn;bFrhOI1Y;)TAWAhYOE% z%Zr}Xu?iNDUbMK6TIR?HGj?k#HoGpHtX6kUZU33E?t!O(USrn#YXvQHL&pK3-Tkp- zqgeG7piiHqGf=y>ch+vX=+j@mXdu6_746~6KJ#L! zb3Nl0EyIatKJ}G(?aRV&av}X}ly3w$ns_$Az3Hy}N*x6~3HN1;8+zG_>%i38+F!o* zrLS{EEuchhQb#I&R<`~1b4GCbSq67^o&M$TEL|<6ZjPtcCZ2Vlt46x(YogzuZFE_k zo2cd1ZS)$)UaA#elm96w>RyIj{`VK)o3F(n*)i?XqSs{MFho`WTf>d4k>0s7ZcaO8 zS2M0t6Q+Ibvus|w9DJ2NzoJCZhGHiV=^BI3UNK={o7K5uH;0#c?W<{CSH*CwQ#ix6 zGHrkCL%L*MbHtgAN1p|iWfMl!vmucRu+OG}=+W zA9Q@~gfL!N&Ai4gRsXV#I1(EWn{4}2J!r~EX;Z`^t%qh z|28;tPZwh|hH!}rDe;FU(w9aIrcN7;EFG2xNZX%mds-}w0gTD|20bm+&c7VC{%;~L za!*I_ANOGd;c)NwVTeNt{?bre@5u=M(&5KKz~eI6r7Y_s1rG4Et&VBpZ-yB&%70t3 zTMfmf!~6V<4f`6I4A&~3{%`K`HSByz({1~oX-(vR=Qs22r@s4x-t7z~dTal;KYe~h zHo!yafBOcWHLn0I42D)ag4fl?S{zcM%I%fLTA<21F^0NBf1`XLFGY+;F~bn(26QNp zbbqkcf@G(0*{P2=CO1n*4YdOeLH}Sq>fmrRgyex)$HEXkM8f?^hO$?%STCn6&FYv6 z<}>C_rz{_j*xv7PmVtHU2OmR$lE1*3{~Lnm1w77wZ|bE=2ab#j{-*yeY8-m0G#-3z zqJ97e%~O76_tXD8+v5Mw92-+9XY^&-eQmSmP`g(UCtf_QW+C)C==qEO?9keWQH+hA@^oPhiLIU&W zL6{V>0~(}!g`TY-m5h@y3MBFqE=6$;;%> zC_yXodm4RKFiRP1>w`telwwt8Dcfnp1)f|GL%Iv0V@5`Zz4Ot=vu*)S2~c^Fhw z_sSMR&t%rQ%Ht&Fv~}|$QBs2(Doth>DXE9}lcY(1NR$+5pTk3)Nm-WErQ`0iawk9M z1S^mpNxJ$Z2m$bs+CUz4*P03|xx!^ZO5oRsc{O{KDIEgtiA!H<133Qsnyl%i&2PA5 z;)QyF=(1X-HvZC;2D6{wD2uSIRdK$VS{7+Rs!RmGR>e-7N<^J#!c3oI+!74X(`NLu zh&RS(YoY+USAp)!#&U zUs4{n__XBe9TTORU_Z1d7SZ4D6{EIAqjt>b{$&5+MC2r@uHnWjx?G5Za-G{fQe;7p z*bP&ea#zjnsRzX%HTUGY<(KlODNQ4;3LTH!XG$BOtL+hsHP0=EI|znRiSOkKS~i9T zCPoO=AWU~;_r&QoBuNMjh{^7IW13k{)qz*0e@LsTiu0uIzkPN;GM)K2B?@0=B$=U*lUS-z6I4y{}P>p%KM3T^flRWJ6l4O8F77s|rK? zFVek6a}!+C!oISIXIcp_W{Tm69%d-&b|Ll68s|1WS;POhc^UppncBN%Zq8+1I(uV%KOt3>SnNkE!TWb3+O_l5Z?Xi1&dA{Aj^B zh)*~L04=dCaU>Y$^=fvRuNOH&lABOHxv$z-=2T^!;OeEhTmVJs@dR~TvJzZm)om?O zser|%Kxns&w{Gy9?QdCRR_PFeWtve9E{=`N`kh3=$tLxwPYYj1u1(VDx7E~3a=L2;6vlrlIGA`SpDq_W-mBBQR( z3}_wR$$U;C#0tf9&IV#%Ne3nIbr7ZL4s%_pB*D=92y8so9$1nDnse<|%lR?Wc_=2> ztAC?zp4{B~1q)+It#$M3t6V~IBSE5nQV_yKt&hm-lLMr$aTC#vWF))HZ-nIPt`TMq1uiwF{}{w5%SaTyj{qZE|%x*FIzwq z^|8e(F5do@;Skzgg?;^MMNah(X4A8`TY-)9@?G#CuO(AMdCZY-=kv}GuZK^I=?&2| z7M#tDY*)uv<}-V~PoMZUaKpAJLmQf#Oe`Ik_}Ihc1AYzDn>3pm54o(QE{lP05^oIB zgOR3&5A79Uj+m_`u@bb@eCQ8#AxQ!OMvekV673TH*Ka{c@%|!1e&OoHk-k3u?(Xr)sxLPTc`#@h0YTArKLVW5i zFB%cPvx}QN7|}fKaviI8QLP}k9te>kUCW9X7B$!9Uz4lzFPz(CywyJ|zzF5(zaCZ#NAfDj92$I;VRbtT9V4V=a@Zmph*3=x~opB^uC?7`7HbP5YDaw;d6yFk(G^7}kgyKgS zH&##^e8eX8tDXAo9*u834si^w+-1KRzH;(rkR;QgqU_v>vk>^{! z%V-W$i|5tNr<65YR5SXTx$m@A+ySRbN#4U^q9dK|v&|qMyXR1mPn&0@LHdxRK+zX0 zj*G^if^--I9eK51D%L4qlwUU*k+?aJSe83|6vB8Z9P6bO0bc#8qt; zmk<=5Hg80}>NB!Ta$Cgw1ks2rSbI)tcbF_EZZLJ5VjIXC^GgEy@t21s(tQyd z=%lsLkWh%E$w6TUmoJr|otB(c-*_$DjkP=Js1ABDt`qqxCV_5J1E4=wTIN;qIX$~m zI*LtgzHLa}hyLXh2`bN(qM6}d{*rhzM#Mz_o-{6{9F zax>~x4V@g#H6D*2D?c86a z3_0-nt3qKK(clq9{pl5c4M_sb`N|^OdJv%E968+8+SHS^u-?bayz%;KOsEtFc`8YT zq7aAPYVn>{5R9ogm=mTz5Svy$_fpOsNVH)N1`%%cOaiP{i5Z>v&A08XG(p@s$9oSB z_;ULdbAh7LyM{a!hBJl?h)OCu7vb~DHz_xC7TAJF)i+FvbG7^=Sr%g?Ky|rd*{|ZdL|YM0liq$n0w8kd;xXz4a7T2LR;Fb}NrGXT!8I%w{WMri31)H7{@_$J zURUmkk8{QG>pz5;?VN#sPL@y)RQ_xOQn>mZ1_TUodd;t=7{YPIxM6K)_=sGn(YLkq z)JuCfTh^{Qfd~QAtr#Py+1POT9U+QW`4Pu=!8)5VkEh83FnvRhL97Rn8YnIOG zpqmC5?dSe_88QZIo~-XocfTL*F>ks5?)Ee!>i4XW;lM`R77x|1D@$+qe_VZIkmyXb z?VPb~p0Q`n*tTukwr$(CZQHhO+cS6WSM{oHy&tJ`y1TMdNhhi9wf0)T#JmEIDKubt zMZ{!%(oSW!@^&F=N`>?if<*)%h5=mYrezv`9DckS-{xXm;+l~QrefAX%W`EHbg1+? zo6q3ST7uW$5x*8RV6m zAavF^siNVd)Q+qw{w@R#k54CaE455(U;K+DFt74rW^4#Alndgv4R;22?blhGk(YIH zt3z-_Vvo2XhAHNzgYAR$Nc<;gQ)fGUU4U6|X&}i&%x8g`yyMw_Sz*m?nNdu{Bfcme z5XThbRRGs-?cdiHAC9xXo0oTIKYI?hQbEEb^i|rcFj(n8#xv{;=7K6AsqPnQ{%DTl z?|>dY^s}v*e{%ta(6jTU^Zeb#5xp^v7W^|)(yL#u9dGBNP|x5-%AWSBC#rs2CwLdy z=y_bnMbHkp6;+E_iY!~We(-iZ)4$ET)lS2kka*M@+oT^?xgK;e-2L5*Ouy&;1g>0q zUJ`=aq~p~(*GCH7*qZO2-FGnm;CnVDKs6Z_Y1%K{&PO*!L$8D=Mfh;1n|6Mv2bhEt zC5c#$=fNrZXb>~H{_JV=Y@q?NZcAr^DtO5Y#jC_l<^D)&sap|FFYF|zh>I~1nOVMjcpEEmji$gVNp zI>n7=sm5YCOn!Pb<1~g1H0kRSIw3{M01`YN-A|MHfD;RC{EWDnes*%5K<(zds80Y; zzE?@=4g2152mCy2nu|3OuKsH(q9)6MB>+kZ8*Ka-LYtI!qglmu6izmPM5YdNn_}+=@)JVz>3eky z;~5liwu4tlJk{tKQ)!5(;`O5a5y1E|I`CBXOyfPk4ASc^w;lwMMympVnNn2-)(Ps! zte0+SC|%pi@7Do&nm+Ub3Lb=<`#{C@()*g%D=+9xCm4e$guKYGGq1=kRK}Sf255fk zT7J`O00_6QbSFPUjty&%ejL+*%~$vyH;w0Q$>~Ymg$cLQyZ7+-c(7bYw3wRDx$05< zsk^F_z~MMifO5v2$nB^6aLuAwI;#ICf&ztQ{dxZ_YK8sP%%LaTsrSMRtf_?yq1hMp zPTa_;E`bRJlcJk-33d_+-BPFztt9vw2yJyA6)F(~#i&d5#T#w3hVhpw49|m_x5w9=4bohLuUbwdGvJcWNY;pH&1jxPgEc&Ir(O4?UcWk#JdkC zeOq5>!?8&Y1=rC}*}bG=L3 zAj6puZTZr5CRCT1FL3+$>Vn#NWn>KR&zC8gYU9WQD>`8~T_1-I0CRJz31;w%#RB^p7bKsdD*a(<`d4)hsAcK(eU^*sq0XMo$c@9P-L`=+bi467LU5jHHorS!>;N`NYeuoAWS;AK-_hIC zh5-G|lLqhdEU408MoUvrYu$<6ua5+Gp^(_8JkDhv^cWG6D3N@6^#a5k21>YoS=NIq zzqXc^}%{PxbyjQpkly9s^5+Wa!f6vM!DbiHP3jr1Ik`SsYEcum4i z&)4(*`{&czfMQA3FknvP@ z+i}3KPeFNKLrpaexK3i21;c$YS=MoXG9n=#O#VIUNQ*Bw$s9!je|xUS?IKSU{cPjsCio;1dI8q5%8hU-X-(6zlC4$J~ z`8mPu=6uU+OW{p~u zIbs`R<=T%VMWqI0stBV%uLOX*Rn0u`oDEs$ty%>FZjLb_Xr2A8qh`u_Bo)*bBmP99 z&PYlZ@S3Na$FRFp@WmuO*_T+Ds-HkX2owGs zY@H|D1gjEb4k)%i>ctL8uufJO5ksK7>A5CdWLa%(WLmUu)kc;?@N05%gXU{f>X=@&0jiOh{@zUqzE} zI_qguf2AXboC%j5dI|1eRdrC}3DShqu^WIzR$d-aZ)|n~NEkXevx_!AhtZB|D6a}v z>uBwP(t|A(NlE^d>xm#EF;$bK-578#vfm{$rrx?;9Z9mXbR8x!I%Ljiko?zx*2*~_ zb}s<1m5uk0E)l#;2>DS;&gs1C%4vl@y~45CNm$xE1jQ{k%gV6B+N)#p``Gdkm$7js zqq|*+h;-yi#8p>qme48lbRmM$A;)=hM#EyipPf>hI=vSKp`oa zh{Fbl^W*OoGC4E6l59S0a&K;-3m zTem>g5{O0(1&z~hc@zOQ2D;rRTix;z1^{wtYJ)JCuB=`XnAkHBPB0`pu775n+>{T4 zyQ6oWDXO^efco4Z*j7wz(C%a>^ZXq-DaYhlBF=wtgs!z(O@eY1`g`20t;&-$tq$MT zEc;q(!n_ve_n-Ams9Sh8dRKq|!+&ogT`_EVe;LKYmcN6GLt(_KNFA^Ap|h zAtRw^oE!g;)rcUngV9m&vF0?(uR?m|vzx=+RfP%*gMBdN8h?EazgA9KlV8wo!9H79 zNm*D2GJkrKQ@oP`@g~6zdC4O60!(69HwZC#TkI}K*@pOAdWr^7FvW?{~gu z-36r(of6S9c=D@AMBELrDiNo^&QI#?22c<3g3|*o7KyI>Y8DxI)W>>UFETe zxjG?TppmN3p8j$qUW3p1a89^5qTSl^MRDpK`XWj(e7dlM=Zc3GKLnN~3SZ8a?m!R* zwT!8AHH&*f&tud4saHBQh&?7m{&V+7_mKj4Uj=fo0bLYe=Z+fuUXYkCJD+ScAqm7y zR}X%tYhMm~u!U2!SC|Zd762KyA6j58$B_iTt=u=1hsRyu+Q=D-BCAOkX4(z`*0P{C z{2G}iFtCO#-4I6v$5@QnqO0(EyEZ&9ZMtWL*>O9~xajuWtVt2PRl-;!DZ7k}w3!|m z4y52wReCgCZVrGV1nd&N9s27@Ic-!Nz?LFu{~>S+d(gY4tBtN~d)eP-)D1lr!7vH+ z$Rr$*COEo>JX#SN(g;{Z?h}Fx=1xOU0#MSIHaPpK(rI7gYEb2|e1#DrzF)pvrRb_i zva!(w-XfxuRvQ}!zkrjT7Te4%aLxg!uS1nZriP@{cF@z$-=S%O8CFKBbC4kx9){3w zo;3I=9S<~8NPDe6J9C~k<;jd*&1K902av$S7WINqv;tRsKY&s2hH_Sf!LwHRbPWs7 z%2pH!dl9hfHDbegr~8U}Vz&JRD_m=UHc&5^KIQ|2)@`I7T53IZ^JKF@Xhw8$Nf&{p z#!W}OO)`5K;~9~Aj$;?e_L?i3qcWcToUL(ruSvvh&$V_Y;H3@+>1{{FhDJ7rN>a{y z?i+uAqyXexX8=%W^gcN&j3ZmD&e+dgOo0H5j&LexlHP9#mFRB0{X?fi!5kW+i*2{ zy=JxcM6#SVJMl}$>kb`yE9r>`kF#Q+=xZYVJ20jX#;WUGs$pB)cHr&qqJ$f|e(5C!I^c&AQF13xX-AvQtIZO9R zZyG9Yi|mGN`KBGO^`-?**E`G&6VDm;CzU`dHgz%7=xAT3C0})S>f$cy-bO^ z7(+m4ST>GMaj=Q$%hrtRUhlfTKTpSAJfdP4-+1tM8RQFGGm-8O*h?zOYPc($3Wn@c zBqBM%PC4fhJRcS{OO2x90r9<`#N0>TW7EOpG8sS&dp8(xHDHCWj^;zZT*6kti7 z?@5KGcz`050VM$fApc)NMGe(T3^oxZx}|Zv;|hRxeoty-qT=F1Yg3E<cvtH)WUABJ5#*5EKa$PUX{zBFMZQ2*fmQpvc;-!N1TN!*$TgcDR8$eI9~thUq%5g2WA)iQ1;7GEb2B4k5=gpO6~^WbaOPc zpJ=l@fDI>o1>L?eW=^U~z)WR+Ym66{#(BfA$nM--+TrPm{ zv}GTzVaK{57|iA8A9ad%d-2)g{+Vgp@l~dH*tK-H(}Q0zyO=&e zvAu1P($*?IAfu;0=jVC9CY|PIS$)7aJay1>EKxaiZGdrNS<|-2&Cst{K^VU;b&yKx z&=^Km4`%--MtyGP=W2%bJA80^j>yDH=W=bD_nKZNUgF;?oaD%Nn_Fg~TRiItrW>Jd zuyu5TN4p#glD$LUwQ4X;!NX9{VoIpv@;R$HAicfTgoXwDUsA=?5ts@vq8{bTRbCRs z$_jS>HQ64p^l*ksAb^qUruMB5?SSOI6D5sL zG`Q^{T~fLDcBBDht9Wr5dbSi1It)@9bY$iOjxkGgs!$ZNCe(HpMcCzD8a_osX*OV> zS2}2{<*H*xEv^_QyS zxM=b@3uJKyMSIU84`{ zZVkW(CXIT;25W#Q6_iYkw)BgG3zxed@7i^+w@uAQTy=5bcx`x04IM~6SX{iI0Esjj z@KQg>8zL8D=qy+^Fo`T?qT1WAcJpto515ZK{gvpO1}6>XozHR0`zi|;s}>~X$wX36kBGr0xZ{f zKg@acQ?Bnif=iDjTJ5n}J%)sapub2se}^W58Iw){g;MuEA=HrYp4xtN00f9LlhGp_rp7dqMPpqnZW&%&h1ANLquypiMvJMjG^eQ~lGRV!|d3O2`xMyITKqKZ_4C6 zro3Mb+3BT0WlLIZu5_06VmWU{cN%dEfzBkuY}|W8KH$4E8~nxA`~am2!W2fiW^Kzx zLGv$EF$OzuKU4NRUg{kW56jU!%L{Ay$86U7Y%Ryy6s&m`01hr*0RQhQpz%5>Hn4`P zZ0Lxqrq}h}Z0z~yXRf{{{aMJvX;&Y5zrlDdJ`49U`@w@|$YKudHXW&(R8yO87feeT%~}M^;KRMD%x%Kz!u;Taq{$La3K!^w1e*3MazXq9Ju@%&dmz6 z!ax0zDMk7k7|&*&EGZ$%NE z)1%y~BJZsnD$+pMr>=Mb*sD)xyzTo1!8nUdN#ar~?ZRd)H+*Gr)00SE$I;h!)H^lD zI7hPW?GH_g>7O{*10zllJQGO8qkR2BC4#=B@x|mwN#+NuFzBF$04*^`gdvcrAXMyy_F217Lw#JRT}fwt5VBehH)>R>!7 zhcYv@PGe#c{}S>fa0&h~M;h;D4_ix(X3}P@42^bsW|69Xv@M`^?fPeYpp=w8)#<^% z;|Iqu6>gVcNDxKska}j%aclS_wb&J*NOH~oO$H@52L76-yO;Vk<5ltfu7e4YV32Tk*;e*AkCGBP?$DH5_+RXMgrI-!D)mm z$eq~;|HAA9c`*hpLjH;E`@;* zJt(N6#fR+i`wD$hn5K25TUUbVO*E+Nmd~C2@aBo7)ipQCUo;T+h6TLwp!Ita}aEIPA?to=x6Etl-_aWL|a$ zF3E*J;YjRFLrJsrvkZZs+s^E?EJTSK11${~Ei0`WM`0$7X5rzDq^Y2Bh2*Wf=F5Wj zb$0V#_4lSCa8*fI>v99DN=h|_xP@kpz1`w_`QH9#>C42&&pH#Qt3+s5{Yx%&-IFJ* z+z*@F?TwPKed`X9<=_m5Bkk_yh~*o_+c*a|^d zl6FNjrL+^6j$DaYW<1AsWzV*HRaefl#0=1PedYxG!+mYP`GQvN0l}FEp{HI3{Za+$ zD?eKE{#l~6)wc_T%K9oj{h^lqX!1rOLhSX@2q&MUt$RGjSooI;iT? z1RxbfpnqE83|FuVD^iNxxvhu`I}&wl0sQ9qXVip@-39y_$MsBdUde=VX#rJs zD$=bB38>KL=r6H_Vg8GTS!04tm6&KCJS`4%7=W?@FenjZ0rU}2)x@sI1my&nDyVZ$ zOy^D@qHzGmC38ci!xMn|)Nk!z`I90*^aq{Tw)h*(er2L(bEG*6OR&vVp+1AxDzY&NSJE{mCN+TIj4%Kmli@x@uU0(x&YQ?}r*- z|4si1?e-o}zM+m}dAWVE$Z?PdPGLTNuke#LjW&P26Oi({#6BAPHQsK>DGAZR z#ZD!BJum^|ncT(m;rzV6HF+5@2?+rM+wpmLKYBV^i}}1gxe@B_9?J3Ne$CGMIu$#- zy`88&&~g~E&nuzN_?3zqV0+Q&!(7#w#zM7e5BC3zrEZXRm>P%KYC;Y*#KMl*?LqtK z&*x}MWmA%j^0-Rbvaq?LV06h4(6YL2j?OleGR6qFRg_A@ck7g1%TJfxPQ@D-{Z%+EHiOqE?lO+JZenK9_TAE; z_Li>XsWb$wF|4Oj`6$+$PAEaEzN8tPMdYU5aoYm^_)+%`TRTtx1$?5LHW#{vp?bug z{IU;W^0#0DUp0A|)$F7EqfX=KG6iG4<21c$A<$U}e#vBmd%gF#tbM#aC_oVclB6qoEHA}woi?W$)Was}_E!b1B8nrJt11AVO5nTrvPa6R!5 zM@2JSTi0&DMR15eTsUS>J(oHcG27S$3U-NWBm*KgfcKz*jXM$C`R18e`LJP`_Cc=T z^U=v+ZXWETC=KhbZgp2M6E$MPgq@cGUQK`KE?5hX1qAaAKm-DZ*?ma_akJK%F>rs6 zn&TmvI@VewAMXw}shHd+ZLE_pVz8-Q^tDS-4B|UPUNywxkoP>RuGJ9wt(RjUNIW&FIT^&5WtHyme z_IDbK7z!uQbOGQhse4~p&1)2mSKu?ice0T-+UzqOcOUqL6>XB;5B>7l#)7^|IqjB$ ze$wjRIADW20H;WOJ*kbhy8=Y2w6jDmMxg-xP`>%9`^3DHif$E*h(Cl3HL>{=#y&Wt zOR-qpJ8dSxpN6CYgxugg;_nDIwSOBA^v64FG76D%F|kow|2eL^;SEPwhg_9OMQQk; z8Y7xG%Qq%q2(>X}Tgsxqachr=20FF_W0{^9y~lb8w>6!QjNhc10U=Xq4F1+EgU z`AHrbP0k+^#3rRE)V9#s%s!_$NQZS~JF>#tr!5_~M*0J=TfxaAfFGH<+1@z>goakQ z4ur$YS-A_QN)PFR4UhC8NT3|XUjgmH=RTmCjg816=LX#5p&83HCp5Gmxnw34t)Kf8 zcohqH=-o%w765H7+od%zx`^TTFEI?lcWuOO=6Ph4^g&O##L`R#ubI@+>XqfwcaYf| zWzMoH7E7mDY81~^>s@eKeg@WzmxUAXGANql^gR&c!=wOCy7*}>hWL1Mo@p1eWiic_d_yZx@qGgqg=ihg;?QjE7YB_4Rhtol`E*|da$?IBerT^j&Ty{B}J!`a5~u^tF1fBv}SRLL8k;*fQb(?#?QFY?gMlFDlp(2LRaq z^*4SfudK~_nDQ&d#6LsFdwk)cRW*=_ast3-usGB{$XGJi8N-cf+p0p~Cvdr8MoAcTFh?HNURFkl3bq0xd3b& za0h&RXiAO-EuQp)`31)|z{NU3AG3@t1})xZh~x}fcYYdINaZzorx6m(;=#Vnss7ux zK{9B7UCXygWblUHmYju}li>RQ7#l7N|ce(OY|{e2H}JoSk*9|Yj;`{3wjTnA4R;7jp) z?0Sjc%1iu1EjqwIw;6i8Yz$Ivqcs*5GpB!;RZuL~fAGnV)^;JdNWvqG`ps?BIRu^v zgS!z}f6^W}(*MypKIK`C$<{M+S%_mI+4sal+6bK}VCA;COfY*SR55hB&^(g_jTAcT zZ)tJ!qGO|b+#YXV=T8`j6?LdxR`wke<%u_`FgsLLLo@AIsEhoGt-PP~Rfdi;U@ic) zl8-TU3zr0YC+OvbMVfb~HrTWhHe36v%GS1b{$h$+4NnIz4 zqTwxwvqS9=$4R$EAa>il5kVD2X6(wdq>6!nT;)H4vc6#zc~$QFDekGZDK>SCa2t$$ z*|ga5G=-HPM*a!Qim*W$@P_HL`QTT>sz(<#Y2E#uhclI#J!UzAHYB{saPO6=9Dh8$ zuBHvR`K@yryUYzPA7a>=tZD4sZ$Zp4U;d(o%8FESXH~DLeXZAffHUaluppJuQ@kN% z>3S~(`NukPN~N>~9S&%U7+EumO1Lh*9ri9Wl%1HmbCv`~FVBs^qTd5b0Cc8s<&>!HfA zv(Ceu7I{#tmZ&#W%nfZ%lhrwWbpn58~BB26kK#74aj#W&02WQq|V2eSglL&W4PDrdfX zt?S~i|E=;pgr;Qg7+q+DX=a!O;|8M(P3tk^9#7jL)=0kq6o=4%IKE2}vK5S84@b=@ zuxVPJV*Ace;J@F@JT$4!`v_zSRE43G{0IKph12aFac|orWV_WSv+OUY?V>@Puc%L_ z?6jXu)w8evAHug(KBc+NRXy9lk#dz&uPV|(@{FgjFHpSa&c8w9)MLR3JjzEm=$kQa z(%!D0f>~crZ&=`~Z<6tpqyBdLI)`M5WmANoM(g0cr^!#X((Qt84)F@IWv7*U#y@gR z#mzHb%w1LHfHD~>@uN0)QegOM@@mR>ZQ*LkMsd7Cpht_813Pz*l2$xebf;xMooUm? zD2C(Nxc$z^4?pqPxTx+*qtx(hbiS1_#|EcXcZSmAlW8&Qpi0#RxjDdXv&SB{lCrn& z%;*Je8jL~ma)%?d5>)ur-xjH{^B-9Frq>cm-^II+{Rg({}h`Qlg}_+u@W{R;;o_F=!yIjpr)GF4FjimfxXK z>S*@(BnX*UAFP<0u+JBptZDWGD^~j8Up}`<8Jb*u zpK3Oa^cjjQtS&Ys?CkE6ZKQ<@RM4l6grWiue`WqXJ?h9Vq@;C572}I#mzNe=g^2M` zIT4;s37-ZzQsiV&;6zd6E@WKFF*Dwli4fXvjCaZ|rP=}T7{Ckrkd&xms?pp1#lpr; zPycItf>H%fMio##D{hB>)NQX2xIo7+*o|GbGwL!TgV z+ZK8Rw=8u(uuTrc#r3T><9W_-OV(|?7VkB{{PPEo%-bsncYMmnk%MfiLHM+NyYP}{ znUUK2F1;9}Z(RBFdxUA>@%pXuRf}>h!-tGq`?FRh+Do4X{kHqNR>Zu^<8A==apr3q z=6DFsuosHZiW;?f>fCOGv>a6=W;96iHE(u?~U2v)Mwok zR>+D-@$4cJ5~Q%kttGC@`M6n!(tssVcoZ^YW0N7T_{=|?O)yP!z^%!d-gdq3Z&lQ! zu-**DXv>zM7V)d00ZmA$A-pb5v=Q_FX?Z>hmtujf}E z9G@bGG(u9!mAW)8Glo%H0Ih_&VmxiSy2T2#!-$!mAD{0Rt&@H=b)9@wv*Aky>Wvzv z1yJK)p+UukwR+cLlOMHj?dwjDa$ezq#UDQ3G9*%nEQHOuqdOpffWvp(MnE5&^P zYiNd8LL=1!x{CJ0rT3eJucqV%vICka7+L`eVYjIeg!v7VCjfdR=2i4(5ik#f;9!$dfYZNad>lH-DEJ_rfO%S*XhUZGSn7 zohBhDGESWGprt-OoL@d?k0p3;mps{0Klk4E`y)Kc-k)_G)t<3UO>9}?%5c!t9ci1^ zsjZva7gQ!l_b5`x8L>7Xn%-JSLxSDc)df8!qD@c?w%;Mxjx_{0rDZmn(vvwPA7k`zjyr!MnSuhfJ=|Dr0r zrU@X;1({FS889`*b}3)EB04#&zIo|{jroTyKcZO$qh;vGaWbQ*;`QTfXC2#Vp;DHv z0F#n0f%b?+0aOnEqMpA!%=EO5pVVn8&~&R`6b#V9eWxt|XAYw|PIarh00Jll1)TWc za)yBI9GHFF?S7Pft>A6d!1i#y>Meh~4DjIcd5hYa`h0q;7o{T6;}GT2}cCOcXuIv_4k((05tC3DorDZ@@=RPp>dKQ9N=amnp|pE*NVU@@(%_ zC>1yFPB2L=1?uh#Zv+{99ZVO~5t_J6Vq?cHjD;Khg%}B@UN=P~q%y4hx7y;aLmi6i z&77g?0gGNt-#nVCzSOY_i?LLbUX?cO`Z$-RJ_4@_F^{8pnWRSBS@MtSAro-Jdc}pf zm#5uta?~O{UZa_>Sd}#JI|kwtiOnR1c((ie9pzf+WyTp*ds;;&t6gtZEA z+LSpSKh(D}tO;4c zc%2Y82K`YZld{F$Lo#zlJ#VYO)wi+syam2nGBpkt*bMR|Y}W{yIcS)OPR>(kI#2SM zC=0n$N~|09I+9lZ7Mvsip@H$=5ViDN_}+#gmMd#E{#AT&!XUH~;CJ1z?2&`ptpdAI z=6Bj?qQhl~=_t&yE21n1rR&Wq?E%!7>pw84G6CN9+0e7KCNf{79$10}_L_@i<6ya1 z#vp1VF1o+BBS4R^8z3ZCD*T0gmYLvya*ro^CNu?`y4?boHJdw)-N2C$q?ELcTMSk> zs-w=)x2Q@c*bw1xFK%5S1Rn%3E&@#7SZ((@%ty|&kOw*VF27Sd84MV^_1AE00{CpW zW{cv&hKZ8yo?#Xk4q^)&y9=-*A*5pnU<9gHflvrli(82E=IcAH-n}iA`f(#j{~@T4 z=ajq64mVusVg+I|MZ%5Lwoi*$WVId#w!N(vn6-o1tvB0rfcrV5SCz3M(XBE`N8_!Q z^Z>E#pT;E^^mp9PYJTp}Y(<-%N_ta98Zr^uVCVwt0jt8SqD__3hec$yDXg|h%|l%4 z?ldZwC;xpbi_2#}emY#eQj#!Ak@IYSwj3dOKS%_#TyyqszFe)s496J_xLj?biW4~k z)WE#Ea+5I+!7nog4md0|+EmA}!c&8uC62Na@<&vpj&Ru}h^TYo)lM1a*;1DG)ylgDr&DAaWXC9g)PeaLk`% zEK|6}a9a5>dIB1muLKkSfkVasUq5c=pX{XXD?bhR%5v?u%A&_hF z~u!R4#X_yXDH3lYePvXllDy5K#- zvl}F=njl^Ay;>f1jmpYN?CBgN?GNhAb05Ef$AcO)yal&a0sNTH&&*Bn!r6`Kc-A1V z>G&Gh6mU5^s>c5H+YLZ{PUfNbM3cgU42GgJBYi}K8#5P}X;OJnedQ>#7Cl|Z)QM&G z1CcQXyh~2E2lK}S^pp@~a;1s6(_yhm`gov72HIhA-J=UIj2v@0WQ`hueJC5iskg~z z1{=h2&KMQqnf>t5&E#X6HD6dDTHz4{k^V>YK{v4bZA2jDm()?pab+*wJkgA)yeF1Q zYJ^et?Bv(8i?LtP8u>1XG&w4;EoR``VWabeZ`r;e$=kZrapI?dnBGbYIMYr#e8)U1 z&WMmFhV{ZK8;8Z9t^pfsLb%5tv&_Zo*Q$X!sWQaiVC3ov9m}q0nN2;<>TqRCsV)3i za-@-zlbi0=@-O#`d&Y+g?7UY~GnD4$-GhmT{VV6ZJbPsCl`)QIDVNI1%h?W!@V^mP z;Nj4X`?xj^$oTdopp+JV zhrW%C&Nq6Y@5pL10T`Xlmg|e$2G5&EjpVfqm+1>QZt0Y&TdD3%v0dRSb$+;@ZrH-| zHpIVceqd@&oG<4AHNvx>8RfDX(_7!7R%%7zYCP=kQ5y+^)Kp2oSo#@LQ_-Dez68}D zUfBiKT;!#?5h5TDKBz1`rx-JR388$Ab~hfRFE~&;O;Ko}_fRpZnU=1es+sC{!S4X5 zO7(ntp0dcj)utOLf&ISyw1s=cE9KN=F~^%1bXv15`#WN7O@-SRuD+Tio+RLK0HL-I z5}yz;k)p*c=%HKzYs3=5elS5i!5$F{L-y9Vtt1oi%i+>XIOy^If$;bhZoII^@rT1@89>QTAM+9wT zl9MG^RtD;tQ=7IXNiy^6!f`nIryUu(-o$Ms9Tpa4+*5*0WDMqQ+zRX>B(iMQ??@WJ zGQuE4DI4z_=MMFou&!yEor|oMoOWqT%sW2@BRK=ZR{P*&s)}09I9B{;8E1}2?x^t6 z1!L2iCZ?y0y@PKv^LHrjbaQw7u|%WT*DkSkX{?;1?BL6ZXi^T9z8?92k*ZI|na;l! zoHn~LDNYTQESS!`%R1s_fxxfN2`G88V_y}KC<*BJvSgIc)m^GyZuIv45m!K1m|T+F z-ccF4kg2Y2gKLVw8CY3LMyYs<%b?z4c=5L<)Ocp^jtw@JWSx=FU8l2KjgZYO7M z8usr}VstOZ5eNCpVELOgVuhzZUf438FIbM+tYnh8rNrPcQPiznClyx(On{t4Do~U) zLFKAax8h$@V>F58YbLJ@o|&_ImxNve4fYTlff_I3v_S=Xw)8^%^iHE#PAonIJN zPL{i#r)&oT*VcOVja{ zEHf$R@uynrLANsQ*yS>Dj&;vpt4=h0wI%;5V^O@TP9Wx3xDyC52x-ahy4S_MIbu-t z&nRf`xq=J8oqLg4@t06k@c6@I7PIVfvO7lsP ztoxd1Pfzd7%&0}SP0?gxMf7pOCt*eMKI2OSb9w{YT1vdfutw~d^2m%7|`5ikK2($ zCGZ9gN{*-46#E-GIbOPQ+gU8LY}URfg7MNY{c!z7)<6G5<9Rz<-G(N!yX0#J{|qCe zJ&cVb3g9YA90Wlnw#0HgXcCqW2Mbb?N6iE0Jm*4qbsW&wwK@B`)H9cC+%Jiv@#)^> zLU;`SDXk**bzfII9tk_4M6d&;-SZcGxSzpz^{i#+Y+nzb7|84Vn=Oz`mn2@ z!tN#vJ8AqvF#gmHi25(-Y%da90DgebNpUnkXBJ%J=o}W(u%zSzj$Do?-$j7siY}7;$$V zqp8mYRaA9qB)ZQLmLQa@EM?n@whBwMt^~e@vJp#E4lL!UszvJ=hj}Kx>!~>_p-HKY zCDm9BgrhdvrppZjW?e%xYRBDz=#IN{_O~MOYs=5POSZO3mII<1VAGP8DLYbyqw~vm z=%I#M(`G8-2mdMP!YX(DmgXb30^U~5J74h zb>{Kh0%-Q}TzsoUzLpJ<1U{G7*^po9lz&*T;?+!TZ?$>*QHBOYeB{G!Ve`-eT zh`m0g@INMfuw2|g@rHb?ZZiAFR2>XauMJ}QR0vU0<>1)Xt$&bP|=U6djla z$e&^9Zmiv`ObnK$Y{0SS?RrO8-O^tLAXHZQ_ialLlhGZfmZ5Vq2 zml2y&sEag8!Z;~51{+vX{|C4M-#Hf+%)VooYMU;ir6x+Pv*)*nqU4Gw`|n)x{E0(0 zS_BjIrw7!*-Af;U+kCl3kJ@>I{jW#IovpS$*7d;t#Jg(OwQ}QHZ>%YHL+Y7IVJQ(cJI2j8;B zRWo@2EkAWm2f2P##|Z*--Jw|I?*?6eh!9zS$QP_uUtyQbm@*sb*WrHeunbnkIGfhr z-eFX+6?aU7s(mjj(I-IFRmj#hWK7xj=8_q~Y+$GNz7=QO($`v|xhuOtk2wJ0R=V}t z7tvk;lFFE}m=1&hM!%V>*i21nzu?+NxD`z7HZj^xxMpQ>fAG{Ykl$I*m)wYHg{QB? zT(y;JK2^YhcP>I-9v_0PJT@S+at*3n-w>B{X=qB^fu%8a4XSeQivg(jxCD@F<^d(d zYGnhrinSr%L=6QVzl}L77x3}0Bb*rk^vy$5#Hk>hCSW4@WV4qIA!okQoKYO2iO|4v zV_F{}8{zl5+^O&Ct zwr$(CZQHhe#3d6#B4yp>E%Fb1Z7sP2W1lAmG(D^*xcmKWWUQ}ZIK z8LNtA&EsR;^c2;SGrw{uq}TKW)6KczA*wlRc7b8dqf@Pv@5*|wRE^7e4>uX9h%<+9 zKn^#f#XM__2}?tbmKVF}gnD3iY1t+UF5veNiEqV0tKaL*r_h>LlWs;CB@ z5M0TOmnH{-PzxkgK&fc(juPdyk{$%hidLZ$0+!bGAZV*rt>uB+&e-yBG>9_cSdc%Q zU%xQ&jupBf%o*hhL+k@-3Nj6Uf(M?~h{J>w?e7I{hpN&-DPdFrG=xhPkV+&P6FrgX z$xvu^v4dSm!nz`}#F6)!aob=x49Z+7SC!DM$OnLQ*9Y0)kmXR}wtjr*0zIk zHF^2lMZzuv->Nx*5>DBmP$@f)(jE)~^M1}lBRg|&4}ri;VwqBvs^5pDh{J2BzX4Rb^u97*C`6$D{PP^_vt3@t#*M5?j_4l zalL&D&vB=l=a^q=7D$F;{gcO-fX24JS*@#AtIxCBh;^##x(1ETU4*YEc*G{|o%QZB ztdSUd`pk1JI9X$3>Bqj#HO}hxXlHk$SjTAN_CYx;vkP0-M(kCw4-niFl3Qsg&*DDN z2W;svn!o%8M`RyUU|tRiyx!lNF4mRvXk}T@`d-8QQZt{)U_sh-U#bnnHRlm7R9Px_1FySW;Li?{+0cb=rv1TkY7!{ zs@P>Sf~WP6&aX+=Mp)yocP#sd=Kp*pVpumkFn`&{miZN?4G)X|pKpit&^n&|vsjk* zjjL$Z7lNtp@3@HZzrl!Rd2Z`J;X3{75G66xst#k#u}?dpnQ zJva_-LZGu9nuInd(%A`1UHyIQRJMcTXgBxR?}@OsU-#Isk3!J?!f4c>JXQ^OQD{N2 z-$n7eC&2$*A94R9+5BBD`u`P(`5Fsv;h7N~eE<4Be*SNOpM>A1g`3x!Y@Q1KPsTKM z%^o>Dx8|7UA{@B}Yt=&>p4I>tu;=|N;!N3gh?NA20zQH`3=EUR)PE)g9zBQ=B2`2t*&=~{gGy7pe*zZsTXdY{5t5J1l$F2D^d79XA|!Zu;uPOR zSWmm+5uj~K^yDZ9R!ys!SsK_4)oD}Ocow>+L^6X0{APQ@?>V;7I0ms!TZz=E#ox?2 zDIs$H53WT|iBwB(?b!H*;^3@p?M79^4P_x|4Y z-R2A0XzeVlfSxIy0_7C#L~`eS#P#(J+^(qf)}1sIlTY2=Uk6jqW0%V;0V5NKQG?#H ztAf_+j$^{<->&BZ0KMxegc|bo%nx>yj=AcugLryF7?BSU!77#vLAM)t=3;Nb>9 zAf1L7YYmt8a^fQ?%#lbX_*y&ndbLlKs97j2Yy{3&&;+$4ATxAFw@>X0oXT`DF_Od9 zBggX8M9xL!9m--_X`2?9iZZ1rIu1bvOUwxuEGTzL8;cw?El=||)pZQT!-`tcXG+y- z372q>Q;PI(@Kj#54x6j=Cr&E2gr5UZTH@ABVpfvqcrhoXASWgLGm{T{EK}zpZ5rUKnAaEds+JBkv3GFx%``PE+<-b-)&0#OFWF?j;%b3`9#mt7TS|^n2$fS7_ULFgyv7snwlUSIBBCNqZ zp8yBA2i>*f#m61k9k4tStvVUrsRd-)J(Z0&7LUZc_WmwfaXG@CwevNW3yCg2#u{2F zrB(tDLtI%xQVp$aSRIp>ja=A2wTx%#Je4CrHTc!=&-`eE4|7RWUuD{2D#K!p)yW~i z{GS6tb%YeCUT+yCyLHo=Ew`?WOJtzbZBT&=eY93K6vUUd!`n1|)a-6nl|9&)?bR5Z z)OrSDyRAPmn;U0e=gF3GO``Km^tT3o|3(*usZ}h;cQLhsb@Fwju2;u%N4KzxP}Oq+ zrH;(s?DP3+|G&slO<)#Pt9Y^&=G~~dq+Y}H1BD<_@&5&nex-$3a@CYeGejK#UU-1k z6v;$qqMnl5Ju(7=fHt;fgRViLa7l~yGI(_ciya4v99<%-JfK53*HO8iCVr3<3a_^E z43@({=_$BpOh{8Tm}FpH*_*)b6nzu9p$pAS$=q?WLoL62eE5EyT=M<2^!^-97u~D2 zRnx;aJ&TV4D44ByQHZNUgTm!&;Ca;^MD%D0Y+vnO>_jjA*OB@*(vUS^M<|ffS)nm)o5&rQDBXqs<9s`4$|ncc%gz4!z5YnY=i_oa2=je6`g^SH z>%!;d;^t;|`^8qPtD~FqH3sMVt#fpt`FVC4c(cA9n zIBq7>k!;~ z#TT}u4~ENUz`(~E0=+pt*5^sZy%xB`B9BFFNukV z!~|MLpVNx3GAbF*j)?LY#}cW zg>ZN@TSHc^7dchJ*?uqwF!;Dtd1L2v+;D@FxTGd1ykfTV4pKdo?<$g?J#7n}5W)ID z(Y5r47@ry~y3%p(hy*5RfF|JkBwBXvh`C!e0g`QTh}8VtN^aszzvx02_VLkzrj)xh z$Z51K>3U{j#S`tU4gFSNsHif!`Afr* z(<~@X;d|&BoRuB&2h;5{Ze7VDj9W6aVf&!rMGRe88a^%JE|=*%ONHVTrk~>0!Z=5UZ07|jDdCjvaG(c7fw6N#TP*qzjns#D%rom_-Pvo#(CNiw78Yer~HB|p})VQ24KlA5&_kJUL4UT0-rW|O1quzk@I=Tdoq#Wb= zTLv@3cx1Jxc@vea-6fS1o|&D^*Z+dEQA{F+NIQ^4Bx*V^BsUPum}++gqK8|U+&U=z z%?<38B!fV7^A0hGt6eQ4_*_}%L3w@ayX12{H*tL`UR=a$w~a8aA~QQfzh5KYD>Y3 zDeOSxNQiDSR0n51Kva|X=hm3eF&Y5Oe;=8Z>GcwLmGyjqzQwdoGhQq-Zv(z9^JZ=S zKUXa1og~B=zQTigNNBJk zXnazVX^j`}Q}nhra0%CQ2d9wIFTo8My6 z-eT&Ssp?;i8WAmKpbnfbrFE04*xmYam`F~sY-rG?Lv#uRPQCih?8kMcxWJH#4_14} zLxSFV1U4Q0_JK|FMu1_T^N!wb72#nxmfGW=Mum!^U&C?c;+70-TBp7;n={!vzO-%$ z6{O*N#`pU-iZxsV-_q~Mv#oE0htS9R2j+Gc_GWc~+|=*J@4kRTN&g;t^4bgWVzOni zp>#pc+l7W*-1P;1I~&+ZlOB+f@ct>w*f>KG)rH80#*8H907wG7FnTtU+ELSE%jDgXw0>~VnAdo z3G}nZJZ{Kvq8W$$w~Y0+5^@@=pe}`+uS8{?=Uw(#-AY^}H*U-FKgv9$#0gGauU3`1 zUe5!AQ3ZDg7nZS3cixiJeE;s44OKNtxL)ONhhga^vS_@jznd115l*L8SlD~G;TXZk zGccRB|%fryxH1w8tBzFm7&A6)kNBj75n=6;kZaTqgxZy{KhkM%sfC19lq zIL1Ju@J%4M-JpaY{;1mtAblfEF6o!@(E`+2d1>aG@!g2dGsQcCXvu-e0|91$t z`LB;k2mL>q*_L_#m&~?TQScns4{NU5E<9(Q-*gvt$T6f&Ky$8Gnc51JII2;o>TfPC zv7Zu$HFLb9BaZh->MB7O^*qpSJoB79`PH`=yx_ot-`OLqJeb~5H+S&x152u>)~#;k zK2T-)g&zw z^VjX$`>SJ#W1GAI?LS&u<3}^DzVgIIAek5e^mc_;)9EEBA`_C5KBv);oN`l=7!$z| zcHw9|g`BhK>Iz@Psj6Waf7yU1q}ifmrPB1PVE5^=Re~;g`_~h7{*4gzXU3`>lDv!x z*T`(;R2N=fe^xvjoPluwBWa`<2BN%TqTi24h_u?yw+q1{Kaiad4Unu>dhtdcy^mqD zfA+c)o{CvkFi%DmncW1N8}*C~JG8{WeWiYb`?CWW3#>yG1!Kep;-@nWP8Rhhj9ZHP zn`oHy@bCJw$%e@uRl|X5O9IB6mD)*$auf-@DTdLUhG)&?z?xksJ?|F4Iq-r{ig2-K zcjL?iBdvSh#_n6eCK2ZjjenZKo@{4L!VTT{v?;oa3GKkn9F4jV`!-1e2{>Y&v+wkq zW1rK*+M{}MMgV8`_Di7?g8v^5^`yKA(=sC+`9Zh(grX=DOwA}`;|T4)F^So2 zvLB1wBhl;mOURawHWO(S#2Sh>4WYU#Fp+x13lkY-@AA;?XXgt2Y(YLUb%dv_NjJ$Y z5@I0xD4-cf+9i(G$>`*26`0>EDh%UM6&)Z9P>9Mma9J53lXz~>(J3i6!0VbY8>GT@ zou|Z4D2MR(+0&KU*WQ34Tbsp1lOia$m`sY)k`g!m-UQ{E$gSYMw;Pcg09_OdvZd>-ha za;Gar06p92)zY=)rDqRMSTOc;^b{{sNmkit!FUV z#X+|e;issB#S*~2(m3TrqMxI@IV%B1@q=>j#Rw(eoyXvV3nD`HSG4bK*!r4FEK#l! z|KeG1=Xo;rhPrIDU-ec=%@aTEqH%kg+Zs+bLC1p)bbypZiasB5adnH1EJ+=|{=GkZ zMTk}Yee$bKCuFomXUNf92$sGUY3T6ynUHLHxw()-u-M8TrHM{wD#;+{TjYK zcZXJd5Y;rl+g+S&Ma*NjDbwpNZoYjML-7QDJ16cKzA{lvU_;-jgfS54BKqO8#)yl_ zp2PD4n_p7le~|q5VO8oaM#ROO8u2XKapETGIR<}1(=0fNblrzQs&HZ%#J0y`RHK?f zIg+AE-{oqQW|rn3On<)LdfkQdy^;_EjHBY#QIZh@mZp1a!GOfH?dzojo_*{v`WrgA zkhdsp8B0qx45>sYbUZ2oPE&18HPubG%T}{e>}7fo3TMZ3$HDJa|Em97l8pz2QUq&2 zt0gVbQ|PB)c-Q}YbF zFyg&wP@{ty_(7mrT z=)2srf{(~rP}(=aG-l-Y8FN~&g}K6e*J_zm8xySfx=K%{$CmX)C4x>e!ieVDYKa$| z-h<^FGAC+?E;MrIpcwR-;P&*TK5NqRq4!*HBktzt$im3)J`giGI6HW&tA;$+$kD#! z=%olsx~#YDQ>obWOeuJ#*J@Y3& zx=KN7PI93ZZe5WxB9tazam2xy0=OO}M7J9l)~uybv7SWyve|O6?FJ%Pj>8_C|0^=A zNwe(rf*((#GWnIQERJZ^GpJfkp?K=ej%w9^|N1?3v;5cDutv@G*OfP!zV*Krzx=PU z#xDWes1-`W{_pVrXc$zdni*89x_{?wekN`=sEKn>+gbb$*D7r{IjZ*ThF6FSwMR+# zzPtU~FCGD^y8-USvOTTZ)o5f&)8Lch8YMgh1guiw}xN?KPRH|f| z5{`D%3+wZGd3v^=`irgqEfa7&It%NQ*3b9t_IkWOdmTCp3kL_=^K{~ zIy@uHcSP5*FHy#*hf{Od^Mkhg!s=&gd8#S!FQ02y8$B*w$!l^khH_O4Yq{SHx(U;E z%6VEk&~#M}N>dMjDrtevf>JdgpeXUpn}=QrzDE{`oC@yL>HHvoALi{T%l$?SCGtM% zVmcf-!yBDhXZdAQ`O6qfxY)`L^E-NMsTRnUDA}9jfjC4sRLhSSx>J@RT9U8~b5Qs= zfSKz|iFe8Dzlch7lAYWG5^`wef*vd(MQ6=xC{`9ibA}TlHsf2WX92#7BjD8)G$h2C`EH_Q{IGDS{uyNC-bLIor7kYrS&7f=Gy`;OkpXN@C+ z8~h2+YpCwio`fRU&MPpK4n(^K(PXL*UZ*!PT3?i4X$c_~5D$+sf)_uZ2*nnnTP| z-ljbm2)T1o5QD6=Kxm24h|%u!4c!afBAR~`wf9MH6m-HY!HS|jy{hylJXBdJ6thu# zPFT4;zZ5#pe*ei{NRBO-Z4{>SCd%t>!_2E+N~=r4fV8LuvHOiP&%}uF9uuQ1b2+YU z!@Fp1biamccD(`GP5lx6&r-WV#aG9}p|Oo-nvO}-hypQIn6dKSjGChJq`_x!tyBUU z6w`Cnzx(ENvC|m<`2|I;Y$m5<^gmr{a+IJjYk{D*9W>s`qTzRE@qU^g>2 zRVRO2)dSNc_puZkJ#+@a!Q^GAd1+h@Q9WOcgNy45bB_6JLqQR{Jl?B zuBe<^0JQ+I01!zJQzB+sSK?u94iEOgU*{m)W!Qp9B|F@Y3zTtMTYz?<&1j!2CjaWe zezRKl4&5#&Y8l+y*FQnZ*rpSjj}W3V?Pr2>cs;kaX4Yyl=}GZc3n8`K1|x^4gV-K8 zp3=B3Ds`jd^O8?~NkjE11tBZyp|l%dtmQ{(#DtXD-g8JzMSbv}AUK)br&%=d-LYsh z3Od_UHW5pcJ2K^&FWN$nCM5HNDaG5)%8fHQ=)HSEe4talT88V#?{Kvdp3wBkQl$s% z5BifZ3XyUU4BP-Ix;Hr-o+==dB4eFE%O>A@eZ*rQ0cxLaF5+)Z0CUc?qK%L40dj4D z?NX*(IbnEx2&W1tBeR`WWJ&1OM2DJAGe?(~JQLark5nUjb1qCS>Yzk)9}xcd2}E?J zKiACofrM{K2lxprGVcR4AK?Yn1N1uce>URYm7_3p){Lk0Y|5fBU^se17*2B-q0M8~A-J9x0)y_(VmZdbD%Ft3 zojuaWL0`DwHD7W__Ol*m)J%zhgy<0C63#))RUlJ-FNL+SYbibb)H;{~g=SptSvYr> zzkUC4{s@&5{R?IC!&m^RNAO__w6FysLug#b;c+^B1LQ@EP7mC6z(0+-7aXNdQUzRa z-(9X_r~xwP_{MV*;u?=^|3vl8i(yXitb>*|ZDNoX)~*)N>?+8Z!f)gQAs^Nx*4f9K zMy^e^eFl-O6!+PN+)}ES?b5IT^v0oTbd#(pE{D7k>;C6TpDr>x*yTf$)&R@NhIGVJ za7)Jy6@;o>=p8h+a%*%~^ED8E7$m{G{i(IJiETWmT5hKRNN-usHeu0)r+~h+L-z2r zYaDg^U8T>5qtQ`1q{yPlqp!u5Z}R8%}~9l#EeK(}_X(*5z9V zr+LDXmZkMXsVyazdM$%ojZ^dMD(f_McrG&o8*M1!`5fnT3m%O!m{iQMTBfu)qOO^vu`kkBL(7~ROKK9=Wqlx)v44F5G zwdW}^EMPW4bgYgAY!j#`iex?+6;hGyg#Bjq{Q#>joe(t$f|d@j@xj&6K=bXS zU$klgqB;GFmjcN2z!*#VQmG*(8Ph3@CTEtB{nkxtxgjQ4urf1ppOsl?%geeEgq6}4 zhf$$X1#)bi5BHy(`?>@5q?uIXWJDN4r&fT}AK*$>mCyT)wZ#E9w`EW4M91365raSD z7u>rIX*<+2iz`su?qqX9dQ>h~M4u+^`E3p_M2M8-HfF5QxGhrr)@x(|gyA&jVm9uF zp4`_3msdN)YL+)oWEv)^Ru3(2OSW&)JmZWcfQlypj#;Fkyd|j$d<)=#D6jrP9ar3& z3b-}r)=VZiKa zk_nFvy-T;envnubBgM8J-4W>?4$nm_c~aQ^uUaaoI}<2A$=bUNfXv>0W0Q+I;=^!2 zdsR9I5ykYs4G5u#HIj@*l9x#v@|r2{!u>U)4@jL+twa{xn%g#bD0t$bNyrKk3F7Gd zBcgbW_R{qYaWiHO0d!at;u$7#-8_tFHpSv{TvE$NN=sG82R76`4CuWmP`eQzc0<6d zp3+eub`dP-y~mb%fEhIaQ))jZ)IR&GRIw3k=)E;o)V?$GU$g(}PW^fCehpje0c3YI z|5sSr84YU3i*mX1f85KPe+T>@&S44vYxO^2|7T*Y-`Se}6Qr6)0uZ~{kQYMpIuPA# zkp;VMV$Y2{{WKDE(r;ggZp(NLsKILeqwa3h!y!Efz%74ZsT1~IhujbXO=mou-Sa^i zx+#Cv<5hT6NOw0(AKdphYhT>B(HxFg&OIQcIwh;tR3J!S8szwAq>95ZU@S@fg_R^C zvRDk2ZaG7=GX1RF4qD-adTp0Ho1w!+o!s&qVb8Qf&@4%!c#KnySq{mBPZT+jnPX~? znsmh!O&JlN)Y$f_&KRW;O&WOc&RYwiMfRyAEZoGXpQ%_P$qxQKZ!|0#a2Jcze3(by zRC2u>p219^Tm^k!(+8f9MV#$q!eZ1yunahOIQqy0s3oB@YyTq9=!z=&T8aN@68`$2 zPDn6ewo7A;yCb`PALuZ%N-vJmiogGQ3c~<_sQ~$k{VmqzmdatsvIJSXK??3hHMJfX zTkrUw-$knL94MacM{-0b(gDdR4BIWUMbO|uwlwPsLIc(J;rk^j@ulRzI|PZ5y_3bwaxl|P9L0O zVPmm-fH|x#iXLXW!Djkm_34(W@fKOevN!$2hO_#{C5@%XONVHdcaWDzqS0?z9?LgL z+GQ;J6l2E9Sdx6)3A3h&VH(sP%G;2m1@Sxc8tr?T$sjmHQE?pCbk0bzH5tRd@5dWA?(nIxUcNvWNER;^7e z4brCPl14&OErEzL?)Z6{@Vi*v(p^w@7O8od=p`nl>c-P%{ALyzMcS0O^b^DOl9y)x zfp(CiT)(X^dR+vcF)=3#4A-{?%^KwI=yC1^HmTN`gov#v1K3+xR>!k&2}4%D+;qx0 zkwd&8)l4#ZH_;U(&9{YiCvpk(k~T)P9j-MoGRWf||L9_Y&%4lz8?kg1mw?eh9etO6 z_n|?32RG?_SW$G-j-+~TjBA1_ngzlHIHr<{p&sqgS4g$RPKPPy86zL0zKpmTF+K6Q zdYm@|JHpLjPDT3)Z2++W(AvEUHEk@PpEGR>!nWl{B%Ej&pV;*_E?i>UzFr>=Nmg}4z3MMEQy(H6t!2x zHBOyh8?p`$3+vRvf`}`~eFWm2EVa9?zQK+F@JU8@{4I$y)a}Y#^_$#7yAMB~GZFml zFhHO;=Z#UTt@G>pQ?=PtL{8&?onYJ{x0N4~h)Mch8z&v$c|96ZM1t?^mur87Gl+T6 zbCqsU7o~H;3OPzZR4J45ho83Km|BJBQZyR7d0hM+pX;}>)KpU39=8Z{dg;R3rl{h-596hJxRBPy0`gX(`YETgJPE?|cpJ%-Et+s;6=2NUgsLaVD(CzCPL=eW!{w%_s|;yy z8XcT?jg_~PG>T>jwEz!HuK>ajINIa>rZ?E+Aw;GGVT>}sg(AJ>OK0pyVl*K<|*Fc1Gf;a(ihGQYb(rPdSbXl&3 zX0sRr?)-EK)qo}i)O2j#0E~MSe;7!>$SCf`w_Zw;MA2TRfK>U+bwQ@XU+IJHdaV74 zh27bPoKPPk+knhJpV(E>RUQIh-SVnQf5e4zCn0s%bD8%~47jwq*kLmJeyU4f1)jdkX zjc@fT!cMirb})V~nANTpTq=|5lL9<|Q3_{gZ*$dPEPP+9nD$}D%x1f+tvkVi@5)nP^}60pF7F& zRZ8N{^gD;HXX7F!h+&I@e$SbUc7mLfq9-{%62_0h7uz+gFr?&AQIY!Xjs=_8zpV$b zR`rSu;DP(}85@ydD6U6)a=3Mu`NK#cz=KdnDe@i~`I%usr7kmp_VCD`iMw-tf|(ux ze134f4sFC-TMysN8w zk&*I08hN)I5R2Xh3no?}0{n@g97S+rH^R~PqjlO@jd5xa-dxO$ZGk!vWYFfQLdrR< zL%g_Xp7vX+taL@bSFhtIo{LP`Wk#xWW?5zxuh&Um0^Q@3zf#E^fsD&qHjqD$P?a(W z=lEBfQoL?xkZNq4qRI(=w!j0VDY0>APgYIab{1sCUD&;LCCStqp^}hhMSBkh#ccAY zwyh%g7=|{{^h|-yQwxRR#J0>yL+~CBe`8}8z=5_TCBUNJ1HY>PW+}7f7@4}JEm8dn zQkHAfmTG(jI`M9Voo^u7MJ+SE?y`yX>b?yIvwYcw=U;Y%;N5=a9Pag>Q4gx)e`A4w z^E|R}*#081a5MFOE_emaJ0a>K&C+fxQcTUyauw>0eY}4>K)-QZ@w!Ytf?i+FE*jf> z$VL($l(h|?2Rn8{LCYm8dHhlq zJ(!hQPc6Xm(YM!byzj%a5&BWG*)TLHdnWw654;L-d!aiXGon&$WD-(PP~zy)up=2Z zKZxH;d9c0J&AC7pwzjLF)d!!}BFm%K+i{47pvJ-RCj@evHhqUE84i_o0IKGh%UqM% zL;r+w{aKHaT+O^^E!Zg2snE12wXm_7W~hiM%v$vViEfJ<#wm0)Jc>&d+u9zNXI~lh zbuexq!u^)4K)?eWvD0N`U}z^^XPd)w#1C+&rM$}r1oZ;!Fl+hyj=p!1{paO%k^#x^ zG?mTPx5LBH-o4RZ^@+>--EEz+_PjW4VA4-@K9)5&HJ(-qk?x_Z;-`t^w!ux^6H?J# zeW=pIJmEit9Dx*wPV-p#OGgfh4$EzMgJ|h@-BO4zkGb3y1W_Ed{ z7^Q(IO;v54$A}K3@#g9#CATED(+n{1vt4I37%uwV$yb!5ZtOf^?(BONPpf0T5Lsy1SA9N9q1iX$g+Vv?*y$i)yvZ|3(4xgTE zcd0_nfa-M)xtQPJDiqR#GUT)oO$2_Lsa8O%PbPpzyNQGH9&fhtQ9tI))*-sg6izM$ zKs@iNViERXn3~7hzDsx(nrjSBBHqr&@Q1+J((gS-b+BE-%u{lic|*{*@wc5HAcsBCSR_A`LvJO4{@o zbbTzgjVCkC6z^dAP1U7y8%{no`|+Xc4?Wt>LLZ&$-T@*o$EbuDUk zjL8b`o|e(6)HJYLDA48Gkh3#bZNc06^Yv}1hVL_-jp%0CFJj#KygD!&mb+`v_*`lx zdnrNb_oMTG?R}pwu*rI8+dt5+caCa!@SpGF?AF)@m*_(jrI3_0+$7*@dO%uvb-zVz zza6rYWuQ(SY-xrBRVRsl3?YhRq^qfTr3^xR#Oafs$v%Zm=Pq{hU)+WHes_f`AJi#2 zln8mM8>VcqST6L%scgL4LJKFtexkV7DuiNnBY9MIyigwa9gs`eEYK1V-dBx8nN!Ev z%$#RxWP%)rjaYe(FWX1s*3~I?;*@EQDHY^$JiOHSA;DZb0(-JW?Jo&CIFb6N=^9Gs z(9gNxH@si;oS)}=d#7lHy&nKBHX{*9&8rVUb$_ivOgG9^L&gMk;=%gWx4 z!z@#KYmF<%XrQg-lRNjQ+`Ega7|apv0L^+2Nh3gkch9Y8@nQ0xSY$EIlRM_bQ~3>1SHqh$w~UMNFL z79UP9i4KLdlDWUh7zPuTAD=c6Q;p;do#gaffz;H zy@N8m^3|=TX}? z^hAvnk!y~;r*_Eo$jRn@PQtV!xa6O7yCTnuYij>4UL9cI6Ofi(LR)tKwodgDZO{Xn zKwVTm1*Wk&fTi?yKs#=({z#-##pStE3F%P?FKO_cETs^Hs_rAy)99y+6msvbeo-LS zDwpxLmYIJvF;M+hHsce_S!i&zmF#pplLIu0(&!vX@_&8_b57;ll0 zG>bW`Oma^-qb!9=()gIrOLJ>W#K%U}x=Z&1QB8U!PPn26jNcZ{c01A7ZIGs$0Fve1 zuI*erHuo$JcI0g!q92vVVtEA>F(|E2KjWHR5gmayL)f7l>tAQ27(w5GTF;bIp!VWPIDxNf zqsO<-N>65VP6OH+zAQeIOr{&b&Cs3JZ9$HqNA!Y4P_-P*q2o^iq6d)&z@h1A8?17$ zwl|RgPAm2Ymd2o4%Y0%{eAS79cn*FOi8GgB4!I}eW z_?C@2x>cz(P|JAjiAkV)Z;{{8d86ZshC;phr&TTp{MVI9Jno~(Geg%VcVUHP|a>h5%ZU5|yrIZX)?pI=#c!wwE*^ERH*7*umiQtD_ zQi^hhu-4`r`N|DvA{nPLh9G`{Yj$P29^IAd_x&lK@AoMKtS4H8R()jRWTI}ZFMII8 zeiG87QF`v*v4o*NojI0n+chC96jgU8O+`u}Cr(6_)y_Df&z!su+mgm5g-Jr`Q!p1* zT`TKXG4F5bEZK($cX$l(1ia}UA+H--jp z623Yr2OTTNu=dDacmCuP!qVkBzTbLdM7BXf`8@3%;tt?vvTDG;t(-ut32uTAN3ezH zizw#zNaCHNt79)K!a=Ks5YHm<6!+tTe)(io29gP6-c;-Me_|}j+E_$0wF*|J8iO!h8KXeSXfu?#2Hs ziFMah*{7{YU{6VmM&gkJdzLWLRXBd1;XIUgam*9QIgga)MeuYJ<(vn}#pelwa~CHp z@`0RscGz~V-r;gAjtjT4Z{yh&Ek2c^gnposaeCJVG=7ES{0sMK!V$K}xWEtR>m>He zbSIh8LM!6hZNI54PKY$oul282RoQ`*TYAkD%^+oe&jO!AOl&WsHa%&m>twAK89w=x zt-xTCNr8-4OkP~udH2E=#okEiDvA?mQkg5@{fX*=R?4ymWU`Gjh)g#dB(y5r@&<6&vK3Nj5DnqgswK_}KrSN!G zW06?OuVVWD!{ z(u#W7*V-2+cS_jl9Vrj*q6d;)HoKoT?y)01lCFcj2_5=ltMG69E+A7wX|#PNOAGzC zS+v6RNaSZ+&(jSu>QrlX3{emm7oMqcLwH?RRq2(>=NRl|rglp8SN3IA)yfum3H$_21c*aqq zuwgDWVy7nZbG+VEY;4cEy5X8b%t&#N{mkLKrh00*Et}@i{1bry=gQ)T-@!+6S`IfuUGpGPK&_Qy#sm z%hvhsHZfAsKef~Du?gGu+)4Bs4;^as)4r?IA1b>{Jk`Ml;0kYFTv5`&%zUbCoGAm7 zXgPZwjuFE5M0R@qQZs3#Pehyra);thLnSiv_M{2o1xO8(H##k9-E{h1-(U+_Hk76{ zMi+;V;-tssPRi?Xsdvad(y5$kSWg^Pm zNNaFO^1qUe+!gIdEdmOTX;ICcli@jbM*iwR1_vybkf&5pG&>NE1h@YyuCIIw*@NGq z*Wk3EnyOrol~jpVP)T()U2;II1OvjRm#c|kb}&g@l%yoDu~Ho7#B0_~JEu%UGVpVq ziJU_XZq!sqzE(7Jp|NnvDI}(DDqu|Tm`T2gB4?E1qXJQt2|sMPcQ4PJh|O#<-ATqf zYDgHCU)s0603`M9XKOZ(Ql{H+8#^g{?R=M2N}dX@VdLWTs;zp=o?_71iv@nH8DV97 z+$st8187HNg0)CDyiGgs+a1_zpU8iMvCacKzbd5s;DV$nJVfe;O)|l3;KU-a+<2>C zVR|SrY41@DmBXD6!atcFiI#)4Zji~qyPiLcO<|t#<}!|E3@G9kp*+_8{yI~ZY=`eC z&)xFr$(^*yvA`V*rk7@;l8s7@ahe;KAU@pwP-QI`U&uZf-ra+B>b72exZNPPxQW6q z{kSica`31384QHi<&gFls*Y6Wdb=_W_JDN*xktSg>^0z0p>m zG<55L8P)FaY{tM-fsF0&v@a31j^$R)O^UELDat^pm)*I!khr>ChII|qVW-i(7X@!I zeI5ZJhZY|GK8U#EuC0m)5Ob|xkZiVUR4RM(rCUqAp@K>bh7Uoy;^Q`QfV0UEExoeaXr`1a9NbgIb>gt^{SNd zKBINf;u0)gi?Qmzu-ZAsQz^2WR#UtletW^QOmG{7CKP>*Q<@E`O0wy?lQ>si@qz z-p-|+F=KhxB#cAJ4Rw=ipWrb_9q5Zt&G+rK4-gCJ}CXTGKenKPLW zVL~2&5uq0*97>q>J2+%Q?)O3_IL(JR={NnaCgi{JhhI622)z)()L)SQWns8|qo#)c z8{zHHtms#V$L;%noJt;kJ$PpEgp#o%^!_Kz{}*wD@7Mn1*ZPcmRsrNtv%Eyvw(H5( zT5k3tTPdk$bcT)i$^T6u7BuUpt%9x{hcUwkf@U|}_vQK~KudR_Mkh-kuFa8x*7Z(>7 z`}1@A!q%o{#y36`&qrnY0M+;1?zWNrCs_Qq^+~0i_@F0{bLZrQPCuL(8b zaL-&c;j>td;9zt~OiV*BOXs6Q_C)%kSZuxb6?q(vNVN_{6!|!^-Tun{)=y-vXKGKQ z%Y8QH<67d4wFde0Zy6mA`6t1ZW+Ybb8P*i%QHem;)RI6M25%G%^U$0MdC9nEOg@(H z0hGkZ2EUdCJ2^34Du|>wzL{*YpK=6s#c>b!3T2v|myR0T`$g^lhp>B$vSis71zfgm z+tp=Pmu+|1w%uK}x~wkSwr$(Ct+)0*XWw)08xOxSSIili|8nHY_~s0^k!E8WVI|xT zq!b3`AFn-H8!fis8OW{E>QNxDSaPMvY-x%58G@E~r}iDl%T>l}IUjj(Ztc~ke$qEE z;~^>LRWZz>cECAKsv|s_p{bl4*o@mU1!XUkhzh@4DxJUAmmh(&Ry*0<3L`H>N)KQ> zhX4Kqh46-~KhwrFT@X`+6aYy}My-HV*H@sM8>F7mDY>tbTK}>XH(9RVuG_|8%GJG- zQi8|F+YNw)@kzn$ad((X-Z#;~hD|txeY{1IW96XprZmf*v4lQcubxXN1H8Akem?A< zKMat!%{K@RVn2KW+6tweS67!o7=c@9r87SV7Z^M#9lUPFzMl=}ogc#VLXWtQZjoIN)?cPW3hn81GPuH4ktd(YMp>s>b}f~?GH3k_oS zx^-KPX)?^Y3dYaryrnY{{oYzg3DRz(LZ_`F5<&0GFnB&XL|_imC`>%aSOQjOtU~Vr zsK>1cJ2ef??ZL|U(`Q}O&cw_?)_SE5w#jZQ0mmH6Wt!Gr_c~x@RYh*+;GS?Gbh3*5 z^YIMmQ{g0%m4yjo&$%(0_ZwFB^=@>tmMv&iFVsxSI+g)@1P>15-B53IEeh{asfG{% zP46*Xa|=4x=Pw+&-#zOCaY4je%P#jhPzvN>jRzw7DSfL`KUA39NKQ_7NsZkNx%j8H ziVa`X&R)+H!qUCD{hX6PW!g8cxVmXq>>|%E;|dYsNEl%FVT&B1_})85l~xz3a9j*K zOPqz{r>(*-IWWz-`EfC8Rb3kB8dMsjHznpAeh43VVS@lmx}2aE+R86XYXb<@Z#7bV^eAL>_rP+^Xoj4tv@ojk zaA^>2+&=yMagV4JXvZG2UpL(A;aV&?k%@4}Df#$2+7TFm{l zZkJ*N*WDi!ao#Wl)d8%}o1vDJ2G<`f&;c6gO;0qy5^=;!gJX3_Y*QW+nMBYNJ0W@Z zH|C5}v^0_Kd79`h)nf z#|i~+8Ct*inXGM)M(143;7JV=#0mZ*pT0z(KVv6I=Me5Pcrv3W?oK?#NqAm!`81=V zb}o~}9E*Q%E~mH|et&f6tC0F`1XH}GYC0q0yu;Pi1Ql)-mKwD-`P+A^b8<}7o1u;)PTOKH4-843nECEK_Iwt@h516B~@WqfNSp% zFGm44UMNBeqVu?iJr9VOMV#G=o)-n5kheS#gW0sGDwB=NmhOAheTgFbRq~l+XpSh3 zEr;=XVOKD!)7z|rb^GhNZkrEEPB~;2I(2A0gn-_=NJB%A-7@C$HI5=--SK|q2P;qp zwhRT=s`j|#S9D{W{;+!O=0`w zX?Z5JZg*Srb8za|?njrFD0RO585;+GEcYZHWL}@NG!ch%{#_XY`9S!VoISK50{yn$+i_}l>yo3UCgB)OUSS)pyeG^JDY{6gu3REVe zotqcKEKfKBdgy~Pou53>U33zRm(!=t+=tfqDTNhEPD@cLr4F%Di^xX4UBMLxDcSO< z@ANj;8Fm*h1RF+{JGjZfoEZ*h>AV*ZvU?^NpP+w^n!L5J+ElMG{Ny^%{IGvXMki=% zN8!Y2dM*_7jgWh^@<9uL?{ zy8|Q?xiKHL0V8Y;!$g`*uMN2+YKHyWNJy^Z4?}q4)iqG3m{~f_T-Q|n_CkxCsT0xs z3CV7v9F@J6UOpWR!5R&lG|{5ei@Q?` zVYVm&HQ-FG?Vip;x)7b$axYP0$S%cwlNrJ zDZ)rBV9;%^53C$refWWiIfaen3))v-DZg%lVuY4I^319MUDvupF zy({uF-LPO(;;6N^Al+H}l^m&n+DZiJ$f}|mFT5sIwP|T|gg+>5j|gEh8mi#}_IKIm zyG!k9VchxpiZtM@Eqo4rKbJdglLsmVuhy%a5k$RgUUmzkp*Xer4KK)B!u*$tm^Inq zR)1&AHk@qlp5BM*=wujB(8;kSiQ7kJ(E0xm+Vx6@z#%eR+Yv2z33Lyvf_J3(;5k5v zR&QZ-#}PtB`bCIYZ*yedFof))<@QtL$IgY|=P+8I$OePaLE`lZ1`*WvhB8TVC6^+k z3PlF4QV#0ybDMD1>!n^SepL0q<{M#KAt?MNYeXy;V1D6e_!GQ_)I*)M1bTb#o%=2I z+DhmUWgHRFV6qrhnbeO&Z`UTM4{Zbi+pr%MN(U+6{K(cylFTN`(A3AV{XSqskssfn z@rMUPVGhsm7=1U59`n-Ob=Y85D<0yV*_ri;hpE%QJGuwi2KxEkG<8*v%$}avmsskc zhC6*wpb1T!>*n1~R|F#RfcdOJ_0?01m^CF-#yMt0wC$OHi3epxtx#9&4Tw}1juTTY zo5}GWmL3b4j^&T-Dk`mLZ{_t_^g&bZO2~lGx~!lv$v(PtADTyMF!pb{Pf_#i3Dl4v z>iGO3taTmGXZRFR>TWlS^O=Y+?5$hF{g9d($92(FZ9SbV*aqW}W4D{9ckO|>7WFi} z*s3k@QBQ@3-IT^c_H4&F^$EIA@Aq2ae$(c&?xO77Y<2e@)Wd2!&+d4B>e_uUZZ-7t z0d5d2)T;v*gI!Hl9l&g-Di@4lOyZ;ZBvGVE`4IK2^-?L)Nu^{-v$ORD31hS(4L?Cn z5`k!c_EE5V!pAIHsOQh7_9}`nC7$fhl)1oK^_Y9xg0&F5NxSbnb7(&sG!p|1q8>*NmZtc5^-VkcEcQFN6nxnH4SMLy1PI( z7dL%#ej!*>PJU4~10M)ixE#n%j3jjFh{?zYbfLR!PK6kbS*FU6FE$>@8SXPL$FQ^_I zuO#wk1k3Fp981#qW(y)x$)#V-7u`8Ra``NIcHEjkW%)Wy7#8P{7K;0G*q!t9AHlIr zBt#wvBJY%~y(ZB(@&RrAJvG;<n3Fdz~mJz;A6?YaHbO_SoY;V31aAt`q}1}Sl{n%AWos|6i{Ty>JlEIF6P z1?VGRkyH3pWJG?dhBP!et3*nyvNiJE% zJ7SW~(-ofa&AjoExpssm4;!S-p0+2f!byk>FLoh(ajwu0cptJ5W?PO0kkxc}sL43i z(4HDrEuSFv!>J+V$0D|gYDHvYHr*T!4EubO3tsKU#oz|S!1?Or84bCY|q*H*{fjE&w5Q}JY(iW=AVS9Tpbq5VApoO-(US~=($D! z8W#NwCNOH!>9L6rYuN5ZN=O-MGB6}i3YWjn^k*Bn3y(FEVvR)Q-y@5C|F*4e1cCfSsW}IDu>^D+{+75>qHb^qLOlV zEsWXA+PEzTO(NTB-)o~Ep+b5Rwi-EH z&YRokYARA_);V{Dg7PFhd@ZjJuSI8idR<&^p9@^CPK`5Y7diZf8PpDlq)J4yEReEC z1yJjAXPY8e&P0DehZ)y}79Amo`r<4(OTfAoWG61ugu=pSb#&LEgR%^zM-di8d@xNG zETS&AQSsexF-m!zlA=Hz1D1rkT;?vKH@WK@71n`-E?n}V)Ny98x&O@m&{T~Gk0{Yx z;-?)Y7v}ravUAIJ8GCFq7rQiJ46bs{GA?j-QTVgpQp=N{VE|;Xe^W@*(Gi1gmw2w9 zuFWRuKwm3m4IAzJvNAC0g?MsUk*?1p%#sypsaT!YUXOv5V+~XMxNVt^anJ~4YL;tW z&C0)p++qd^Vr}JEM5uo(Iu_Ma4q4*pL3tO9$;8R@tgS?NWtG44JlearRfIuZ@AiRp z^h%jAt5muIx z%3oroA9fNFZF{LQh2^$*@4>1C{05c;HBi;5gn{Y+$`Qxy5%G{&e3{=Y;Ci|@{Ot~z zA($%|o8SxjvuH`9#lz|G5Y{#Rh~a#vAmQL2=@F-e|Glq(baD8-jB-?zlsk$0pbl0y zIzv?PENGm-z*T~LP21{Qve!X#3Mh8mSHGYdnE_?)wB;g;%f=}Jrqm)nH2kNMpbErP zT&3f%*%pEz7G(Q57LX^~Xwi`+v{AHEPYYdRp`nKjGHMbpdw?DGc8{)N_*Bd2&Jf+4 z>L!nuW=No)j6nanERsVKsAB{7YDJxTQZ`yy=4!=F?!Ev{&$G}E;F{GF2^*Vu0uI}4 z>DX1K8}-h^u^zG%(nmFohdNQ`mB!Ml)@?>{HOVe9XXqzd?FcEX4V6^)h)Hf*-o_0x zzKv@0N4kY~HL81ym5HB7KFU2W!-phx;TP#_nzbeUjjn%YhgY;yR)3Ta#hzilLWX?r z`&es)$#E`tcwppo{sVM5Y^A3Vq19-C@gdu%F8>p|P94xHsAx55oVKjqMwJ-02V8pj zcRE-7?2nGx$|~hWm89$^7nL0kTNCvGnwn|1N8idLbKY9k899423lMqoO?mAKOa{}& z-Z%TL^5)JXz8zAttUwXOG3abTqC3l^L-cil64MEg^yTBkO{_iJM6oJ5@PkpU+oGze z-SAB;gT*C}m=#0@YcZ(L`(VJndgD;g5}BcC=qNT!RW_=oRn87aXoj!m9h(fQEAw*L z<~~w1=}v5*9PzePW!EE=OnXxMvcbvAOZc_&+UA3#o**pWuo*21sB`PeO-n34KVd0` z496e&!#*t##r4!y5q^p+PqfCesi0j9%nzQgMRhp$!a+w25p#L!Ls7rz?8&Yiys4Xp#Ei&40V z`BSymYlh|&3J4Ko!@Um|fpEs3O;kx+lw_aXSP9R(>2(UUFz2SQNt@g_iBDkQSATyp zlnoj&LX-rN)wLiCq@=cd4U`-vx0X*mb^p}q_@zaPmfQ7D94mpd~s7_49C%}L2K6@q=m3L*P*45qw!{3E{d ztgikezSKPb7GFoTe~T~78Ax{maCgGL#20@5|5tqBUM7^mx`wwl)#%Y})?|vf;g&$z#Kyd6AZmc4Uz*GNuzcfBfph6z#3N2J z(UE*VnF`l7yO67-SN+B7{&W&Dv!f0PDbR)Wagi*KxEZx0@Og1v)`$2RB992Dv-bVG zeBj_vKk6FpLlh`8b%+q~;e6K2_!1&>bbnr;lG_Olr8$XSMu6fAO7ITPg>ZU4|<)WSc7(<;wvNujf`iKkXD5 zSwtY$@Be1KVEp^9z+s60oAsKu`j7Q05a7G`$9hr2P@soHzWvk<2WHawvvC-4a}`*+ zMl+73(v?hRye-Y=`M;x6M zrd@m?%JnSBlkdt%A?<&l?$#-)x~Z>)5bmtx7qh_pZhAuT*xYt){M!YDJJih|Ndq_} zABWF|6!Bv%tI#wkg;cXad#PKD8td=&_@Z49s=NfsZy64tsNI8Q0kM!bl_yXub8jvj-aEdm1VVWyr7&osn zy)h-(?T@sK!pRn`)Zmag6ynYbTDHTd{%p_B-srox!feQ@mq|d`yrA8YhhIAuLsNP{h%$w=;HHNYl9qc6hp_+&g#dq63q!SGTh3b^69^%*slu&F?cWDTQG0xZMl1h zh2bCAt+o_4yU=P@O?=?FPSI2}^GR&_%u)k122vG~$Gx&4GdU))nxXTx|;hj6no+{{Akuf;rfSkb!A#PV!g!&*Ya2O6}R%HRfAsNV&n>Zui8rt zMV$62gy8)()$gEjV;#Dmj4T^O$6LJ2nZ2qI*seoX!tJo+RjFP8+Yf=@*=vy^&Nzl!}TG2(jU_(c}6f@66+F|ojrt7{OH zlsko(hwGA-n45NLd6UuZR0;1fz4Fl1ftvZIbQ=r zD~wi7Hn+trq}j|Pb0feGe5yjyNHchQKbNEN%pt0?rOn<_rUKLYGME6yIRQ0!;{~@5 z`+@u{kt!~T^L5JmWa$#7Qm%+t5du{XPH*pekKa*gM+CWw8lc9o8LW%w;2THGPD}&% zL6xfA9#*(WnMz_gd>iFKLO)&WB;={|@4G$!R%5@Tsw4IT$cFR5z8>y<1Ia+WA?GnK z3Z&-rfao4qJZwrV4(t5l6P(@TXEwOLyMa;&4ye?ngqG4fmClmwt_F*Fpe0Li&lpTp zzX6FcG^as7&iWoO`hDI3_BGtAcFP$?Z{uv?eR+5dQKlM~IO7qwkXqzH&BuDoTV=YS5 zqqX7bTr=O6&{3~UF7%VDoIAU=7%CD2>%z@`CFaKWPp&E;XPe{*!wDAt9d(ETY`fm|N z?9Tyq?YW5s;+~#O>@SYDj@13bCm3jR6+pv+fpo6`2hXgYn3Jr(6R)vB+;@WhK3xYy zKE)nc zPYYa27`=@BMwE_hz(`>D{%~y!%`2sFu^nFD-vq0~C19ET8N^cZKhEOs6pW(Jr-JBj z1}V5-5C}{WY8~t3$U+)`8Ww5lMZpTH>>6K7b}Z(OhdWogdU&_ z+Mt%^Dh5)gItH&wm#W6D$`*AmNP*Vj_)~d`UNi@%hSerK-7qIHvRTN9dQw2Zo8qVoBTc35hD0FW?t>?Y6Uat*1!}f;a!5Epk;=aY`UM>fuQ@!*lzy+0bv@bgUuC{;^b^^&b?>v(ElhQk{z@pZy>}28wEH0A zKdTp{=aNX@P51Kle?%;blOneoiC|H@K4=)OAC*+H0dHl^a0wvGP$%VE@tcId({)yl z-O;&~lMzNj7niLZe&)kJIbYGC)99!^JM<~LO3hjnssSx||HKz76iUmc)y9|JIe?Y7 z-{2A@c|qo^?j|=IpL<2dpDA)6<2IZtJmy4|B%6U=IdEhA;eM3N#P0`cA;*!(q8|3> z;7OJ+E8kjbEy3Xdv$a2Qg5F9YK%x9zqC}HLlxe6yPAHd-r7}W4bycMzsv5eb!i%aN z6F>baRohC9GnKIUqd7cUN5eg zG-RI33+n$S$b7%aGray=kQHOwux$Ttf=n{x|18Mt3aS5Jf(*_6Z$U;mz&copX~#SG zp!lwXs4ACdE*^4~nAn-XH3<9e;O~00>=Bw(%Z7|Zq;5F)o!$wKKpF4)2Nth7*F9}6 z{5(*kAQ*u?WzLwpH_7tPSsCG4%RFOQ9=!%r)6IFhrKi*D5z;iI{`QsTn~@yZM#;NA zKF{}=_`w#tqH;yCShQk^g7>j5fetBZOd*bkgte(Br_>4M3D6d#;1knQYA7&l7qq$l0 z_p>_yZAWH*)(UB$508>i2QkHmRio+ToiXz$N|QyatK+CiD8nk~Laj>TNo;vB2Y;;@ z@lMei$fT1k4S=2$SS~m)VeIFJVkm^+IIZiRtyjQ7nQ65H*W)Rxw_~uR)&v!s{z`10 zJhbjf27LWl_`Tdme8fgrR|U-l3_E3XuG-YP*MO8BkEb<=`c=eQhy@$JMys$}z53;V;s0z%nG-ht}lzm1y=&R@oD z_oEz`ut|MtwsQjEDir}W(6TthVpUedGkVWh;I@MOp`dNq0U15fkf#>>dKTfUx_ov1 zg1lfeUt4$(fZV3Sjx!=`yjpf$N!mc2s@NJhwURWW6nAPtT_6K9M7mTN zoi=OHuDZGkA1BSU4F*P3RM08%8>Q9baVgzIE)YP&?`bfnLfb(m=s{KnYCmt3pD;`jM#N7pM`P|m5^s?c~W zg|X-(4C+hZCCV7jEuyt1cW21X!5P;nPWrSpF@W`XZ6 zs>xBaE=I?-8~~g`et8z7!%ivCHa=kgJ@9wzZt5yqV~r0`22) z9AbmvS~ehM?Z@9E?DOG#?|?9&blRE%E#MdYU#S{LfJ^;rmG|ExfXV*^Q~UsTodDc$ z(IcxsZJa|%uFPvyU;(fbCb-v`9-3J?BAba42QG_HUM9)VEXA_lb zeWUIZ#+5640Z?JIef1shI>;8SM&K0<=W^K!RgPki*l!7RN+}8$(;k2FqwBfF4Vu@A za*J9hhVMmJUrwlMzTR;5g<{mMnxWopgk$s}3CMB5SP6L*fh z0`y6W`c0cd6d?#93d9RTE)$szCrsb+9(6&vkz2y}~%&C&7ypi}CU$zP+5*$Y9pHN0*?NZ#OvTYX6)?i?25W z*VWVU;p{zb_FWBa8Za38y2m`{%T}T7ae?CGR@Lc@P3{+ zgBgc9lAOe#G(r?=7|w(if}#x2`j&@phI(s%7$+pL1+doO7F*mNof@b5+@!cU)uj3ASp}@r5=-~SznY>>Nx&QGmxYcD$1AXp{}%tdM}P3&{%r>i;NKQcMD&aMwYLA8e9^PJjgw6YCm1>y5 zbL#{t1xh>i>^!8Z#`Mc%uV8AALTgI#R;uvHJ#6Z&u0=^54$58p{ew>+ zU}!VF=#I>rUbHdn5U!Ny7za@RlXc`0jimfXOsxheu08%ldfR4$ zMmP^-CGn2eF-l}`Et~Z!gZ=pu?mL?_4`_gK-OJzv;U;W0xjpiNd@Gm-I=M9J5Zy; za$Y(%;qTfwjZdR?WXM5}O=!YioTK)&({_Hes+aMT7rn8V{n_AG-|f@5f9nnN9`fIt z@9+%tg48N{-7m$krtT-@O>O1^Z;$JL8<{cXA!%0r_;cfATx+1QMax;`+DTe?55reV zKk@5$TmXTJ-msiq@{_ys6RYh`oNNa^ZCv+6t2FhdOdQ_jHupGiksUjGUWWIuEmm;Z zazf(=bvX|2MH_Zd(1LWfFl7oooIu4nE8v~~EIv4Ld=ZIBPcPef#Ge85!sdAU7VelS zi!q;h`wl&!WwGg8-|8zdE{?_NoMCx*GBi4qRu#Ecp@%Kka*sCIfJrk2J+*K{A9CsH zwsbKWGUw?6*@OM0t+OE+Iz^Xn&Ff@d6_G_U*%5aMV+jsE{HU))xPlGUlp~|nZtY2v zp_)knt4!ra1htQUBi{rH{{l4l=UcyT>&Njo=-4}rh(@X-@4!l&G4`LBJU+29j+Ke7 zL3;lO_=Z6I7kpzIb}@$va%xR}z?&{c)sUj}08#sc0%1539#%S=_`UI5SQa|PMsEMR zQYGK=`e(h}ZhQW;7im~=O_Q`t5lH~|*7J7GGk5Gh8P=Ny^1f8uIk{7ZAjWM6zKaZB zO9d=!^+x&#UNm-_LXJXc^lyeX(7Tn1hK7-&Ez=Og< z>)6Q?`6NgPs<>X5_V?NG#4s?@HS5!;|lO`vM)%vuWH?Mmw13D(JT| zHRNKGucF92X zU`t)lf1sh5rH_(LS~BE|KOkg;& z51sXL3dS-iA=NLIPxFQ(#mK0iXQ{)M<=j{!Sa53Bw3qzx`A+ZNiI{?@r-6p}0J-#2f2Xprc6;m( z1F`{cc)*j5P5+hN2Z$dT^<3iPY{S9Z|7&;>kbUCuiB-D)&s@MQ{)ys!0nPwrd!QMU zcXaUfGMQt#%Z@OHe`uGkyJ2{A{|ACUbqap*d{ z{CS~G;C6cR(n9Yz^z8iE$u1ztc?bqy#U3D^373D%9+cbK)e7MXc^+#wgO43*Q}0CC zYX-1bkpvpHqA|2jq{dl_74IInOw_$BN2|QRTUcSN+sWuacV4Sf!OBTo*9jZ&men&` z&!9EX!S3)6M*4r_D&K~KmF5yv1nyVl(c-YdH+uYK^+%vf9)|+Mqyvs?=9jFAiDeQx z%5Q!wW<#Uyr&mdC7x|XNZ?@Db2uUiMxZ~G00-@Qb1?kdzoC{e-F6b%eiAz-7}W4LK(s3 zoT?(Fd?c1@1B{$k5Mfh)g|!OTVXYikx{8v_ii!{keSR(hu%+SGgb+sxbMCJf?z@>O zuW?^z)T%NuO^YSFO700j@3H;g6GQ_ILPp11dhZvE*0uFokW{A)mCy_IzNj!crmj_S z;I7h3eF)#n*n62O3?Ei5^2;pok9IFPSHBc<%#4;AD*bkCKK-(lL|hqdnrT{NSH7Lp zx@#!2FFl#F+i~uQY=?w3tc(_Re+#JsO%XHd_dK{C^pab_{t8>T~S z=ns90sjl)+lyP_U%F{bZ^~jqnlTzPkLCesOG`$nsFx)Hi=g2oxi(pJ&#oV&ixYq53 zD%lGvd2+AUL%uROtF;F&|9Je};d1jF*~R3#BH(p%fA-C7~VZf^lE{Gxy5q0hZ~*eO=W>!gN6jM6|)z$`3mXSi$Er|I?^N*QG7tG z9IA$)!CC!Fnw01yq_Da?AG0COoV21Q`86O{keuR0;K}p-gNwwU_j3h9iefX8MDNVh z6AUfU%>uFrRn+%A5_>Z0+-{5kc)gn>xGJ~4gJ@RgXFieHKiNK}CtJo+&+Sk&P-kD@ zu~6Ww#eKmthT&_*RN5_)yW{NpNVU<;BBHPh#g{vr2#J(7z6`%Kn^71v3#9o;n^d(m zTU1e)iK0}WceYA;OhekB>qRzuJ%F3>DNvtn6pe%VF)M37vly|fobw!y@L?IomuM53 z=fiPET$zJzV0Pib)bjtW;y}OwDo%kRK(Oa;6=&o8w~8Bu(sAsr1dbv8Tg91RWjD55 z0vA^;&W6VFBk;I_0#qC#K*hBW{C5@S!1wf*imNa9N5#=`P$ngk|D)mZs(&Id)R?D@=hKbFF5ubtU|AikW;M5nITcAw8lUSYN;b z=>;GlM%#n(Rj23g3~{!F=ApDxQ_A@lJB)5>92F`xX)l&fq9#=SmZhOSp|gS3^Tl?U6u2cI$Th1GgA4` zdtgvn?7*NUm%^>DS{%n<4y?|6|!^YqRK>PSS60Wy{nN&6L*pt|7FbqMCNDj=V!oE0WC%lHPLPEZ&8hxdd> zaRPknHcDlorAa1I7e|Z%lGZ~fLdvJ-^KN^ih)^s<4{sUY<5U|9QW&ZRYR^8wY3zubyp>AlSmgJ#=qx>Ty7k6&?Ir#^a^j_O7VS{wj^-KxEDBBoO$RzIJ z59~8|6Ak{0W!>RpP`*j{Hw&{XU~AstxayN2Rs1A#7;Tx7FpyJvg%%xl8?CJ1v9;*4js!#tYHkhJ z?sT4_Sp z_>XNS8!SgTmbV`!!apT+%w^rWE|xe2$mC2v#V*k`sOAiw!w);VQeTR=>~}qle$FI* zrPDj_k=4syp-9C+jc>&yHJdLdO~M1o9jAPB)0W`w-PaWN3?_{j4-D{QBul z#rMdpE^tThEDtipY2zU_UTtjS_J9y52ufiik2F~Ba@`HK9ko8iQ_b&{LNrdS{8=yKm5FfUpi^ZnL`%iJsG@!A*|7271S z++;AqM$j`U=Owu|w`SGhjiC7bp=0ps?$<{6K}V(I+}X@iUVl4C+h*ZoU%e|06R(EN=9h&tu7-{dOmi3K@m|ZuSd3g?sqP!IB-g>K}U>;;sqhYPcV>D1P(bTs}VMtvXgQtSck% zZt=AH#N?B1S}XVSSE5aSDQ*np{%E^+1&z`C!HJtbXzw@_sbeQv9iqEFv;1@EjodlQ zoX_N!nUmQ*pZBSG>CXr*ia_2+xnGhfA@{LuJ3;*fBR-n8RvU3OaU9p2P&sY&-`l7l z6dT{DCc)nj-r9s2*ua!#qFn6+n3BoU&e{?B-<0$zpB>?f@4&r^mZj_c9{4ylx>`74 z)$<4w_Rp*$fBOcrMi!fWGeaHUtATqG4D%`vvCr!3>=xxPn2RBUTlcw+^@-M_6Fpc5 z@u_P{@>jjxYTs}xh+X(7ZY7KoBTYsCBH5+VeIrQwK1t`yP&AhKQPWh0Pk`rE`O4&P zzqxmG3`;Ky)no%XP}Fy<&_{xM3#=rRkUk4N&C8L4D(Xj!qfJ5;?4cjg4mzI6CsKIP zp^}vAu4mbw7Lvwke&vbk_UD1#nO@+82c+Th7PiR5fM|h{Jl+1Shbb}OGgjXj199lQ zm#eUcUv-r&+C+=_UtK2c`-rfZr@QSZn_qgR{)}#t+%GV?L(fS4#%U=B>X3efXA4Ka z>QJ<6sMM1Nh1nr^O;gC(l9uOwuxo4}`rxRDfi2(cdoJYruCTxsB%5fP#G_?OaDP+r zq5U=)ef9X-0eT8rF+X;L&cH{6G^}>$VE)CDYv~#Re-lT8yAbnkB_;lMj5h$Z?ZnKOyM>D5Fk`H#I6<8SLW5jy?7QyoP3tv!D7${nBm_)Z?QdchZ zoX70(PA7dK=Y=ZDd(jPlX_QvtqnuECKfR4qz!~z5t>Jg{FqlpJDrD;VR*F_H`fL-* z%h{9sq@Iye5hcbhEfW#=SjtB%qXAn{iRh@(H~iVy1I7Z$mnz z{}!Tw^uv6P_Nzxc5z6Ko=3Q$xFu*^Wp%_;3W~RE)K^vs>yHKir0jyA*o0+Yh%MMJ* z`#xPsmUjim{?AIsh}a$KMUVHB?4>Wi)7m)PnK}ricmveby@I|zUyHzvgw&WO?;;SmMQ5XsWy&bC~E4^j!l8AE_vH!2F zw}=wnKr_Y#o<1o(w05ybxw(%J2NEvVFG=apG zO2~VaAvHT(-Uy7#93bAIRRWfK;{I&Kr5fv%(O-ckW9FE{em{!>4o*Vt_ zTMo3Pz>QXeVIG8ekkMu=1_pIq!h+g!sC5E^fIGsrJ+>P=q%Vqdo`?!O^D9FMUzJH? ziPA>v8k_awM~OOURuwMXN2@?#EdBF1X2ff!6wrcQEc|P6Rls4}D#FHIHfo!%Yebdz z#IGquurE2PDYnOYBb3uVjhL(be9NWE=q;w{wBQ;QH=RxK~A-)eai zU*6_6oG=na99S{uEio3NKFMhBedHLcNanplgTNF^WMQ6H7D#!-VjZA)0U8Zn3k0-P zpf-^@bB!fdH`bAQYXT>O)siTdYjr!urD=72yZp;IbB=aoPy7!q@_Hm zVSn||Bsr?dhUTHxjd*Xp;}=tPd{z&8xCvTMqcWa&W`L(VvFQT3NlSFlwQaJ_|JJa* z<~S=!{aL1$Z}w8v*#ezX^rrs9bkFdcq5%RopE;X68%Gm8PL_XepZ!hVR@+H5XLJ!J zah2JHKT&`8_LU3iG(suzLWxbVfVRoo^xRc>rGzZ?--u(+x zSIt&4ys3?S<8W*T>_tWYkhf5*#7vsHTKbm2(`ew%4Hy38RxH`K-<|*T>#H}XC$D~e zeRBHk#pU_Cch^5%-<-dG_wE$2r5xPAwW!~{b2q`fdv}wSvV8aM$~&jFagJKUB7+>j zI@OT(2RaLGJIr;?O`9W4z>olZh3!b=6w$vC@{Y_z?8~7QrI*mHvy@FleJ`*~ddrM9 zLPzolB*I}nf+!`$dxJ-Pg1z_dq_{^s7i^l`_9+Co1}x1dQFgT>pvsmyKMJj|I>CnZ zP(t5eokIdKKt;~3F3#A?F{+OjXNX+AX{)x-^==NUc%UA$q28)JMt#h*=NvVYTrc>x zp0+*pc-TDt9}O>1o4L|?xWa_3-uu%3@!!W^hSB_e{H48h;Y9v@Z0@r0mkvN;3t9L2 zru6^y8c=6{;5$9zdcJ?vQv*9%24W_x=8-svLf7SHoSOvOab9e;{%by7@qmB~r5WOH7$ zy#(Xk0Z&N0%!O9l1BF4ALc~L;@D^M(C63W*220&+FfO+X_0M1UB_-kUY>9hPBA&G_ z1nx5Rc5ke9-ZwF&hXe0)fM~F|JUEQF(ay*A4iiE_dLgXxGqowhbjX50@39%d8ztRA(8)l0+k z_tMnnfBROTi-}{wy>xMC{y@R#TBKL_5r+9xo8kwav@>t~Y$H@pZpXE6Tne97W-j~l z&tka6HsuV7<2lB4gt?zvos-<@6xI-5@kAuRF3CGy2<0%`i#+31|7Ec9$05NP*FwU< z8CkLASY~^Y3?){?S;?zfW=+8>X8FoYS6e{|S&~mLT#sIT6Q8cISbcjHzqMC8!pB;S zP*>Nvunsujxo18&l=&+S!EeGj8JpU2EJ&sr#!T>A)H)eM| z-Ih~01u~bZuAtZPL9T(OxRY6ZIA;HkRf{2_;dN)c?!9CKGDC|V`hpz**;so%^zm34 zWcTxAfswLcHe|qb*gvY0iM&6kCOY8n23{?V;|v`)J-MT~XZ_(I{x<}FSS4m~r}36P z(T#p0sIFRIqh6zPea|@NOm2530eY)$W^?Qs1SEZ* zem_uWteY|O+DosCCbS;{`rx9v=Sz2g`9$WzL`4aH0^9cK#4`2=XKuyR$>rI$mQabR z`U9T|Dj}|MShKAsEa=m)8hoLhQyCGn{j8osvxb_N{%%GaCj2UX)59?YU|K(e-aBb$ z=<+vPvjoKh*5ibpMs~|GY}ZH8Q9_CY240%QL{#AbqdhLGER_e^wkm-R7_>1TYlmb8KNP2_#v&-kpY7V2Z}Sq1>SMAvQ%`o7BnbA&7~M`oWkudp*nh+7CAFBzj4ebp6Rf29!2FZI z$?@6Y6w*7P`iI`(l|j<`t)S5zg>5GNc|xyOmN-ig@1S#$RzJ0e&g!7Z`?aov;2=@` zSa85O{C|UE`TwIyLoO=-1$V*k=zSkbi9SUlX-Bf=OX7+NtdO&#T-BgxEarZ$4a)rB z&e*#Z%e|vD?zMNJ_GmPHtf#{fg4P1*w0rPxd(@&}_6X%Ixq~t3Pj_jdiBG%r--%_K zkL-2lRo^tVc6LFl4)vcYsO%{qjxcvttG*MyODfuUmf?o9C0=CMsHlI*Z%~QEZSrPS zq4jN3`Xd3U6#$2&GQA)gTCN+bJ(=#zj$Eh@uWUFKeE`V#bZp0!1wjl}J!Qg5LT}3U zI|yk@7_yF1WZz{MG;`C(fmU9Bi!1)#<}?L znZ4(AcY*tk4N)+sR=AVIQ|B(*Ij3Ca_t&@LKIshEOMv0=G6=`*`33J5(*tWjs5kN&BZ zU@o!gi236e8VmQ*e2LD5w)IuWbL%ou?@#S#J)a$acKq@SYY}0zk{gGsxV~F2$Ls^M zGkDoc760xt_rIUB59|YDSL}+#|7-t;ePAQI32rI+_siHd=-KNIA@i6HFn9?D;C&dUB{1!ciCt2O_!cOks^U=#grd5~Rozzwq z`4u>LxixhdpLogal6e*;h5lL*ju~X0 z0DqxCC4t<+b448p?I z+DcMD0X_U`C)eF_t(Gs2*$G}a1F>=f2p3C|vMGBX+HkOY(8WUlaG?>&S9#UY1&8|i zAX+uy*k4RH6zi@IQ7QU!qE3W@zTd=g$_`DL!T%+h4c* z(5}KE;R5JQOb*Ie+uV?GQ1Fbb8(?Jpl$E%5DfAC7Y6R2Zm5qMF6Or-82q?{N0AR-+ z1aAa?e(*UPu@{H-wkW)|6zSbj{j4hEDpu;bHRkNjnWNB#*C}1Sblo9^BY)!xT)4Hb zxbK^;a<6z8lD*aL?S;D1c{ki2O3G)DUj(JCu7heX;RE-FQIDd-UevMY(Os0z#mN*} zS}iGEK2~*@%eD6-U1qND**ytF*mu9jiuZU>$M%PChCwa|5l?i11<~u+ih*PDCWg!# zv2V4~)fZr$^xrm}3)8Ab4-XebLsm5XKxCm5DpFv~n2p#4IGVnA_$&R=tcu-LP-Bw^ zxrKw<`0-xC*n{VRGL6vXrQ?F9*m(AB*bdipa2(y|7;J)y(-7S@OWGdU3p;NU`dV+e z-@Q~jkP>~Dm+XSGTXO^XO1s|1`0YpCMZ^om+^N-jx9MK>i@z=R4v%C&;efAF66!TL zi>=VJuZY|cnriP;UiI_#(wqZ4N}IZP)VV0DH_{FDDemBS?LJXtY0rK0_X)@BFBC!d z*>d6jP#4M{((e+h8gAP6y!-Q3fTjZ5j?setg}j7q21kgiYQ%t(Q`DphsY4QAh%(-P zJtMor+BPy56{=Db(W$4UBn{&8V@nC^Y@sX&KlFFR3)-7B*{!JeT!n7cFC}Zu%BE%$ zUT~G!o4J~gS8MzjQXaD(`wu)~8iv|X99op0FO{k7*APF4z5pkM(MOg)`VXwTso_)Z zzaaqp|Fie6%Z=mKq5!;q=P6L0Q|0b#OP1{Jp6UMfNy@e?w>`FO>uNj6NgxuE&>{&A zK}xOO*;VI3zVGGElYE66FA^mJwA}4Ugj8kP6tM^_01NBBblC)iLK!Zfvc}4Nlx3Z? zG#$$~L=~Xwn2WwkTXrv-8A65gYS^Rss<53ab9+cVy)0fBV-=iuHc!fv`mhek+KVA% zN5~ley#w)eu6<8^T}KVJG`h<$PuI9Dy0W5iH8W?e2>44^HTP!Kpan9hlUGt7sX|EJ z{(ho&<>WvxzKJG8M{k|cB!D+cPyr!w96=Bhg^owGIJ;QmgF|+aW_8qgfQ^8va9eI> zTEyAJ55O=A!5GgN2Ow11#bU!6mABYq+^hg5$nimd?8wrKFA?m|Nm?JpW6ojT9!Hq0<1kelx3*Zw1s3T;~fe3ajeIU+rJZAPm_}1|bMr zuPY*2nE0fXBWH-1m@ABMN&a)aRA3hIEaZpukcK3HV{|A7w0_f?#X$8%+1reNy+|)B z3*xHOL&e$CrCScPcyrU^)c>q9h6|RnRh<>;c9FR%CWG4VMOMBIFop8dc?vx3`0Sf^&+*^oMNv>}OO& z3r%8PMzpI{Z)LUgv?^pJ@<=&Igw%@iFht+!UzK!bE3zOFm_wmY;pevsy4e2&&XY2v zS}^m5#4i50fPvJhuvM0x#JW!OGH@823(ksu0(l}(tC?+0kc*jt&ZSJIVaS+sz1 zcU+6Oen4DIRSrOT@QTg>F!j3UIu5?Ujn6~eRUL`c13kw>P<$9JM}P?LM*R?&xE3{y z0kQ2bzvS_ppz&tbg2)65+5ON)vqNgb`T-xV*r|)`{Iy_03ij%IRnWmMc3|KvWE8si zOoB@$E2)p_ohu6VYJ1>~$eF~M0|%+x&T%;j?o|A?kjVsw7D8ZTB?O#5h4!uIXhk4q zH=ydNG6MvWOzk-$fu`)79zdMH5_^*UxM5p|{*Vg|7^Z|)2kEk5jz`s#`{{Z3w+MmD zhO(XeD4>{zIwm#_Im2{d&Z&SmCocR(JaB&6k;8l|kg9u6{1C)%xq^zqvX)e*5%vPV zMFCli@2xF(b&Ssx0EhnF_`d4tcyj|0%@~ZjpDh_%%4bA$AD{ zF4b9GS-e=mnRpIdO{f60h=&e98$lZ|$|3(b2ynP5KWEa6u4s0o^b)-?LN|YhRX{WUqax=E(j@M#=Pwi{r?#zVP%)3LS~e(OhEg zV-`tkdP&XAWg#I~LePR4OA#pvq53^#gKe+T6nk1xzgeonYi`DAD^oU9o(I_e1l-68 zv9DFb6^K2^HZFH9R=W|%OzHqMkg(?1pJYI*8Pt5BH_(G)29n(r_S@l{T>%==8?3bz zFkT-j%eW>#N~TnoOlKI^E%TWAypFngv|jABFSp7QH8n~wuku8!S1wP)e~@YAUn^Vm z{0(jYJ8o#6a5+E)1v!$IL0!^S@g8wW4)K$|@-7a?7dx&a>9ZPWEQT)x->gkOUD`VC!pEMkds1m za&jX=Bs3sBpsxTZp9GM30Ja5w3IA%#g=gKuEY+7-tkYj#!&8Kf%$R=qRb7f!?S^vHA(trSEUm_*WGDCeIHI3`!hug zz!O}JNWe?w9i%M^hbXi-k`5z^f~pvTo(%r|7eSW^;FD;hQQ0MEqfy=ph{u{rc$K+A za>y_WC&F=ARIU&#RlFpoh9H^y?7OakX(C45O6Fi?71EkLiOJB|bP6=hr)0*2Av8an zlVFOyab=FfNkuS6^pKbEIsA$LNBgtFka}X<(pxK{XcRfZ4~kX+^l={rR4ZapwJG-O z0}x^R&pJy5%HGb}3EIl%sA7%L8uP=+D{f*c3y{m}Jy7&6fHu)vA`XYGXoeC(+r{3i zrE2=}f?^xDCIev4E?%uA(**C66$0clX%JR^JB3(+O4q=1ekczg;oqa&2($>HyP&^0 z6)}p6Zzt>a`kirJr*eF=`-~RYM2)^R6}c8;QhG0dAHbpiK6F{%3GHTl`15(dJ~`K?G6Pf%E;6XWjZaS6{jjgUn=Pw(F4KIgYS@;V{3rdrn79p9$=*&W|j(6-=| zqqe+=R0O2e70RH_m~X3Yb{3Zbly z7U#RH)oL}7!|msve+HVlwjr>Qh22$P9Mb!Gy$T*rZmxLH!(?sUjg@IN>e~JO>`n{-s!8 z9M}2QTP_~(@8aUAH$KF1qzrcx%#@jr)ps^H zQzTJy*NON#KOkSkHskU8DNkq~AJ11=FFGDbjx3#Bf$asxP|8v-shWeC3aonUcU`(?D)p1f;)zgI02ogt1{Eu09*+I7kr9RlHh~guU7X3 zc_RU!Aq+yj{N${$zAssz=mz>!6xCot4=eQoS7ZRwoPQF{l#3G0 zjF%Ek*Jnbs3|&x;69P@*Vv_fY$&QN`jMsbiQ-rY!ZshgFkGaWt8&cv#p%_jACVdOC zUko6sx;Fd*i~%OMr{Hx=Yjf#dr=l5?{g*4_q>a57Ea9Z9ax_yn{s=Xqz6w#O2KBTL zn(9NNT@|ZBO!2Nd#=)ZV36g$N$WUA&0bmrBiv@}?7OBN_WDFCFz;`LXWKnFUg`*g} zIg1lFC`Z{#FGRrzTIg*`J6DJg?fRfu1e%5LzhUWD|W2QQ&E)XwEv9 zzz*;X1r)qFl|zA0+c&Q+Hg*I5m$}mh=yz9 z5gXk_LkH7Ir?jy$4~WPI7^|>MP`cJ;Ns&h}=L*@)$~aoxyZ}rnhP(p$(!msVPuF)) zh}2J75L?NdWm+A^;j^bb&(A!!prey~6ez`RT&7T6aYA@dDR;z<#cVU1Sb#B&xwp7< zYc8TS%QePTAc&^`9RTP!3TV9Y`W1G?;nTs?&X}zG*_|=DpgljzOKCR*y@Pgz$7~8C zW)$etD0NY*OaJ-dkY#dRoP@Hx-YYI+yF60PYa%L1dPOcs@!Eq7DUn*A07*i$dRgcZ zamB20K23Dor@$sw!~}jA=bwrF;0!F3TP_D{5PYh`#%h1rCUb8N1N-EzFgHP#)lT}Q zT?W)+z@Eb)i8S)t%Jj1-4}(|jL6D;=XZtgvC}sWEBQwh$0x4I`vI_Z~W5Uic0qh(T zHn#8Km~bf^6BsAr$egAb+Gyb6Hqs09Dr=W*B$Ql;NlU2$G&#$Z9LOa(PHd8$l9C;D zq6B!kF;PnBATC4h=>?pt z#tR-W>BNT?;uIxjaSTjV<_P8Ajs+Q$Ud#D$1q3DUQEP%+Xs~lsYqHh2lh!Q8u7^mZ zZ$yDh0U5;+KPKjGAk-Lpv$|$jL)^*SxDV7ey)&}rfn|i=3FDnSkZg;_Rp zukD(VVmj2lmT}WCz#$hm(pEC%t1(1MSTy$9QZ60JOM?Vi2gUtrbzitBn%osi_>96) zLyO97bh z51bcOkSK7li+S2GQ4AK*kb*bjVb$^@GjA;3%SA2;76&mn1||bvzENBoC2732TNDJy z3!TMx!zAYT6Pf=<3Bf)#N3V{k2Z=Edeei%KZ89*-VDrOu%VDeUMtDC+IWU3 zG1_*FvM+884gnB_PD&8rY+vKaEiGLqwmq;TN21V=LV2SYE}lHKs`NyB1`pDazlJdP z>P3|yv(1NLhyw2u_&;y{`k()-y#4c=H-D*BKK|`L-~6@8|MADSe}4N<^~Zm{ef#Fk zUw*y0=-!?G4Zr>8U%bejiogE(<}c{{Z<;{fzWww6G8$%v(MS#SwM#~({*FK1i%}aecOz(E!;~7TS2kcXM6OQ)7%YG- z)zBIRM^|#{rIPAByE*_Lr;UScX4P{wU&%$#i_J>hnT^N%GwxE$V6Mw&m~$7#JjGJN2{jGn$ruu@k&x*!N4!L*o|;6tekQf|xN8HZ z;9SuU<>b)SRIako2_BxCHykP);;_Z5F>>7o-%3VXw99J%eZ_9%f{3ya6E6!V8Sq>y z2px#v6rSi2dmM09Tf~0p#F#dVW#m~?lnR1IO!QQvm4Xr(aThGDLUl<~Ro^niLzXMg zQU;U4S@B{;o^+;Oq3Zc3IHD-1j3aE9JG-x%iF_vOsDHaFH*BNpeJ}Ce&fM?ma#9*f zy_BanR8GY)O^}{6e5(n#`^69$UtldPk&-gRnbLS-SYnG&fJ0CLxOkT;U8QnQ7^0Ez zXcREHGDgM?+sHvW&K2_s@{+Q~6a>g6Gq&sh>VY1WUL|<+3Bb1|=|(UWS`iN+TLc=X zswW4LM-Ra8t@4MbI_fBo$%jr{?UE})1H=}HC+G}_3#bQuIw2v~q(L8AI^_n!09sQ9 zf;$uN;T{0%t&C(!FMlR>T7y*#NHm`CFkS)0av)W!lLx=}&K61<3hadkU2Me_!U8hG z6ccGOR^Ppg>oo~u^_c^4apAc)6d`b~j+E%x5dxY}#s?WkW}Vv1QnBXAB+bdK5<4sj zzLH@kchDMsgL1p(c4zy6c(IOehCG`XINY7wUDC9gNY<+sU*bPF#2crQ9UD*vcK3O_ zF#8PK5p=|jCMR>&xfI~>coJ6Ti2bJ+He+~F5iM%acsaU*2iha3QO!%JxrKR*7bk}c zo?Km==&X;RX7NioguETar+*Sxnr2+RmQ{*vAy;eA;P~ zkAknuPyge;7}6MoKUMxKRdVuA|6sRnz+T8a)s=kXfGvLMvA_OtN9>M|tg1jW{fE%H z0OW;%R`d-3cZ63g!nQcZ9FGC|qRf!8@V}(w77UT6?YpT`uy`aCpWw$Ha(uoSr3>|k zL{C}E=_@V#?ENiuK`32xY{WHt#Qo$97ko;gijo8H8j! z425YX@NxubWHDyK4^YL#VOK)p7fkvBNpO1*AF2t|6Zt{{BH!i%gcHNk|LFX`bAm?{>ieBQL}ON+%bS3m19fV2LF(*aKpz z`Cb^KkS0+H;@)ROUviFSBjpUOT7D`tY2}1P)x;*EMBeX=yU`s|87~58F$#M_Y%|w` ztm-%gBq_TkBAKbNAAtbI-Kl6M7n-;|CUAxf>;1QH{~*jiFfk5f4Y6dvZDitoD4qHZ9Mj6W zrtyFb?p|xwYl*6y++A`YN>(59KXk>$bdz4YVwH!89nmDcs$ohy(b8kfNpfdq+Do@z zd0|s&Jy)q&NPu|A1IK{bc4w{0iN-?mtKkF(cEyK5xDdL&gLpQ^kkff33_F*0fzz!i zoo<u!Jh2hPsIG#+1bJyD zByDUp+T2#W?dQmx!AO4fPsqjl($s*kzI& z^g>|cQJi^8`Ue<6Ozp-M%ra4YFwrdmn*&kk$Q_5wDIc~{AqqCsjM|MP(Vz#}K`Qu+ zely%!rn({l_JAF$Ib!k~-5PPGRfWMcR`A#p`HL`>`eQRHEdo5>*a7iqorE%{9I8{%0Y+<^09$7k zyBvWwvd9bt;=()s>O+soFinV^$dCOr9*%DtCH;$Ld zCkr%l%5E@c#{21ea4{l6#gxjH&o7#RVjkQLo*Cc`o)_c|UV9)*wrw#Y8m!RJYZ2Qd z9u6h-lVMxtTOkf-vxw_QAxcqINz=@ELc?IyOlsgm7kY4vD)BHXN%YpCS@?G8>k`D- zFLviszwORvl7E0_X33mT<1wmu$qgse7-lBpeLPM~0da8{8h9Y58%*LW4*(7`mGK3w zG8g?uahVkK)pxLk!&G8%`#?yWbF5jZGu=YM!(v=t)SKcory>I~r8@WDj^35(CK76x z<(0`C6a_%$XN5!LfZrk%ECA815TjZgKE;dnQ*6rsAZe&ES<$lm9Jkb*e`P`q&)D}Y z`FR;wlET(_Z<3KjZH(@;h@l^Fo^BZ-g-Jgrt%fMHLg>!jeks79&-jph z@mxD9u!1jwbOcqaP!cYt;L-ymP^%CZLZ{CfuCiOC%)?t7uiPjk$n2AYQhd8;=?TX} z7sDp0PJpxoR;H!RfisH%nJ5+J7^4jvw&<0Y1b5 zt%4Iku{U;5`Zsf_*ORKeWSDG(ObGrh!ZYZUVQPiEtEwxL(TZ$g&e6^%gbLm>_NUvM zqQ&09^QbWcbLs6RwM#NI)TkO?x^WkqJq~M6Bpg^4U(5~kWyGEDDVuN0;wOzIXAY#) zG^y@VHnk;4Y3s15n-k9&mV%e$Rg)p$mRX1;FjwJhup;qXJZ8~wr3jq(o^JIl)pF{_ z@m%#PUsRlm(R5J~N8|j}U>v@oVwH?QGb#CsDc9Ozp7RNL+%pDymJ`{AE&i+f3NB3SV7~7Y)Xs{pzSN zhCEx?*~+GuYvN&mz}WjEXrZ+^1kdXb4sU~2ik+j_EDC(LaOCLY*xruEbU;> zGA|&wpY&a`W3(ncCxK(nu`T#r3f?e)Z*^vBpj0VURa#FSFrQ<)1oC*dEYc*K$Poe< zM)XLYjl7T%wt#{+9O_$ejzwlQ{taH>#vNi$zq~XPB$CBt_aQs`N>xWuC~_?Ev_QJ0 zt0;COCxjj%5p@gD2u-qZ;&3m2;4sP7;!4AI4ly zoC^(o)nEWc9tPiu#<(!6kWq1Co`ur*$RznQ!=)5~@)u3g9Z{4d8JEcxw|(`N^_H;TS5=TRw`?kcX+j*$&`R_*3?RD> zTt?JmxFY~PJ(6rBmTsF#Gp#Q4ufn8JWCbYH4AEcGEvl|rOr{@e&3Yx*qky1du~Ws9 zDe@@RuJgB4l-Y-r#^N-;c;u<421O!eOuh)A#UtR6rO}$l5K3!m?xd;6rOciGiKkxD zGaW$3k?#v9^6}>e225dC3rp4Uh5)aM$ENKemLn&1$9=KQ{UauLHxgAp63ETYgLxq54 z@-;x&R!-t!BhM>dd?WT6hLECASFN7qv6H@xN~X`a{7FyN3rT=@t_hXe6;%EtS#~cC zP1~tjt)?nxg<@w`@g18jy``Ba+33{Ck@k9*jk4%ueHByB|D8ptZUG`pMTs2zTZB?# zKd)vGBS?Rl46vYmddC(@OeYOYr)DMNR=Q`8^u^gZU{B4Z;e5US((x_?s|*8qivQt)ps(M8=*`<27Xk1PQ9NK7hNNrd@ z;KNnH)|vV1i7*uG)%U8PgI(;vz*!umL(UUijz|!HR8KUdV6V0Z-jINg(1IRtkjgM6 zsoz3Kc^Z|9KzT=&(j*$ZxEaj1OR;(TqF;)g$W&Zum?fmZ9=n;VpeL_H$(o4G#PAfq z@f}KcmRckuQnLlER*vo|)+^~T*lTo8X*;G+f4z33>*>JsrBSi7x5m%nu#NmeWyTU0 zD>^ONb8yHW5Q;+*EPzIV94LsV6*-WJw!)fI1&#B&_W9XK_q_25T*xosv;b603%lu( zQ>hSDS>Gid>w&yKR!VzN{mjD7&$hJxUMKl zG*J~`^fqCf`8B43+nuBS?UEpTYd4H2CN(M~GfQ`j>b9gIi63)fS#10C5;0l3%6=hK z#X`smb5xbgknF-?Jov-*`AOsEyz1K9B*)0JeS$r`3?*5##$DB(RSygc+u10D*rBQQ z2#HS|GG640_y&mjNmR_JzzSQT?TgXjq>Ka|P87nD8OIV}s2Mc(ni2CtOn;0mBOL=* zAn^mPYVsvT<$M&lSVS-BVSSCn@ZA?;+k!xRl#4|MSm?s0P0kr5z0){E**&6qWr?{T zph{dMXrz-#nFJ~3EKS>$YrE2ii?=j{%_U8D!av9M2$AL2aTfY@I;A2RjzzJaKw4n^ z0MD?4#=PJ$_QnQD{*n}fae?Hl;qHe0m1K|6t0>#L?ef~>+}GyWx>+_LjjaYirBdN4 z**9O9ykt9X!2ro|5MF#ez*Y$66QU|L7hlM1_Q}rRq(k_1N+^d65|bT-jHTrerr=@3 ziwz}SHd~dgo^c~7D_h=)Fmn4)_ZtLs;X2rx9>n#lMuhD=k)Z>7dg^w0mI4GFaXW5n zXKnq~3rkszxHX0`_@5P7lMa09s?o*L-rg(4jDb38i+2mA7R6>43-6M-RXlLnIqO^k zX-gU{||WC&{l{gWu1G%)2ka?KgP6$q&~Qc?I^S}XN*vue>K zth3K2cK}8Vi=nKlx@Ar)!9hnv! zVG)#rX0$eJRax*gA_@ zKCUMd*2Ct^IpU58Phocp-}rjVD-H+SJ@M^o&Rg%|PIN!Ji#sX$7~hbBSQ{UVbZ4Fx zY4rlob+oGxw3pvAbxQD-+z~v`YIdYaA*FlQ(>AX2 zM0l=B*c%mM=sVdbQe_-6$`^(-UQ$zw4}Z2>vj#%ID>0Wd%m{4hnh^91<;IqY^@j2n z!@NFI8I;Mcu`l{5ev+M2K?DPK<*~~SQ9blXvYFb&uWyHL)qqox^W4^T<>wU;HlxJ3 zAjCgAs+gX3(tDVV{$EpmKK8NHQMT}l%7<3@GnA8EGv95{ z=T!4gp*%q;fK+iA(uLYE)6F(BzLr}P@ZIj4__`V7>kyQFKzBKEbqFt`KhURP@!s1S zg_@9%c+ZIR%>$5ie!AmtoQaruM@M5A0~0Yvv8kHz;ED$zo-$ffJyujNH26Ej;{Hpe zhI$DT;I>JMZD3xYx;S=f!xk8qmZ>?Es+vs0}TB@0Bjba9b zy;J<@EU{F*gu#!ShM?oH9Y8#jYN;|w*#Qs*I$h{fQH;bUb8ij<8=Tw~*_(_)D#gLk zE#Z(2s!aOwq-xwxhW#f&%9T8=C)e?o=O_pe_g;sik=X5=d&N{yMH#K&;_-x` zUzbR-z3y;dd(6oUt<9smR_J%W_9DOywnUG^bQSirY-gCRpC?=>#6mU4Wskj(@|iDBhq zXu4Nbi<2p+l!;V|1+uD{aXl)aPO_@SYY~r&vGQ@LlH!*uc>)-nKsNgbRX8w&nPQU^ z4id*wb_*F-f)j?{m67p``P?Cx$!{g54pmLyl;i6JTRc380hf@CS6(;~sjZYr_drn? z`Fa6!*~Zd3bSn8pi8Hldt?r9Z zubjjgM(|2i`^=D^8|YI}fs~2SynZtQdTF!Ljn76hRM5x*kb?1y>Xap`V6UrzE%6{v zYne){&nl(r8rG9jEo%tkyjnULcL|7KNuJ4(RZ2nSOpna=SX~iTN`c&hfV12-3OuDC zt_Vp>0#GTS8-=DVKwJ`{Ntd63axGw;9i5W?stnGCWw@sQ#^t9w&E~B{gg*2&+0a z1Jv;ZCn;FJFD=`p(6TX6S1EfN$z=NaLAFWL%9HfWIV{a$Wynp&P8c{?t_&$#6iJwz z5=JE{wqy)h`2}(U_#G7i{Ck>#Zp$ruJGIqq4?4(U*F#AWQYl{*NPIES`*|#QGbW6 zsW!g(aob2$XwTul*aOT+U{z;#Cb7-=TuO2c$y zv$3qCnsCCEu5i_)@&F^FQsG%{s|Oh^=l*`Ry1%b-WJa2i2+NI~=WtZ{1t8BNwlGDo zxd$}l!e6JNq1_&bypFn&lzA#I33AG3VR}nLf=UHnr(vbP}EB0wvDM& zIf?=jXLzB9sPC18oozusJQ@6P{*-~RJ2UgS>2U;ljb7j*tNO(1XI{`r5E9B@XS#a>t;K}9V6 zClCfD#VEBL+o3xNoA#^=4y1J{KZrm)PwnxH>AxbaM|o57Yc~s*_?QU!DQVvlouBPK zF2Vf1tXjVx-*K5RaOXI_a~yw`c_`j3iIAt5wLMN6*A}{QcDKc=X zT+*+tK;r4{6MdTj9%Id1F4*s@e1nmVk!Px(&)`OZNEZU~Y-6of3`SD5kYS?=PC$Sx z>|^AG=K41%pol#$Q(G+@uEEShP4nR*+Kd$O~Uh!4PD6!on$t)4@5W2+#?M z92*3vgt|V3#cpbJY5P_Qh$#fffkPjg5Yl3KM-a?j?2^jTrxTTx# zL}Tm;L6U!gar@2!1SC{(6ml}A1I|vpn;Izp7-xu0cW|)aDVj-oc!EgaQEAj-3W#H? z5+lFVfR6%8P%M7$hS(UZAps7a@r3Z{fn`5s2=nM2n2;!-)pW6?I)5hAv*tcuOn?f3 zgCGq-y#`$DMT~hgf|3$=KfEhJLd->7b0K%Fc4X~GbxL3#E3Wm(sh36OA; z-QtDhJ5XhF>CR9_GiD(TJLn5>+JJwH$Z!#wCEJyKvRQWT<->Ggm%=IW%&@D4U6Q&k z1rSWQ$#Fm;t<-0kx$<60pQ9|9mW3#%N|Hiptu;5P33%E|{oPX1=4FwUE2=d)mA+25 zwu%ymD@fT zA@ZQ7<*kyf7stB+GWS$Pb}%$o zAv+FwAdOcdwW&(dFBsl!V>F^A$_TMeMKn~q$`VBZo>@q--3<1&CpptfK)*6gIW?Rz zxAVI#_N~#IBlG}t7};FJd4;nJ&Q{ple#K?|G}fBOyP|hcw0V_aXqM-CKN#9s`rL*# zq2SaZ))X`lmt6T}Rfxz`p}Nh5=!}YvDt$JR)$yy-U${nFp6kP4XdkxEPZ~GpRoC8T z$)b{_2KG1C8!^xzD1L#VazP?6hg^b|^-4e&`=7wMN237g+hX&E#7JUZ^^&9jwI7Fd!Xd!=cD8Ewr7`z4)yTrpG3Cxq9 z@2j4ItFVaU$UNj^1kR8@i9wgH;r2rKc^$RneL?`BKwrPi%SG?AUfHA0pNNxgDDwxy z{Ib5UVOzdXLDrWlwf`!K?8}$+-_O+bPlsw77vzs)Cz#9~likaakU(u@12RKFfNez8 zwP2*G;RD3Z_uTNN24xeM7F}l+gIft`GH5U0#_|FVEat8&rD(mjg8X^z7^QR@`&_w^ zxh(jTQkMm^UF^Nm>%ySwKjVuF-%^arwzLD(f)2X8HPR5sK3OF}M?Op{ENUu@)>aPu zHQtoKBX+UjaaTFita7N~Dbp@CXhf{WFhp}`&P&OD=^E>*vbu>zMeW*?yGw8(KyJVK zX+T0Del&;+v6h?Ka^<-UfaS8+rjxyk;Q)dDleMq3$SOi;UlU%;$V4E5~%sZLlbX{WxKh`L?Abf z5>0pkeobTi%C^BYKA1eY%@4D}OTnS=y_jh#ep6>t=?mmqsbca}ol8zt;+ZtNGg_#j z_V*)4_)W*lm8(`Uv5|^#Y|{+?oO;&#=@hl;8~}#-RX5~N-c_}JiK^BqnXmTY-MdVk zYc04-wXlopTlPocvIiIr*WIj89s) zS(_CqKhKlqmRrgNRg~RHTMX68>6FdVq-Rsk&*Zc*HT7Gc9e(ouma*H)TNCI`H|ql+wA8G*tj*8I;U}W{t8XZ97L& ziQpWwd`JaZkV<8kFQ_Gv%41{zRFnNNfVf&WVjUA?05m^SQ7$WF0ChvXhivTz1DIMF zhD;O8t<5V`x=zE!>I^AP$N=Ofo+-l*8Nf8>oJ1>^`=?A8q*(}LVRj#tsmB0EYjXOm z=I1dvZ<$O!YqRngK$Q7=ww#N{ECY`***A;F)X%YF5ViSY0hnfaRt&PM=-Wt_bE=dn z##zR&S4si6pY+XDd+N(7>HvwjjHJ+BNEns>PFf&fb{_O~YGO2`kP*z&qu+Lx99`na znkv?vf6I^YZ+VHRlGo=AVeh;l3fmfQ2%4!_p%mtv;Az_%$xzmh73zbSHk{mD0xLi~ zpAK|r73gy8OT4-vy&uDrAdJRp<@tA2Ix3sF6NnLp4gUR^VYqbWWEg?1SF6a z>h#owHzXcULKFzWJ23EP>!46>L%!8R0-z@X&)L6Kpa`FXZQy`AL=!l}Bnqnh3n2k} zvODKd79@%-S`pPnM7$z2XZ>5rk6aaF>m`(viuVfoifOotTXlh{f`>myBA8L1@j892 zlm*%2m+qOB3}zkv({tqlnFmc|B2fXouSqu8$ptSi7sNhX4z?DTjq*NVqQAOvl^>LN zt~LErNRbV0pa;i7S@x!LcY5=d?KrOByKJPqeY7p{=?h#8rnUXl97|{{#kH(JctKRY zKz0(vZs-=g&*3!gmJ{L$M=+HsRFApNl14Cd?df(Ws_y`n%xXKAiO!cRMa-?%w~F+r zn@3VfiiPH{*~T$!_%Y1AO(b{n2?X<;-%`75AWZfi4IvLqm?NQa9g$!T0~>?^9F4FA zLh|PoK*)=7+(avR->iUOm4R8i!SYdA0hSZdaLEo+Nd~|4+#e4~%rZw`6ZUYmp9BDr`q18P0f5Kky?T~puhP7v@ScPR1& z`^2WHB&N@Lo zO7381d4rVIorVi=r=XTxIv9nM`v`4Hnz%9~)(8B?I_Yd5y>S371>bYF641Z73%6A6 zSjufH?O_$(#RV^jeCgUGLcG2s5#N(U2%LAXJ7#Otz3%K5={qgb+8=X&Sa~SepHy*c zDX*oUM8mkCxIzX`ZIEDw3HWW~JJ^Dhi%_7-9#vNvKEbLjzsn!4ye-)}@ZbOQhf1aL zhs3Jz2|ypCuOae8zF(EKqW*^|_UupKETSQC)oL^tzlV7a8yAJph9P7lhn`15uCSD| zVr+jv90vuJG4iU@Xo!Xpc5D=I;Of(}TJ>X9uwoPBxK%niROqSrT*&)->{I)h9F@2Z;XWR4vaRS26hm!y_A?NH7g@-jMo9 zF$sZyjskqj0rOuROv7LEe!a$0d*nM&0G-ugiCuubapb^Y<>x;Dp-lgjXhInqEAhpL zRRPepvG6;&3mCf^oH6NAVZH*sP~yqWpw_6mf<3t{1ny4a@I0}nZ77pTXMpitD20(~ zO12a*&N5QU$~nwJ5_{BvG*tNO;w5<3kcJ?I@|CfP*JgErQEP%+s16bFk#}-;*+1@N z9xqXurKL;a7FnM-J;Cwl*MI2$!qBvmUk}y`qMTC}4_p*-jh4I9uQh}ab z5u|QkQwJhw%w0_;(oTcMP1QW;|? z#u%RmTK%tK01p2IDttI>P~sy=0MnZEqDug!69srf8Rr=rLL!!tTeFBsT)tOC^{V4m07_;0w;@1sutj1rg&{7i%2^gktflZKzSsM|@A#=g)uw@W>QlW*)jgv|_LYxJ}yCOqgR{}E%VmXnGC{K+a^QlZ~ zN)RzSR;CU#IcYu~p1e*Tr+ zx{PP~dy@~`O;$X{Vh)#CD0<-DIr>|wT8>(u;eU9@h>A|?I)4WXRjLtf}C zva0!ruDc_-$IH@Gc=<>-37-%(b{Owb1$Q!dKQ^8#OL$wAlF7{k`|7S;CWxF(kTqpe zh{h2T>@u&ymXQ%wdMb+pLsuoYO45eCxhx(PZPFwQ7MM?v$8Sl&+$Up&F@<8k(umjg z7)4I5UqUSUtPH8a7#CV1Os6G2z%ai+^wAZDh{J?dTMHN;9?wyIZzu)>jxbtCj-FRL@68fCF|Y$ z#I;ed7<`TMmqA{G`r}*$3?{^}1yp_qaFE65FEWL%5~nqT;8ZF-H`X&&Qt|B#+L42b zioElhs)?gHgR;)$HeVqqT7`dX&5wnKZx@EvT6f$f-2r`@dV?V;qQ-hXg3^|!C7!O#tzbeqJ97(jEA}xj@G#f#FE8>g_XA7<9Io|W%%1Z* z`Su#prGOPwr+NliQ(xFj+BW6YQRSqyCfrfAr}K!K{ILoyMbaTDWUiey^cKJ(?ht#i z2qpzE35iJ|ha^}g9f>VqEoe2AEs!!b7Byq&fyk#}fS@aQ1c^YI4ejfuAeqF;|G5-x z6GxFViH&?k0kTBf#3qPVQGg2G%C7OYDB=r{ca41}n%W{HSejgw>+Wql64pg5_PNZ- zRsfU@CY+OOtg#de_;PZ?^uNrFk}~kEN9Q&s>qAOE6B>R-&@L+Jm5oBlbd0B+PUD{| z+b=f;155-EOjQ7oh`eM#V(MbL|El0LPLy)6G*2!t1d$dBi<6Tuv0^jkptra!NLo@c zNcvXM50YDo916nB24y1`y1vy7R}_@UgY#uJy%m0z?R=Yq-wY;`m;!rYg#;BbtCTS( zzXgc;#G|Mwc1&Se-mG}L(mBS%QxpH=He3&%of7(p-yrX>;V@$4wl{s2ke1L$;pS8lqk}o9jwhK z*g?P|{zB<28prb5Fs#${gXp*IHkuFynAzdhmR1!GPD~&j~3sDDp@8ODiZNTOL5Y^5elMXA)~06iNlNEE2Ka}$NoHOe%(ps>=g`NgZd9wD}- z1sUd+oO^kX?EV&yD3S@D3pKy#R#Gvi1n|S3#Mdk8>zhf0{yk_BGQ}D>Au`xGpRnOvm|TxHPt*tLMhg(M*NSP~v*g7Q}=wh=hFyQBx=)_}UX z*RJ3UcKBHJvdEZa3pB}Tw^<^VtFN1?!#JB8g)ZvgJU`dMvF>+d-|XJx*|FGD5yYjN znK06l;_D_HpKiA6k5R8P|c{RUT2l^@=YW;#!^v!R_c zOP8Ap0~n&Q$%WIAU9!qk0&Osa4)iRZ*h#*lc{7J`)Gn=pHiM7+^iX}0H$z= zfWk|`C2pZ4rn!6P2#+Tw?9qUC$Y4pp;0%cLbJ0k7I7FF}DaaFaE@gXz%L-?${E}~Y zf_)-uxmcK@13*0K>x$eVvKeGC3uKFBDFDe=tzh5lX-j^*4Q0~^DqQiL`vbQY=lr4( zKAks`&?$85=w5d+n~eRP6>)6q z7CulQl>BfeyvW4U&2B1dK;}BHn4*-wa|kUL9sZP>MI|0t{!Lpzn?yxVot!EAqIP(` z#Y=(_Cx3IgPgOz&QyOK~qr62w-eqza`Iy*f>&i@3R!J8wFi=iTY$Kk`u5;2_o8nrB zy)UW?zf?^LXMH94U{Yh+L@c##CJNVWfSlp5xn~*9NXGFw+;Ng?+r;QL5^-)I*)(*G z>QkEcZgD*d%@i=}K*$m{I)~_1R=dfV$+HUd?sZ4Jb+D;|U^We~4+H2Tb_f)qlQdlN zo>h_ESMd^S%fqpr|B#BOeff*bE|1o_H}KW@f&5%V3#c?-k>yC{N;AF0e4G(B?ue%aZ4Y$}J|w_D)>5Koz}N zVr+noLWrF;)U^OzG$iXJ>m?bE1ZX`OlO%}0wULgg1krJ2ISx0=7Th@qQl9Ku$`)Ll zi|N!F$m;V-eZ>jb>!Lh-d_RQna5Vp}>5jnN>&4K^P@T0ut_y8Wg&=K&vD&{9$1$WH zF_QC#wSWr3Gn3G1QA-iot>u8Ly*>ViilgFxTEr94?DP}(%isPWX_VbpK~n7Dj}Dsq z7i#O`KSRskS_tUo_|K!`_w^6U@t+@#YPOy{5 zjFE=|Y^|uT1!gx0@2@+WMK26 z2veWi945iT3%3|V_)6mD{$*&%3wbv0qOE>Jv=u*WcL52BMGB&amWgSqV+I{}?c0Y( z2AKa;F#qj%A|=k{d_EQR@oo8*Yn8TH!BL*(Lm(%{TTuz1q)CUR!Z-EzzorXlhyqu} zt~ZbaOFS!g?0IusU6i=Q%nEl?EF0~xJFJWjlDNR=}LJ1qzW6kwH|y8ti_ zc}8K&Aym{j=J8P28v_gaaEKkoE@Z! z$OYJnYv@*8ak=4|JJrU{%Y~wY)MP2=WtXAWcTmZD^Tj=3D_~=c)C)VxzCwRkKs*3} z0~aU&@4z9*7sN#twr#l1=1BuP=h>a}?9O?%U@$x9+2_q}=REuG=sdeUO=+<*@dZ51 zw(4l6trh)YZm2$_G@Jw^8n3aRtR(M|Z?A+w^5Y}bo#G-=GR4}|m#c?m!xYwsDDGTo zcdoRnh}qGhxV?Hhv~x`TS8+^T=l>bm-^>5A_Vb6@&#V5Q?|1&6-=qER{XZl7#r!{e zjZOZay~bw$Pc|??eRBOjBm0N>fA$)8LP1>Q{mEY3d4KM_KX=}rufY4W*U<3(gv(ua z{+~PlPt9?z0%r6-@&9ChZOQ+0drnJiP%q%L#K7h`Eu}uUb6Q$yJEx_c)6$P{TG|=- zGwlZ(_)D4UcZ#DQ)6)7MhA+n%R)lGCdlg_e>VN7V-si;s9{s$l|N33p>rwsuT&-!S zexPkL@x~{_p;ftItC%cnds4sTD0xlX#MePWsbJik;L?Ym_=dA(1FZ z;zXKYfQA!7ggs*}{;h~u(y5JR7|l~8V^3*>_71?_tUg2`tnd9z_2a_z8Ryayg7}k= z$GP-BgATTVk6c;B`yfdZ&Tm8LW07D})&Up#4*`bArl3IRJL>r zo<^SSpikhsQwy&<^|N-*zUt!BM!SF2>-3(k?rY6noBvh|8~1*z({nBcPP=hmJD=aU z_NiTS&h7{HRloQCqCKcTSlyfBo4)_6eK8GgT&HvYZCW3={%OB{^Y!W2KJWFNUpq%1 zVP`NodaS)a?e+RMjeGyB*J~d427a@9UO$C3`}C&YZ{E9;)_vW+csib3^v|2Ud)L10 zPp?iNYxVPX|B4RW`o+!Q>asVm+c)lf{?u^w{wXxjW$jc?FzpAIi3Pu>1i->&tK2fg;7 z*Kc07&ztYseg9$LPNx0i@x0UP-&z;#OL#nCzfBk(o@(z0_tWOA+w0AH?pHYMJ$`+h zPTEiP^Tq8$`%Am_RDbHX&bov4=iY{nO*t z;^RB`?P`u3CxTAv+l@2*HmpBAcHH;0?cTh5{L*(C_r42{o}TW#$D^TVQ)^J4qQU#S z>mz?MXr97*w|(E~{Bi`F_HD0mI<@-~XrG6JUafW3>-mePZ|95Ki`K*NxLLcoXmwl1 z{`Iil_Z#>A%<9#{``Z1i{m?%}&1UQA%cT9(XdYSh@vQGS)2EtG`rW6~_QTcn)46{M zAN=NR?<(v~Thngi^x|evzwHm+zi&@}IqG@saL|0}HST?EPruS`qyLDy)=|6Gg!lc^ z>)Yn(JJ@#`u+|EP4f|`W*7v%D7QTIOt_O~N_UJla?~nV_?!)=}?#0!0%e8-PeQSPr zoIZJ-hyJ_9J*i*U{fA$Vt^(LSJ!(6?GnjsSx^48n4(mR(rp;dK+tuu*arv(Gxz!yE zK1QvY|M{u^G<`g7k)Ahs->&!lPSfvnzu8mx@YL@%`dx&P~U)8;@U3y?Zyj>(*{+1F!#XIG7y4^Y*X(`uVqkcXie|_HXW; zR`2PdRcj5L>sH^HTMz9)zdt?der_+?gO5$*^t->-9oo3}=L64vcs%Og4?a7e(dV1@ zPrWv6A3LqSdmq3-{r%%{tJ|yhW_^zw-MC*r+;~rCouhiI`*1pabnM3cU=rE2Hf?wN zzx9sn#m$#?yK(Q=&_(OvdO?p`$M*YQzfGch=kmDsVE@+dHZQxL-EV(6{f5rl1N(d) zJk?vD`{!-1bKZaIIFl#jJkGkc_up<7AK!JSKIu1Gcb)0iR^#3$=%LlO7hwo5Y-mmG z$*^ZXSfBfs{a(G%!{MwuxcYX}wd%d872JQh@_NnY=l&wR>#~1$+l$+W*3q!`blUoS zdV25v^3|@}*NuC>{rIIlc|7)A)bCU4+&R7NH%Z5B(x>ys|7a{Dp&Ern5ecJ0a&)B)R>D7<>{r2h8`IXmoo-TXc zcC+o;?f&3nt>?5Zd+x`}LHB&oZa%$h*IH-x`NSXA$45_Yzj^;)U)pu&yzgAj;q>b4 z>Day))|!0=*KS^QJI$+Er#bz4Gi?vhx!t(;+Lv(f@v-GTIqhEaxc%9FYB!%cH%&I4 z@$7!u>@&L3?p@B%w0V2)+JQBg1h8klx4)gT@t*b`S{L`d=G}d*>9u>!&T#6}!Jz%+ zrrZ2%*ZN-v-sD5O(L8D&pElY@exr5NA9S7jW7vPJ+sBuS;e)dnezxx(@kiJjG|yq} z>mwU)zZ1gSe*d9c?>n7`tFHa6x3C+wd*AbC{r<_kwlldwz3}$>sP!IB z>uuC%U&Ak_mp9FEZ8*64F#OhkYW2czgF*P%@6~3v=gm8N@N{FH+qF);b#Ry@$5f`fS(2$ERkqHt;4jIGw=Wm;P_R9`}x)F2eiU?$v3x_P*Y3 zw&1YyOEBp7-wlt#(_d>JuZG|3PW$+D-uc{mV07oHYquV2&2Imp9S-Zw+xCO~!R|Ln ze|iPmgZujJMfmIEmtN4X^#{X?);H)m4=u0V9ez6xo{rv!-9hWOcKwvz48~vEN0a{W z3!`U#^Rea(+TQ8q;Nj-|*V%xE3_}1JKL@ITIc@b@ZogcnO+_>?#a8MYkzL{ov8n%7xcQ1^Fj0K==OZl z>0J2r{>8_$_UHZtp0|U3^y+r)W3zqKe>a>y`8N+wkAvRV>%QX*hV}l@ z%|rWF2G{P}y>{K7w;ZR@>0ddvbNbux+xY#{A{=y`s}AfpAA8-&m0hzJ!-w-~$?v~>;7?Nijfx`gMGdEc`Z z-HRrFrtgoBg@<1l=oWd+ql(ZoM;bnzdf< z>09I8@Ac~aUhhl$eAsIr4g3AOcE9bSPUyEk+uwdYYEK6b{Z`kzx9qOt-ISs^IN}r)$JX(j~n;oYyaEH0`wd& z>`jh)-yD4JHJ#1{dEYv}so#7V*B&2yYIjdv*t7kvTfgm{-@LP?SJ!QKa(Z`P`&IIU z&F=Jmd|&H#`sdCC;~o0vJX9 z8zU-8sLUtWnt&Td(5_E;{3VRSiO9W>qhEd`5jQq)sIjtL0>mEMp4b~Z2rvS4z^1zp z$_3~+fKKx3mM7J8P{=kit%7rCO$1nF+dx=)PM=*i+Q1Lc2!A~QBmlW?&giS}U`y#L zD#)`XG>!=q%WO#tGK@lULMa~SgwWW^n4N1{$*x}v28n~`L%@>Zx0gtyO-Zk>Z;f7pEav6`0 zbWG`8b~`7qD-H(^U>c<|Mh7@(Lp8z$iNOE+zyIHWI1Y&X|M!3YfBXO)9v@MG90(j3 zj8PyD$vV52P(E^-*V+lV*u!q*eggH4)~HQpvlVpqKNKRge)NkDMn%*QbPnPQjyz`i z=ocC2?2+`>->yX{7C}dG<(}tYtQaBcUfbYwkeMah>#08F{46vK)kX1V?D#r&0a|N7 zUm5lF?b*ro-|yPzO#nl2gClw2$Ve?PT<|xCs~la@7}pM~F54p5QUN z6Zpv3W@li1ZUPTviLkXmi6^5Z9WqaYc*(Ud8At7}%?Oh9Do}YWQlTR}I0ZS3;bT;m z3kWH)30Am64wZO0#`64X{1p+Ky^4_vyDrvDGG`mEGeO6E&eHSTj3(bhQ}_rvR6dG^v4Ei<%ZY;j{-0-vv)r1sUYb2%5*o!e3P41Y zRlK}gw(BX0m&4nNz?+CHl6}dtwMfQwD_c^pdfKxTR&eeNe+>y z?(93z;zTP2Gc)s@w7rwIv)JEB+dFA{Cv7ix*h$-|32jH(ZUlISC};D8%)L(FR%Tu?J$bTOR)0a)_SY3)uIFVu9NB(AM%Y2+os3VLjXME@KTLd#lOI-Gj8oqgs}_40 zC%+g)jXzKGk&HC0_z>0i1>df`fQKU+P(-=DKxsfyJAH^GzXKg-v2vq9PSR!fo%&*@ zzQ|&Kr@r_O>Wk#47i%w)cXgE)He%Dh5!wTsm!vc^m@^gmtp*T^bYn{YfJM$x_B?R0 zhky^QDavCA9YSf93uFOuc^WJxak^MgDt-uO(20|2#qc?!nX?&L6B{}6{cHwi{?*i| zL+qwAXsEWCLv-O+A&?!tf4};plGaxHZQ?1BH6fRB&Sp!%KL{NTfss0dXKQeotL=fI zIHAI84)ADEpNEK$5tu;Fb{IKWN>g1`5%+nE5EAgd=C1ytiPR6ZTCKJot@YL4itu_v z?3{S!3{KB^R15_q05+!L-<(`Aq-K!m5*t-{SZ&VK*^k^nAYkyVD#c=Pk8lw;@_iDp zD^?vFFd;r=7kA|6C{Z@4fh1bGVbP}9Z;~MSn7Yv^PdoQ1$>)&lsK^EAtIrd)=S;NQ zy%wq~w!19ivORLzY$$F|p8A|r4B98_-G(h-v;%xdDV`yXO|X9hgK5kwL8`ib0#N-k z{*{v@kK_?H7>3C8MK;3_2H`RZV*7x1pF~a3c zSzvFRgX~Q^M^Xw+n$t~fi-a`YL}{l#6zG_ow?Fa5kK=`W9DS>9jz{d-FNOJnC&oH;+f@sRj-zr3SB zUdu}KN*^VzMnrbjJAr~3=JNi5(jlzL%6)oq2Tt-8**nF+PBE}k3~X3}tttkVsDXxh zV5x_;heNSBc9S9YSteMpAW;tMVq$#F@;OIUFd)H{GTtT!@a5g?U1F;+W;@FXDOv{F zji%Y}gyZ_rFFHuBAN?Y+oF~kXfMNMVc`R>2t##-f?nfQ8tU?32@*LISG>Zy(^ym7NKAvT*4sZ#e_7yv5vIRqteLXFY{7e z*9;bwTuNw7&cCwTSg3tqfWS$s!LG{_4|V2T!kePukdj{>N`fBE(*p-1%%HgQue9!SxN_+gbz3R#}y%u`m^Ql zDCZYq+_p5a!TB^-JbSk5>2sV;0rB#Vj-I<|c_G##HqsTeTIqLF8es>!STIEln%E#x zh6OP17 zTGMv2)7ok5WG4+I?PRB&?6lN&veQm>`j?WOe1rQ%YyVuzBg~qiAmw~;!X@RDXjIPLB8@$>T>M=Q2#`IC%)6?>ZJR>eOjRx0gHBhK)ZSN?&#p2S*OfJYbreb>$Px*OFU?}VdJTqEuU_m%RG%@&YGjpS^he3gTY)jVft=gcsXsO+< zb?DL6&w^N4qIKS4d`Ih$dF)*Od|<>dERYeSQ2q=%O0q;Uj)*xmVdXk;MF7#v< zda?^WiGSUNp6o(TeqW&{zdNiMXJ2M3n3jcMc2ZQl^#5n?{lDY3kv-A* z*?$E#bI-=Q*DcGAlfC0TbMh2_ndrq%^du!S@8#z1KqR^wBa+|%prp=v@8A9o0g_F2 z6F`AvOD!4rVa8E|g>QvIq424y{`+5fEm9Zs>YP_qYYAD>Tjd0OaaCLro)Jlu+2Rrl z8qLa9zUT{CP_mJ7ZdeCIQyB{zz!Ab)(Wo;i#w1VJO2-Sk=sk0qb)lki?`SCN9#<60 zJ@7?c`HO9ivujSuYT3)BU5Ea1FjSx-qyH>)YAcn^aXmiCkcv`3lrO)5@2j5IH<14A z;SgbK3>U21x_fPFjs8nD1|79wJ*|eGD_*O4M9;#2-di?yc%s^iC#pJ}<^TATy?5dL zsww;PeudCAcZP6jY=}2R1+G`lO+@)ERh~+n-9 z;&oz95WdDVQ9&PQ)rDwDqN^T?_2Yi^1x>1~0ws$H#+zf(&|2SJYSj$rnU*B&Y(Y9S zrjU(tqE_XwJ+i)WcZayd*JLdK*R4fMMwL-W&pF3g%+evoG{t!qAOSMksMY~9`yZ3V zI^DX(NTo7W{$(tAK!y+)&KI)-w3u7A!PT7t=5RyMSQtfderNR+?3I*&#RvCtU)@ zG9WOX0YNYgXc(@+NfXt`2Pd`x`8?i2F%Db9nh58B24NilM60KIKfD9-n>q;Y0S&=E z0LIsYPO#!103^2&5>^ZZfT9T{Va7o~_JI*8F$4>Npm+%6#~UzQ1Oj0rkP{z)U>FGm z!%0AU55P+xZ_EUO&+|a+gth4!SK*DHun(w>t$<=EtQ33j6+j$?m8>0O0aGWyNE}NQ zJNq??vX@G~R^>aYIjf(YEB)Ni<=O--C61P+39w2MCs*4CU0;s?Lq4r9qRowTL9a>H zzJ-)yF0Yk&>*8+cH&d3a>XL5hc>hZ%S{oUBE@I~!pO`Scu3K2ubbSZwtaQDmjiW|q zHo{FS+_c&y+_ZY>hMQKnX@#3sxM_u(R)4p`P0LWiO>6IOTE>q}FuCRp^9g{A6Z+Q0 z5hyFLwuc zxsC1ZM$Bz|0L9ETsChVOZv9CoHE6loT4DL{9XdHxD2*P?;*zwIdMah7W)neLq??;h z<2hJII_aT#Ls~*lqrR#HNv*yztwJtY-yL*nq+2IBFEnDs@!FnK!*(`+G1^RdqXgZ8 z$n~iE@zbMhKx{ zC?SM~aTpu5P$*i8FF5k&4z>Uq&`eN!>)YwXUzJFY$FL zVNt(t)A|C4#k!qvF9`R7a4#^Fa4#?pBisuBlN9a+;a;#&!o48e3m(zEU?`ek^Q8rX zC$K)YJd)Tt4-GI-Klf2G94qjqelk>lTcZS;zi;6KTCM6eYoGy9i`HF%0-AnmSr(Pk z8!6v=Hb*$2SP*@kYfl#XSr9Hz)QJJ0`CoM_ZoX`V6{zG}9fj-7+1mgV2ta}E><6I0 z9RLNIE$@a1G*zMCfR>cl*0=^|dNfBfb)-^JVyLl3Mg61MoKK4?s2CgElkfg=x^A=D z6cOW`h@9!bES1<$K2=8DsNZ4;>hYbbMQgr-C`1Oh8RBap`9UXo1>XrKcqobql|G#+k@|zdm{Ncr`ufBfy%~wZXy*&EE(Ti8# zeDl>G(9u*Ku$4kc%>QsSx~|z+WR+$F9F(nn^7glWKORRt7|AbEX1Z7-&dta zpa0lU-B9S)KWu6At)6UX^l6(KT&2fJz8s;`f4S~!ZLNKC_7>4J*LDNk==bPC&q`}_ zZE@VA1jQ_BW}C9-)jywKzdZa?TXZ}x>py4LgkMu~^Zd)8=?6`}Gy6f)zXMHwy{p}- zJ~qezNBGQB6+zPR!u;iNT~Q^?6BP_JuHsL&#ALbi=5$eTqvO0X#J4`stEx%nST6Ng zDi%POWL_@sobemX<9;QX%3db$l5{wZ^;n*Nxz&RGc9R<>aBC8)39JNqwf__#A+Cq1 zc1FQD$)uVK!=<6J#PBAe;Lm3t4$+CMr60|rq=*T^C?QzgQ$&Kr5Fl}-Km3`y5 zkV_Z;d{44>nZr7?vCos_H-ck zrI!<&q>$M-D=RjDmr{OkCN)r}IX2fZOM2sxpeA%`j=5A?urhVFpN1={Du0cN9`g(l z94%F(Pty*S0+k%Mnf|8KLC7I`yN-OTr+45yrRt(?Y-?{! z-e$h^M@@zw#_8{RgcU1piS4$)GLvoZ+tw_pNV?WJ>W^rPn$$L+Ff(=jBDrCNYVzmA z=!YixP*vYBmgS0W3Ks>cL(i z&Z_f`{!TRXs@CPI=>0tuFB?wLP9&E&x*}QJuUz{{rFw+V|Cr+2sxOx;UR|!_rb>;R z!aBvbRTAItSiJhKBmvoXAGbg2sB%@_87;_q{d&|Sv3R9twKj*=I?_{`AvK ziQGnn#HMFkZDCc7D$36gm9^hhXF)VLNNvmJ{n*6$O0h=^q98f1UVMd~R)a_HGD+nM zT`-0|V7?#+NLx}xYp)xq9-*fht0(HfAPQQ^lfKzb--7_rsni1NF8QzU#&-jjxSoz` znd^&FHS_)JTzxU&LhBW*VsQ6e)9O;K@z+O3=;=v)bJn*&^p11J*9(kjCM3b}-Yhgp z2kqqT&pOL2mz)TdR(!oyhJmWpT_-uKH*6i~S_>}aFNtC*uIdTY-k1iODM=Y$wGPe~ zN3Z_<>;Lf$divrc-SK1&*)=`iO*Wks-vQ>+e95|}`796A)f)N(Q|&sRbY@YJYdw6F zH$~H!6|R>pXoM3KvGkH=jjeHBWJ(9FBHXVLlE**3MNj|xe>bg6d0hN-hMs=Yd61+TQer`^(1bh^e^xkD$<1M^aG3 zNVZdhuJf60jmbI?k2L{~$py02k3c4F+(`%~gd)nLg39kW!B>5@fbKJYr*d0<=^xN# z^^4;sXlG)To#d2o$_!J5v(-;MNg(&SX*{EuoH0JrqcUVhQfZyw z%0Wvlpv^&5byT~4aJpC!Ug=z%=DBfKsc{TS4?M?7Qr_#|R{XRVO!0oBQ}qPJ^?$De z1-BO5bV0A!K&hNJm^P0WlCLULKPQoLOna&$mei9yHG5RetoCZI&o(+W-CURIZF_RD zK!ULhVNqRkX;%Memg|!)flXAiGzTQ){qjv!ucKd9e;Q-0tBDZNT#`i1sG>?YCYL0w ztO0$JUD*VlRhfzwztg-STJ~YQl35Y+)-%bidiILnuuPInUaWGE!uhV}vySpntDljs zU^&~B%3k&#SC4rW%~?sbwvAV(2hAdumNQseNGR=?DJzWg%;wq>pcL@xmalB1%Hd1r5mOI34X3-UPA`sLzOueAm;|A9qc`m2Qpnad zySGWjI%N~1c0AGkbdpu~%8EMYBr1=nCBCMNqau?uL0F=M;NB-14LVTMh*;L-ql}g~ zTWIe9jOK+bcmwG1RT*(1*;^t>1bMDGZYtLq28lp7OQN!4N`?}mfhK=%Z^6GC)?e?; zXNbXq_MREuTpsa~9tP(~B| z455$r1*_DnOMuF=hNYsyUl>i_fpb<#?${=4C@PLkT5CJ%`m9_^gz(%miXo z7YE%siJR2qbM*bi#VM*Bav~NR5XW8uM-98|sQ(p91=j&E)c>P`@U(UNpU*xtzy&?; zYO0T@v4)lBU|JH6l{|8-TPW6LGD{)hO+?SI{GeNlVuBHH(&79VN%Ae0Z z46t#oe7JysTy6@~*4DVvpjM#~zNM}?~*;Hkj=f-~s-X3ZOxSB#p+7~dF--a|1} zPvNCRR!3`X{kF$}kvB|*46g24jXStnE~T-U7X>(1j)$V1JriwjxSpvSGq@ZJ@jVmL zrf_VH@U-*Mw%XC4b5L2!GQ3LNpkf>9Q{+N&g43QUusxG~w_2ZR-LWYZf)~!|GV3gA zz8E)}YOHo^1hicvnEe`Utx0)RY%`p?J1U0-zZq0|M4d-+^8nBh7)sJ+5(8cZPzz!9 zzEL`X+<3P2VKWa)cGI|_RUBrMP91noV+*lxqS+E%mkP0FtO1LpHctw%JgMFUJ>qPA z`M&*Ohdt^S#%BsmM3aOH60s~6u54;_EtXZci0Gp8s+^q>%UA1*gPv0d;29VSrFdaHiT&%^{kmB&JxBWQFitTDFlc`c}uOB-<#$lG8iL7%C85WQ;rB?h#V2 zsAuGwa6wKvyIrmQ`8wubTsgE6oVt^Q)nENjrH+asTCUCO&-55{)HglxrL1&NY%NP` z-a4?cqqGNX+@S%HMS$pA`koBj)XE99dxGlk%S9~27ShonJ&$2fh z+nLy&I1}5pZQHgr;f|e5Y}=XGwr!hFe&^hC-{*bq{i8p7?b^N8?p6J*THRH(ssw1* z=;X^>Q_LQ6gz>WGJ$_gJJ_3)Z7o4@e>1c}O{mQrXP;Iu}+^s?VX?Px~nWv~lFLnUw zlaMFTTii!MV8x-vXA)tjxOhcRCp$LvsJdTaOWfsRtH8Zaxaf zBC}(UjbCrTr(9B`R4rGyS>>^VcXqVaNzbySiG|}Tz~xNBb>Y>wxAe$kj5gemao&=M zBYCTaM-WI-?L8iNiLF2Wq#Og4$^Y`xRk_+_z>JwGj1;Z%PA}(7{%n@UIorF8Leuab zq_Y4OP&`xU1Y3;9qfstzo=LQU3|!Afqh{MgYEu_Pi|#HP&BB`5I-^kjc+{#*E_||r zjZv&g)V8F{HN;aa_!V+2jwt6~sc|q_p&-?6kf*Ru@0@ zvRHjy4t12dx=RgX8mCB)f>{zMUwr`Q`SsZR@ge8a`FcFF4cqQD?Pup>XkKx3j4qGY z!|qnjg778wvGGpA=s2)PpI>*?s;7S$RFq$Ttc0TOentw|hkMJ7ds&4fx{A-akN``% zz|^x!wm#IZ*wQ&v&xD%cg}3?)?tQY7VuklRl@1t$=<0I`27gOv3+9GOYTZf2g(1#V zZ|7d+?Hg9CF0qtH!ESDfFk@1{A9C#nF%53VifKo;j;T|QC05KWi7W2~uCoWIXxGfk zsHgh*)kWprBxZe$jJfDRRhEINGV?pCN$;jv_l{e>(TVJ7@sIY?ecka7EDa=a{tS9A zReqoLn>LM45k|b3b%yW(>D=rb*=23>fQDP`2;BTE^8@rG|{{W9ljl==IerIzJq z?faIevWl59Q_wc;><`UuoSpl>9%gxMqM9a9fQq)CE4ZH-R*^d555AYIoWjo(3wjw6 z_>Nf-*RA02^(-8AF+9J1sgk7qneQ7YdHZtU&|6~9`;}baA|jx`LE;qhtG=6vlDKk} zYN@AkUmdu09>0y4`ra)q{4dm3CpY*f{?6aY|*V?&{kL37gBS%D7 zFistuhsCVbtA3eHbjL3HiOCu6v3y|mo}&u$9x(tML+jpTkhLT1ZV)>FqyRV71( zEoJ3tv0NgFPPD{qQaXf3I`N^@L94}U!^NtBAVRy&eOX#%OVCtO&1V?(0ks%5-6t1h z-^%EvBLh~RM|oGuXppq1t9%pJfjAYSXMLJ9h9S0mYX;-%b--5!Qx?3~HUE2u` zUz3fh&P{++W9;*zJFoycft}w%bfNIvC~53czH_DxrRtP2a!fM0ioJIO3GPt0eiul& z|Io#2r>5P@9rlBH9al5n^Qdgxvj>{KCSOzqN0}d2hVm;Q4ZazSE)%`upK|tT^{IZx(S=e^8OW#` znJqUQc94rLO|`TW&PU)f2l%?!=Jj+xW8!=#&>u_tJK8?RdgV=1m(pu~(r@lg19g#I zPQl5Iic5(sZXbrS*zMk<~m`@?_>VUv3vJ@AIX6~#j@ z*7pm2GKUSXx$%8=8_C9*lmaOGIo|4SoEH&9`DmiPK|>ZN!>R@$OUl?yi=_S|@7YF{oEI#@PKhxR z+)Bx(;D3=>-!h#ceRg`f<2L}~oDcT|-AUYL+L8ThPS|)Uv7V;VQL&i0P@x^T5sf(c z5ISD?hFo!#egeJ7H#^6VKeInEg{dQZcy#iu0$N-Uyzfus37@&!L5AWFfVYX%ZIheY znHu6l>nLS)?Tg?`w0W?vhgJnW^F!V*xM%=I3UstDVJ^|4%NZN%N3AD_GI9P00r~V( zF<)kS6PpkRePO#WfgBw#F%4Nv6_x%{<_&lR*OX|`U}5$<`_A?Q*O~XUM#pQh<-z$7 zy77VKiejby9-BpaO&enH(mPSwqr^-@*h}JX;jG1jMVvpDnJQehb(|pca8kI?@#{Kl z)=ay+if+Yez8=1xz|P!OU~&%CaTz!2lU!W+N6`h3H1qO>1C=Vd4;8^bx)vn zn8)^b2VXjCAFW1UvR0MdnsNfLbeVy0jl?Q7<7RowG2O(bRt;-LX$%{JVttrv#PQNQ z)#!1|_H*b;21eQ}VQmHKHSR!^I|HMDbQ@5JRm|UAB@3h!B~LQzM^h@d(iO-yW7HRe zi*XQn3)1k(D89Z+eV1Qn#zDfU)bb(6e3trxs(kBl;&^tF3I>Vz%ElR}YFp`cZHIQw zV3qR%HTth$x>V@5H)JzvXH|MAmA3%YkkCPB3U=KE9UD~{9@IK;ioW@&;*=K0e4V#x z%A8HMOv%0lA)A8^WA{kBuZpG_!k?@&q6A9-B&i=Peno#E!mvZDQCOSpMgMpXEmje$ z99w18b)1@#NmfA*MFg0$7&JIeF8Tbn(xYJ+0u)j4s2uPr75na_Vk=yT3mq|a?gkFq z8p}{w$~`BK6ex#8Gf*-kP%UgG`^`JeNxx4oOEL33Id#3=?l;_YYrzgC%!OLCJ5G!L zu;6XgX6ZVj%8Q_(U&FEpVwIDnh%npKQiX-Lmg z>mq%Gu1lB3QIv-?X@_pq89H?tTf36x>-!s@W#elWC1c9cl&c9Qu8IevB`_t{TdW1L z;-oKqpAH~NhQ>xUpGFmdP|LoJ*=HoVnPp94`?8{Zey#P+2<$9fO*)T0#x1TIh^^4v$m z<6`r^m*rBow#wrI8-?A}sD$#HSI+yK6HWg>*d3dsa|e-6ZAIIkbLYFDWMS$EO0(W% z3Kgl-r~7sbnmR^R~l2&MuJ3dYZa+qn({i646QVCVPy?ZKZW+ zUqS`e>l3*YE14=x@)My5^sO+@Jx%-lBE+ViE@lU}lgekT zOr+bol)}IeMM)Kgh< z%lb}6MO2?EGGfVlr|o24NK z&vFemZ_v{kxkNeS!?qLD2d2rN)aMeE$yrltCUjnr+1L@r5`E6U!nN^Td6jUOEiu;@ zD{lmcD(5VRs(*Lbf$pP}^;NDW!x!SV^D)IS&3OMnK-2FYN#)MQ$s%ex+#V`xvw7!Z zjEKQQ_E`h9YpBz+7u-|C-d{#f#b$hr8o5%wMSX5@_F3w2uJpo9>nVDAs1(TB>tcIA z2Wg%TSc*ZFa4#}s(Sj)Y5w$tqfk|s#j<8y!$pID_@z^64BQA&T%&;)e*{~XE zE^h@{*0}J_BirdZ+spG~z;#yOD$kVbPW}=t3OTdu0VYnp9n(4 z#;tC1Kl7*gdd0AE@@(3uAQ{|?9qai<841ovF%D?sWzpLQs;$-HkGIw5 zauBx0cNNr46^{o)*uKXMLr+n^jRkplDeXNI;8k}@*(1a~f_ltjDD8TmPg6F{AbuDf zSm%KV)m!ee)JY@%LEUGe39Ar2k2UWg$Nk%9eVpF-TL#{YCc`(BPR(jxeQ|u)$*3vk zRiX58L~Gh=Hn87it`L{!yFhWdGS6U!i`9-r(=?ET?f^u8{JgFui)Yn2LuV0HmJ$mi z=*}1#Cs}6QGg21Qfn@P}cM$_1uu=FGk>@Gx5TR+Q|)v(C9 zcuycc1st-q)?00HO?wX?$gb00^e5?|cEF~VxcoSM>3-^*afona0@#5k@v=4%CKs$7 zU=gl!c>(ui6SKo=ymX1sVhMp@pn7F0z zd_K0dSC793xgzGzjRb7IBN_(;KVkDUVHknM0Y|@j*NGDOt0c+JSrYd>o!FlB%uB3oZ9B%XM>l z8X%3)+3xn3=M@=4KUAq$6{1u1wbDeoviVUGx#8uxvH}FtyFANg|8QB;WG9ubn#VNry-W+| zpaEYZLM<~R?o${KNBC5j{5nO#gC)frOZU=D%B4qT3x4YQZOuIZJ>r-bCR0C94>0-_ zi%Q)8N?76;a8i-l-Z~`Sb?c`L02FZ00Nhj>^LdKdwHBmiR#iErVo%aU>!DaQWOYJG z(-kBf903x2)iRXLm(OV11#88&1x_YXZN18;Ku?Q%G3%DnC<76@R;)SH<3PwNxbdex z{)@B<0mPZYB8CxrDvXct(G7&_sk|nH^mXKWm-P=t?RgO+rd_&1!gGoJKcp0G3xAX2 zb7a^x?eD{c07pmxG#*Uz0P|(swVbQ!+Ha+*fhf>|=@$S!S_F)92J)q;F^|tZ%EQ2p z#>1p1-}jnf$)t*_!~_nPGL)mUGTPQssFDsy=L!!plcj>a8j;;d1`C}YsgOV1uC7Ee z&ZmM41884hX zV@0j<9--nBk<^RX=T!y7y=2qWD($MFu@Kl6>zGHfgbLnm<_^1U3e zY;1nTjrw*eY&EPD$*(MFRn7EqaZTomGJDyN;x$83c^Y9c6Szq3RjLA2rEY=lJ$%+= zt@?y25<5hZ*?yEJcFRQtJ1;jZYLJjB5fXf)xTL$`H3s(c?KbFkP^S-6&tT}4d<`cA z?iIXF-R>(R`s}j2J~UILQ$_d@X*2u1|INbqp!wq7tu<$=j=KGeCYvC!%FfBj`FglO z{qQ9wCYJH_^`J(t_whe`>($-geZGC`q?KHfM5Kp)?ARNNhuiq#9*h|i+1r__*3Z~G znE)*b#(~5zwJ$nJEVqx{2-9=&kw8xtFD*%&4|g3q#zxvY&N_ic%ChTW=$(4-5d^7= z%eq_%=@w#LHXk47=ZT#$$8!5Wyxl*m8BmH}tP;^A&nE08b(@7dq8w+S_NXeUzuoo; zj$tX$Nebyj`Vl&uzc{vVKfzp=P(eMthIPb5^zoeov%#dj^+ z?p1QA#>grD;9m_=D#h@Y%lZpBSJA-BD6WN@ECoyTOZ1~-eRSs0TH2N00-6iUOUv~` zQGIS^1um4d%PK~1%7-=YorRBdO^gIgI-#W$bc~g&vdce&>0w7&+^dKm`7oS+{pHqF zlpxlyzr{UrE^5mzjdo8R^xI!(+8EBXWdD9f)Ku`dQaj5EeptBtwI**HVR^oM2U(CQ zA6U-xxqw;n{<$b6FN-;Gcp4wpbSX~y+X)S0<@lN+QVNZ)v6WS-NKq_VEkY`=%-bgH zm{iElUJ}5j9+ySW&oO7HDobMxy(;KZf150-EXDoT(}lFxL-x;PS470m1#%N;5>0Gp z-eXH2)96NoKX0KXJW&1cd*f}E#q?PO+iaIS(cJBmb|g)PlcLb5XFpzLurpPEY9ySL z;OI9kgmPlKCOJ9)9kWdAK77hla>%ch{Q4=}H2cGlZYbCP@LtV!eH~;L3e!mt znI8DbxdJzAeCc+1znmTquw^`TSI72!T*;35>U@2IwSDdc+o$cq(L*f_1+hzOh>}s8 z>>2d48|*R|o*dHFbSoa=V;V@HN3k7^z%{yxc+Bf-MIKG|XZ83aQ*=(;3*gETHl(iM4C}*QdGxtt1 zrY-AF_(iXt(H18&P}Hp~TDWvf{q|UDIVZi89Z)9J`RS~X9fDXkjz4|2Cq%+b1kNC4~7^VfQ zD2-}^zFNr}4BN^bAwizCgAib)g2Fu@xXy4n?Y1rWJepYP&HsgTjJ_ukcfh%bnOO2x z1=4Cl=rY$r{OAwhAJME@&>1s*hVUj zo`c*Auv+2_pe#xqD`dfh35-<(tVKYP30jdW;r&2%wZkAFlHdE{+r?E}NnsBh!_w*K z52LH8w-pAxuCHE$+J~!vRkl0MhTxz3(VxJPf*F!dufr+T0>;e4twm8YABXRN zA;34wrM5d~I*wKqWroil&V+_0I2`VDZ)pR52ne>5dxFjjDf$8&?hedb_CS*#qGkHQ4x%^+$P z@Y=eiQz5oCKB)k>&? zh}7J6@Q}#VrI`{|!?}q{OYP5)rCdhspSM#gFyM#2Ww&Fa;Ix) z0QDmNiS8498E2IQ>gAH$E&>X)O9Bc+Bz#70P;f`WpOJS@ghlMbA-m3|LJWNRKJ^tM z&=Z^gns62vY)cOWir0Ue!W;}dt9VU)+M^8R{^FZYLR$!g?$2fh1SPkGj{JUq0I zMBUwg<7dE=vIkNJ2LI6<8`At75GQ0jLhjus3jYzXGp_*2&tvY5!N5tSq+C15O)tz> zSD>uFe6Vl)NszUOfp7>NPyELAKv|G~BTLU~4GshXCX1swcpZA2M|6fKApH&3B)m`H zgh%mo(?^Z}@GqQ4vfJAOn_5-+3^A-(#MMSl4j5}IL-m1buSq*!J)46VH;CKsJI1Dg zp-1OC)?KZFi|IUY{4@xu*2GeZS0thvrhTS6s(h&}&jO_2_jeNThTad+jzTCsDcG4= zngXG9I0#17v2%uFp=~|hnnATL?4mT7lPzkq7$Rl z&~*tKu~%y{wSJL@G$oCRe1v(8jQ!OnS>FR9QOw8#A;vezJikVPw>}yL_XC&AUdjI6 zDrx%|1NTF8S`_%6^-mrUH%xAGG>W@i5@fGe?~L8Q0Ezp-Ul5e9=La3*`%MZIm7n%# zi~dF>mB7|FqZ#fmwvQpdXwE@Z@cVh87}>8kLF0RSXXr6irA=btsS!tKVnu1ZQtJGs zCE`@cSdPeWB&i2r8PRHkP1Oz}*_&t*t(1Jxwu~tdjxmNu!E}96RVa`8qXCdjt)LVG zWP7(fK=v?X>?`UAb>j5JyG_tMKcyrI%vs^*F+%Ntku&;+s8QW^cffnDL5~onMovtK zbPSEd)7F&`*ulMkI&G74Lx4x~XZk>nUH(7hE&L04R^Q080_u$U2YJ)sp@GP}+(0&o zJzizpP@Ay1OD8x`rxrk+f#Q(UR({aAOF*7kxyV19vu%w8j!Gq`n?bL5;C#6Jb$4&*RR5;I4 z8WeBHTVVfYC3a5Uh$Fg)h!xmb8xTyxE=z#v`wkfS9fvX^=u7}QN?*(EVP$7M=^lAt zCCv0PLCv4foM0@_QfMj--X%R8D?Q5*%|Ivy?+g;8*JBEep~COMjIpqd!4Upm529ZB zo_~1M?XL>Gbn;CPWQDQYC&7lfO5BO|{x4Oodkve~6_A?^(G7(3-Dg@aP>=tc^uI9a z8NBEJ70+u}s8BSe6{EkSM`sxRt%L*`=eeSF#4bcDyoSDL^%>_WDLs)fmRow>?+gP- z#jYx;K$xB~BqQu&S5$R1sF!#>nTxA#aEJXIF4!0WOekoAbw5zXaE>G=?s(;zu6Oxwcf5(>9ob{Gv4q!n8|r9`r~lir3wWo3ZQzhNQ(@(mM0 zP<^-mhKc^tKP>36EeGqd1v>u+CVLCt3JO%vy<_!13JR$G-wJ9OJRZS+;}Zp_9k_<; ze^XHBeg7{9fX*TQOFQ;>+VlHz01e2{b4y|IAqth2G{AgI@p9<5G#z;{vSB z_C0N(hsf~YMtTg)cK?C)_P4Y7A80QHh(p@z_(5;C0aa!EFSF){Il#2E=QI*rqLUh zNRtNAbq4OUVWQ$J;;Yq1QfkGuE2jGczqh-TMHs)PuU9>U(=U^JgjM~jAawIA@Wz3W z!1Yz^AZQ*lQEz@TZLxX-h z=n?nQlH=}i(|QW_;%+3mpJTctnM#h--`l4Y_KsIK2l17=GYq*ZbM$UeI~XDj%`z15 z*kLWk;xx}ePXJ1U5lvDfo*7mG%(Tvgna84iGHLJ>Iw==T@$LU@XDR-hBKN~q%SYF- zJdS-rFTX+@K#{b}&rYOW#QqnyZ(xVB;ORdb}*hXNaf6fMZ!iko?_P~_3$`ZNbqcb34|Tr1UerNr~|TPC1_wBQuhSo zTJAn9-sCunqm)`Tb6D0W0zc0+)sSWY1ruW^|CgyJL-u{q_H5-!t4`_{PJy8pEa!k! zC(q(QMRtRF#C;jB=!^y0kZE4{k!00@=<6 z2x3Sb!2)rY@aK#!>k*EzS!ES3T6$tmp79Q!tv9i{6c3%^F!U;wi64;?#T&l|+AraQ z+05m-s!PUo3B0nBmEfVWpL%O`3~zTrW_u`Hamw~y z)TzrPv#xbC1%JAPc1E07^+`PqYo+x6dl9(Dq;5HnOiKOsG3t z@00Z{;fe-7PkZNEbo#6y3w)6TxXzT21lGvHbFWtosvc`}xoG&Bgu0IjU-;UlezYHl zX5r-Lr*X)FP74Z>@`lH0m4UVp40~N$0ZKVCxLqanDcV=xjuOjx0rMP2Ld_vL!t0yD z23I}MA)TNXTSv8SFt)=>Hb>_oeRMMMZ|hzl0B_t>9fE9UTwm~8Nml&27+YjNAPuph zv`3YN6K5;^?f~e&J8;l)Kk!q%e?RA&IlAv&_26ms6L7fklO^k+*s&7?xDOkp8FcIk zAWbsa`v%-ZX2|t$GbZwND0&JFAxa!vV)4yG7n-^xl1D+2!8e;Y<2mH1}cCQB>72*@qNSvO7h; zUha?Q=8C`VL7(?)-FOuUT{fRSbFXgeuTOOkR}Bw#GoS73&yU-BxOzaaeBn=?N?p#4|LfM{oNMs^?L-|@@G)#u`dL40~fxisB+p0l*>9&bHdUFab z5@SOt>TwATY_(k`lz$440M~oZZTmz5F?*?~Gk+y*vHc7L<)ub%K7$N`r`_C65|M1V zYcBKoLevjM0Oup53u2;Ej&fP0%w@UzAG70|5)l@MDY6S>sK4|u3k&yDKnNGL>5-77 zlseMNAL+RG>&^nAL7j>@Vj;J8w#P}Y#7=n3VlWNy5n&$=Ujiy7hq<+n`$BBnOT3@B zwh@#}t(9)Hr50?Gu)IA_d97CNjr>#-)v!LcuFOp`_7F_L`9FW-%vn+8#_X_beSl$- z%vO(5a5+`3oZ;bg|&ztrq^(VoqQhH1l+>j^7WVO|aClL~lQuP;)c# zd(7^F4ZBlKvfo6of=FCJDmHC`Yyg?=wkbO%<#f;g&Y%bDozD%0`!#v<#6jWY$u&|b zEY(mW7|LiJLcW~auobiTxykTA^=p{ihb4joMINWS0N@7e*G z*gH%cp`E$ybje9WbWw+RgVP(;p2+z1`z>k7tSnjDe;P?Qi2m(`r`Ms{#isq7nRs!M z2o=a^wglaK2St@OUrWVhBk0KuMT80x8?1wz&J2k(eMn^f3;Wau8qa44bq3Irx{+^o z4ODZGDMxl zSK>IWf>Ka?d$cDr&_sS96J72EgInx85uXsee0H?MlR?W_6d8hkh3tiAB5dE-=|&$h z!(Vsrbsl6Atp!}}2RnL%63>5UVuxqucCm$Q0fF5>Jn-e^$O02o0JOytNryU2aU{?f zA_R*_AGV0^TRGnxI(wHRAt{FmjAz(!FB=N2k|~RWKeiB4lR*A$W3wX1Sg*OXj=bBX zXYc(5ZwmBd90=zj5KF(lQXis3k^xkiEETwE6tv3}jEP@wtrxCFgE|%X)e4fS=g0t} zWTQkB+)ct<@*@88!w3k}eJ!k>=h;(E=ULR6wdM#J*#L{+o{_V>1jtdjYV-RoA+0@V z(3J;viRB5(;-znkz^$w>y92plkjIWN`%nsV9^GRg{y6)l7A%3bD+|GXNpVB?YTz>>`Z}W1fS-ly;pGP0oT<&G=6+&e;JRgK974v}d8FzuJ*eFM~y>t~1EZPCPCj z*?^|5SuMnu5nFyKF^SCMOjpK||CH0D-5@_dC5=q!*GBhnPlKjsy71gFF|Dt>W>iZ0 zcdJ*yuQ_1r7{71C(=}za3Q0-(T-`A_ymL=OW-JobDtqHC;QgXxvU0aYseE`55AK0A zgl#+7pTu|E13{8Fd0u2~u}c0y=^-Ua=H4v7sNT2}qXx6SiAuypggNFiMVsV`7cEPl z$Ov=gnl)P&F_J8yv_~@pdsIHGQ~j~Zi9mGN)E2($_+4egyt91*&vj~~r9f=D-sq_kkIgM@U9yiU^Zu}?@!o0DU3k;vnUToOxi27=hV?M$*sNVK zflKx$x{sHKea{ELl0)nX(5ZK8@Y-ZVP*%zV7BACK*xj3u<|btNWmf)CFnG&P!xptdN0XgXO-6A|?6fI~fi40TrpW|dDq>m`dfHH2` zq<)R>e>ql#kBMv3wGUpmre+sZCHr@?O@cf(N5dt0TSbV8%V-QFG4{LIhI;W}7Yvm~ zJM<({8fg0-&G!cb_RmycTzE(({;+L)%DrB=Z^Ho=VJa}|sIM+lAXaYmg+9b`1=={! zM`IAy_8kN0_i0)t-x4HP6j>9s7XU(}B;xmd!{d$L1lEnX(mp?+@5{;?5-Ejr?&|1X znG7o!bq8;P=xj)W&O+vB=ck zIGoRo$P@u;Q)=-VPj;RkRMSLpa+=iguF#iIpqihdqlPv8DBO(or01u1(2Fa*S-AaV zQzN+4l~Q^ZGHwPviL1{*QK2yn`9JIBbJzj65MXtW#XfHiI$;9pHFs*W8?k>J@0*{~ zzChbFMkrcvx4bow&5MR9=+IrHBl!1!z31U{RR&GE6~5C)93@hA2nL2+f2JpJ=OJf1 zTd5-{xw6*h6?m&IdNv1dPztz>bb?O9was%bug7@8j5*Se8NS4$O4RxKwA~1J-Q1dM zrC7IWuN`k>H|YEVvE^< z%FZCnOzkGzIG?{S?650o2sjZ7uLge3E}Ej}ut304t;MU5gy5-kdh$Q~Nui*?e+>fn z%Iz6v9Sp%JJK~B|48PNR8Ll|FH7}$@J(&vDFp2zQ6l;)pSvPHSmf?_aYGqtKU(ZYf zq&}vl0SQ(A&h1V>JQ$dj9=Jh=_6Y&&;=9~mf?$oEDWQMHD=M%LZl2^e7f_=0vc5 z#Dtq``%_c0y&3EVMsp{*D^ias4 z+4lVA+td|ubb^~)>Lgz^*{Q7BW)kR~mF*4V1g4wPgPsGf<*tlA=(abpOHrXnLlOc@ zB-oN!yf{DtIuwVCi(jhYg4GiPmDJgnONqA<$9U)tx9Q|7c0Vo_QvF-c7umdRxy`oo zXAdHGVa=8M!sW9*FrszxufR1ga5pk5QB&*1M-tek+-|GffTflJcMM~SOIq_mB6ZIA z1mrY1JhUEi)Mm^fj*k#~g8>r|(pydytAR#WZ_w2Aoc>cb)-IQc$j^N1}`_1Z00p~(KJv6E)Xo_^ACJa5HHMO z5G`+BYhY&AUJVe-ee5!%E2Y=^&L-`sCQWy3xNXsjn)6uGl{~o&LQpjAo@bn*9#K@i zpv16Wqi+aTR>8NnJyXy77Vg;k&bLfG&zKpxq2%-=b3iz-#@4!_g?W9>-$?+SZ}nTM zcFp)f5Kt`HZ;9Cyt_a;UB20d*V!2h@)w4^e2a`oi>9?K6={Rg5lRl~zViw8*kqHJn z;VL+}1MBqF@iv&4r0LdD8b`)jChLP=camcK2=y=Bx%icAOiuapqH_sL^YJ)vPrBq~ zIm5P)lVNzD3Y0><#gGAx@Qm{e0?^213r7qiXI(V}2H?n5!l)>2mEG`;7*L*}2m8p% z1Vy*QE;Rp{skk06iedT5WtKs-FB2*Mt`BgQaH zw@W0u(}a{$?34Sk=Zk#1Jp>UJ0&2eY{RV8@CMYe|rzMYlHn0$|@=dc!#n49(nOSL2 zIgpWabpT~vY2#h`E zT7~;E(ETvvqx%VfF`pTT6xHDmz4VV{yu@>b3M$p(k4l!v&8=on_6=xn8xRx?2rEQO zw&z^e&>E*IQfBL{48Ea#47ZTtIk1Wy`U|3yOdg=%Je;AiXU=g(=z>R_g{NZk&!vQ#6Eyp3CEs$0grw9{8d}gAuM58dFnZ&I3VnUCNSsA>y z8zZx$aMyA?QjA@5)_TYD0EpI0dLZe{2UPm_s6JuFncUC};~YxZmPNfrW5r!`( zD{8m>DLMBiQdfp;_o=>2!gZFq;iY$8hVfN3mra$To9Qv92&vwrScs^^cW6jG#Vn9^ zU}u%dV|hMx@82xjf%GS9FW_}bnbClrU~EmomcbLcG4t!OPU`YiQm@Lx-QKrw)7sVy zw-QyEiRK)vdLGOHI>VJrI$lE(ckDVwl^>!hhHRDSm)vlVtEriR-u>RQ{sKob7~+qA zbaH31Aa>W$6Y*rMaI;BqamE^V+$##!Be2*}oaYA*?>+BJIabmVYg04PQ=rkt?xt?! z(^fC-X~>FGLY#ANFK;Zs?15EqIh~~j&dJ+*xp{e6uz~tsir-`J;^!!vb-0N( z%GNHq$%0DWf(b2Ofw>*8dXPWkEeNeB>Ylg^7s5?Y=HQY|mfN4iSBR@i{W-PV!Dg{g zM9uh-vN{LSP8kJ&veE}GHPYudmN5)K7Cx_Jo83_A!W_WUY4Gy2^A_3N*wuP$!>$~z zCpX7Fxa~38vHI}W(FT!qfpvF|5NU?Xhg{ttJs-GmI|DmCTW>t@1?Bm1ZsA@}uaZtM zD(Ad%d6Bswk;23-?#VAtn4lvzpkp>qJcwhIYC8Y+LXc-fJ)89#;|CaiV2x9#pSN5) zX2%PJ4MN~y;yKGD<=Li@3YM@vy+XvoTiDl$edEWZDp z@{|pbgIX0RaGSQ;hT(V3B*DF4M$mA|zu8AX)|9v*B)USm1CRInIE(cPzVB$wGo{~Y zzl_OvLveijy&4${x!P-e^6A_vhb!14#A-5p(`a8VZkD?lkL2ek@#2 zRSFBk3~lMTanvgn_d^hcck(F2*kST@&(+#>p!Mi+SZ#pkYoccYrymZ@zA9R>(kcyU zcvhM*&#{9YJRE?`Br+iGZ{N`W;y{#QR~o*|5-<#u;;Wp%z4X|614hBQXf8@N0N~is zW3c?fr9LQI;2M$q6?_r9{N|Q7j+L@(E7Z2er7wS7&N$vxSp86Jsp3X=d(0yh>Hf#6L=3%Oo#`geL@JfnS%-fDlbUH)7%KssK3cP>+17GmR z@))qn6I(6y_>HN~yS6~iCTrIW&y6#KoX zn)uxK?S8*R@FYTUPgqqs9IL?u<5p?EtzSTSE=fLgWtN zNNFfpmlZ6^AHIJ0BXPD+ix67(^%Z<;=o;^w#V|)7DVGQ8kXe5KTEF6pX8B#NL$WUBH+e%0n~b_6i74crR%r3qa5ReNp%VpaEX(fb24TPm_0Uo+todcH5xV{S2wq-Li z%PdTM!3jA%%K>3qqlJ!%nD7TeWkw$R7AB4en9FfM8La$iA{wzruLHT`U8sK0EdM1!?x#$2B*VnY;7xj3J zSP_XQ1n!Y5S%eEHi5#_u3qKIxQ?E<5m-fHon0H9)+srnSf;))IognM~Vs4D=^ZPn8 zvBe=pmF7*uV=%2@VfFV5VX_Z2%jO{Tco#Bf1WH%2ziD&mbOTd@T%I(`eMsx5!|}0n zT=*q0ewsfEh|~Ozc1VAM|4#1Ln*z;2;vq<~&Lr@N0lfw*90NPUrqfh<$aO3hf8m@e zf^Q_Tdm{0~v~KM+!|J~7L`OCv^3MwWrPbH|4+4{&nEk-p3NA<^o ztU8Eq|5b~LNu)YChZIVm87u%VS@7on@4j+0Ad#Iv!eAy7+-3HQt|OMnRyKnk)zB6a zMJV^1wsye$C7a3~rT$tV>zR1iDC|$6G!HR77}^)h4%E;=0B} z&Yxf9rpK=#MJTiqtJ+EGvUPiN33^?eSMMvNOVXPmp+-hrF5!8Gey$`5n46>8#>jn& zyXG%5soWz~kH&*;CU5bk94?=|bSlTz3CEW_o(Z?GLcR=KJuBqeXbS)v-Z*Qbl=i$Y zSlLJ&mbe8PKihFMeLcNQta*);!9Rkz&8{b=wN#I?cwQ!@M$_8pK-wdu`wyqtRTDrtIJzgMb-8F0MIiOF#)mlRRpZ8g7Rw7zwl zzp|RYXxDtvA-C~T186zi`Bl!&F%{V%(`lpTcNjAJ2Y4U^gs2#vtW5U*#+>{>41x`s zg3a=`)Imz%F8|o6Ms_?ZzgyBV2_IxKc|u8Ne&9tLkDb!Ad{w@%RI+J{owAI;(vOS4 z(Jzd^(?3Jy?foFX2)X$Ivux=Lv_yS}^XuA7fj8GQp}tju&1OFX{3;R-uupnDK}#YJ ziOM?@sY{L)$64F~Mw~8!l>hDk{`&z7P&^Dx3wi%LHA?=Y6a1zDHsrag{yD@oOWy@x!C1+kVQ0q~Nx$SOi9gZP zG=2mDE_WX!b2UW>;o(4G76q{3UtZk{Z8hFNJB}1xeH2=`9we!9hJ>186kPl_aC{~r3Hi$i9QSX~m<3_Th42aoAXU0pM+vK)C{RZU_1=2rKng&GEp! zd@-sJSfQw)uUTef*W|;S3um`rVUkxqU2u$4&+KAF=ZmbBo88q}ftBky6dR`3OU*#H zpzR$1XG%TOS0H(9A0C-_yh}?qY90M2&reqFK9-b%WA}T+nQh$t zz7=mB9Q<{Kp&0o{LD{wB`WvlC9bT{X`1yBJ;?>b}BiZKAjLS^925@r28_ypEAtad? z^@B;3FeqsI5sVt>ao3<28~Z*Nkd#DLc5Km-`1?FRz-0t^)_J_w3ASt$zS&Acu}6mC z4h|vi96{aN1-&j7+a6CC_`TnK2JCI%RRQdM5LiC+w%b8hz+?n7P+yFBdPz{t-1T`vVz9k;iU#9% z9UTMtu;);dFk(#Lj}D|*XW;rySA?A?Zd${w@VE;X1fZ(W=>G7`%1GZy3aTR*IWVWRw?|uH0U33kYyNiW?&e2yh?$b7jh#vjaSbLU)`7 zG=*LPGbHIk$YJa*!ggV|EZ+tC&RyrP-Ri7!=Pe9w!i!V!Npu5w{*5NbxL`3d`$>Od zEJ44^4O;7ARMB28{GqLfFT@S&rVN`yaL=Bp=Ea(`Slrn4vrxX4_2PXGT8~USm0`9{ zyJgxo9s6|`(ZlTf5K_@}R@x8Y+6$ENLn|lsskwiQhM-5tKSm?cwR!{oTN@6%G{RPs*SSMyn=Y+Q%IzZPI=>l{2UhOozN|j~7u*qe)lB+ueDS$? z(Y_yK|B7VhrfAC>7|i>E7xT=!k$N|VPb>4fDZ`nwa5-J907CS_%_{deWNq1d+ax=^ zfJE=%1Edc0J`s8j#iuqi+dJ8DaMU)Z=UF_K#q+iDQuXes6F32NOyZ-Jq^y}8;Sdj) zTGWrI-ygfSkWgL7mn3%0p5evQ{2ofY7tDVFHgLN2bANFXMJHepLzhQ^x(gbGwFQGu zn;kR~gM1!^6e)l~kt%=zQ&3(8>$7wM4zyZZH26n*WG9foNAXJ%``=!&J_p|N{y>O@ z@De^TJRJaO%!SkI0&~VrC;~-Za`MjBtT;7LFPC{>&~^2w><0eHQxx&*eN!9pYArAk zR6lU7E>bMup=o&o;S_rzW)vGL%C4pjKgyTf60(pxZuzw8=bS_H_M?{b)SkHczB)pA z<~=1Vyor}f2NnWx3`9B0h#uOjwA%so;jDr`yU1Fs`Gne80bzo#$oGdl(1ABJK}{mi zYYxQ7w}=3!7`%(SW(whyde*z!R`d;x!2{dL< zT9rPj8@t$7#~Ww;zt9`IS}t9#kz&VsxmQib&&5!pI+BsCwf_z+qD&k4ydd$PtboA1 z%E3Bsu_qG*&;YOtf`D`Y^-=O8oeIrw*h^q}ejftZ8n;-e-xeg#p+}2JJyf$8-%_7 zXn!!B!nwV~m^qESiuo-E&n~E&St{E7JP2eZC6^C%=MvxG`*9e1SP@Gp*hOZaOM>(j zTSJk=eAo%Dt$-d}+6mRD+a!Kdh#7^1(vG64iBF61CWblz8vBeHtlF!z zY#q$O4*jf>L$%}Q_nKEiKa;l-^?X%~tZ*}_e zE3&&xjf69myW;xq#(^t~{ThEEN?Sj@aPzrHk`2v zPPDxchjA=0u}wWOTCm+GOqhz6nu_DK)pNDjuNZDqW+&bgFToi6TC-n+o@zOyd zI3tVPc<}1^Ko$>#MeO29PsAXrJ9}Qd;=vAQw^|7PU%sIj;{Rif=DO+&{L`l86#{7i zupn!OB^vqff((q4w%o7msV-lLY}JAj`~gaz7S1)syUVe+GIKu)nQdO*J#Xc$VUlR% zpG|koRt~;664IXGs74*YQ}2ZVE%*8$33gKO+FXY;&4^?KIB-Uhd`NJ?sR% z^7Fq~9(1HtX;GOvJuQ2$G?|b6)KJtVUGVKG_+t~pJwjbgm;GN{tlPb|1y9R z*)h?SIR1WVk#As?dOh{UDfj(2|JwqYa|TEY3@nlN{oLKxqm$eI6hq+qOh-Na^Hn1+ z?@M~^1B%Sa@v;=+tDEvy{noim<06|~Z!`LH)pLytX-Z3_&z-vxQ=yNX*${jITHw36 zEI;vNC)($1gXSjsjsVu4n?2!3PM-V*$2=TObwt6%bj`^|Va*QN!q+;D_wmspo}`2( zFaB2BVNUWSQ>0?V`ZDN7bSj7^Wd;5_lnJAaG(Pg@$HtG!*Op5=v%>6gx=M_D9HlN8@L*SMW%KYm1SNxU-G}KzjFn9 zt@gCPx}AabL_TZswo+zhU3psc>~(lNAjB)Q5EnOHfUQXiJ~Bns5CoRILo!|PX@JX< z9e>lMq5cABaQ~4Z#>Oy$q!#nAkil&LOhh+8O6kvVSpr7|$wRuaNSN{zo%pJe_8T+@ z5WI|hTg{7iZc&<1I!dNC4JVRxvN|MabQ#<_5KOjwJ#-vyXQcTK7P$CkY*24-uo!xa zt>jEP=!3$^fv_=CY8~%`+)no0JiF_Y!bzUd)dekPp_-7h6oNN$xwO!O#La<#G02I? zGxubd+?`?xhm6_=_oy&46{Xx(0$9zIoG#f8-U4n6}x&6h5T zH}P)%Yg=K-KIQZ>j-S4}97H9cZXX$H`<$|&!=3+sMngzdq|BuzpMY2>{$TpGcyp`= z);uo++YOk4dg37=CEp6t7c@jby9ytk!Htu&v1T*m{;~uZeaUfl6+>ynxf1n-GoxZn zz>xQGb{9f9*P%b?58ZBQ5+Fvj;aYg)bb;oZP@~n#F>^y1GvR?470;Ud@+E#o7!Ys z*9^11DmTdqlX!p<9-x)4MhDOz>(KPfDga32U(h-P*7E5em(g4Q2aKq?rJdFQ01>{} z6ih-R%f_PiYvHr|9HxelW3pMzoLG?`odnIf8FE(_gzR)c@kuduHh~?clJN;Gg}(w^ zVN9Y`u&>;TdM|mA>VF2*X+Li$SuD?oNFwHy3eZzmz&uD z$6_zsXf;!(*9V}o7P0WFJR1C;(*^Qxd9QlDydRf4>t~a%rwBQGK5yeCk@DAkS$H#c z2;HAo`tNnCOmpqn_&21Iu->)js%(?R!k^-q2?!)wBZs!@uSK1A*R6T@=On%5qVr=~ zW*;~u?uMFAx4fOb0CSRugBk~=()n|e#2~%r!BuM>{%)={Inj+ieSj<^?+MP1P|(Yjgq;*{$c)oU6x`(%kb34~O$`-xJfugvuBbmB#Ad z{xFBW0fPahesL1&sOcqUda0?Oj!E+BiB#(%ghgpvr2uh2UUX|f>^eF1F%9W&N$9_k zLDmgcIyLptYK~UbDGe(+p$*bT$^{6{%C^6)ydM0A`PxV=vUm92o4wTvUz&Ly-j)Zw zQ(Cr*X#)vcif;afBd_!F2Ij8SQ4`kpMU;&dL4t?0P*Se>$2(hej79RlrVN@y_sh_B{Irn(H!TLl=wA9Ay2jC z-jd!s$K}15G{L=R{Ci{SBfu>~Bhd6$H`Hh^*|mTKgeesv=88feA*ZA~AgNgjkU~p{ znObmB1|y{-#KhqFFC!7o)VjfBkgI8&^iruXR>ePvR)!Tk`g%`@R{1rTfRhH*FxFW;?t%0d9z$6`djO0M=1M!@0PypF z&*&KI|CiBWs{JpcgQ@NdXa|7NVX6f%IEKWJcvYJagtQqIOoiFze2# z*=R|P91=wgGp?!|N^7n9IHO0OX^b|K#s-JXaY6no1AZn+*cW=Rp*Ux!`H~=ssT)|w zUyCKoG?6hJZ}3BS>8k=PFjNgwA3Cl=Uwg5~v<{(9!Q`}7mAuqw2APx~QIYyOtyMR{ z^3ymB`2(l^)}wB4i^vO&4VbDF04>SZn4xDpPC9q4@9|HkOJaHmH$2Nbgi5;Qac_z* z;d|$=RI|&kFxv|mObfg}b3DVQeA>+>!yjcbfzM0VA_8#5l=acxK2r|Wpz6snf14wtn>!eJHB<4TDzx0b9r_l%95jfhT(FgUEE%=L6X*4tYO zE1k`NM{#AW9e=hiU$mg-A87B^WKlXgdnaeKl5ZEdBfLnI-QNB6r8}9%#VG{O6&dGU zw1X{N*d6}lLoEtjginb*DM=^hLD3?N{gBOW+c3*b3Wp>n37JS6{j2>Ad1${!IX(eo z6$mF+0mK*=)D2o(BFu*&f}ov$xM1R*K#r?^7?5W%Ey0PUx>VLu-&4bdDL+nPDOEJ_ z9?mr>8VeWQM2%_g1*du#_D~h|&lUHA3tn#Y{9nZv%owW91sAX7?T5gBGjCvAL~(NQ z$2XeIR}OL$r{-dep6)@ih16r9Rfna(_YNrr3G@C5L&H|dZu25p#=SvfTE=!%9W`h@PLqfl6ZhDg`~3`$s53&^$RZAxcm@D_cCW? zvJGP{(UiV(v31c@QiSaX?miiBiAba`kIZaMl9EjEC7R>Lmrn*;tuogOwa+19pgmx) zsTT{d$_WlLH>+tH_L?n`adP6rQiTq$JGB23ZGBITHI~a+e=zsv~1KsV<51^YZ z5;_vn7VAC2_zZzOAQb4}a-l_4s9qlZV6ImX4v@ny|g#V1!tUwVGKE#Et4%j|KV# zARq8I@Q{;e&L4A#u8D>BP0H60i7dLI+;1(V9jA6E_k>yDV#{FS`r8|9I66PYet$)b zxI4+N0KM#}IXlUo^wab|wAuMS(g?rVN4Xr3<#vX1d`Dg2+gj4|Mts9_@psIDJPD%mLf7}d zQT=3Q@r7SbAy0G?gW0r8P?ZQjoWeO+twpRF=g6(l!=@^2A=n7i;?9J%H3Rx)^%Fx1 z@@n(L<{#;2Ne@nF;T^7jQ4W1R?%-w*nA|RsqYMFC_b6wSMC=|;O5#HRnjC^j~ZQJaDYgE)!3_bawE#%qoP;qx@b(4`g>?+98zi`mRdfEK`* zYKrxFs|Rs2)x<-Hp-&)ZDyHdyzUj6R;6m-mN$Y%*XqfZG(&4g-gEO(Apur9r8Xp4{!FB_9~{DW#-5!aZ8S+B`2*z93e zNlHl&R7__Q)#Ey3iJU%2K*|vrFXe`&Ouwr!;VWQ^^hm&5^`tfKA&H~4_^z)qolq7s zARjOQ5IUQV*Q+#0d*i&ZgxSzjW2hDC&23H;1YE*5~0 z?GTD5YJ_I|$R=Wvlnj-jK_+<{;eSgywDbc1cQMKA|Mk=x4{<~r6H4lOI7Sgw(@K6>Z2 z4rsXsGnQLSiQfS;N+9Ph_4Nd0;CVeHICQh9P>8|lACt-1v*Vdb<;s#M` zdc=p8-TR=;k3=b0G8GNmOL^3A&~PN{V{eVdGgD%P8sPVj0M{OG3oOiQpAGu_N(qe^ zfs^Ib^NZx*zTE-weA}%CKW9j|I<#a=5UwSiBqd;onJ~pjf)HSvaB@EtjZbJ}66AXZ z(rJoJZ82HQHmZp7jx9yZoElh5AAsW;r|MCG`pYKcj^i1+XWHa7Czx;bYl)()cGY*+ zJ%=8c;^t(X(#uF>brGf@H@4d>oB|hP1{2QFm0XLOP*j6Bxa7pDN0ik?an7)KgK1BrF6z-96X?9 z^>3$cX8rXP;21v}@0Y{2XyPt;a)!;;a|zAY_hKet*#$Rw9O!rj?`9$VC$5Xzof}$i*z$j77ixW=!rGFej4v8q%~P8 zoDD{6tXim_4QggOiA$i4FQ;mp3dFczWe9RHSvj2zTKIVC9})GL4eBx|3?6lvD=z0U zmZOW)U2y3Zgp}#NG1wlXc2euk%U4T1iXQ_TPds?kMWrwHE`sZ6dt3uu^sZ=5wz{*+ z7B2PXPBEP+Xi=+I$V^z{485p{q&;~T4_=(wNudEvP+^a^6f25wEU0_kM*uK~T4S&U zm|;l2lGk?2#R5?~50i{bMp?#WP40q*EfRsnAR zA)#@Dyxm&9;EwEGcG#ynI^HPE))A}2z%1cr|)q;}(nZ{n>ugimeU-inq9+bMBR;Q?HvW6WIo_i?V4VgQWKS^W zLz-KoX}r1?nSMhAhP=+uN;E=uFNjpUcC?+5?z~@16}b!*n`GoqKQOw$tEvf|-r`zj zXqtQ_0%y9t^={OjTL^SiHAPfvW^9!pwMZ1J$HP;QG?H<#dK7MN`c!+2zR971|61sT zic$R@r)o)cQ>H1G^FFF^f0zgg;|F@W2F(_OkfNHe7d-ZF26KfyY7C_3FvM3z7qNAr z{H@pi$=%<{Hh7*c|GqO~j7eN=gfVU~eKl z<1%2q|5QqBNDXo&)XAp79(8ZhYdh$^@y_JWy=@ZEtpjQNs(D(8mC<6hkm{F}m5cza zLDzRwl9NKG%8j)2{&B;?)Vp;{FF2km8zQI7<}W02XRN zURD02hNZ>1GwR|UCCpO(u{_|j^ctN=ltCI=bBm8hXuHb|3AW%*fK3!edRSijnA4-_ zXhd?Xf|?=n$ok7Wxj1Ir$grxFQb{YVWubCrtys@dH+f~UUvINnk4eQc)BtP>KT}%N zVj-RvT5#xAXfqwJs*x}ix*C0D5?^L>_K_%JGf~t+Nruw99*C!rrx79|37ayLbUp>W zL$J#mOmi!Z0vq>~a2g=Ysh`y6{z!R+?Ko+jJf_ytG^B%B?Gz$|x!*N-pZ_OUb|4B3 z=Aem+KB}S2AZw_ZOi%s3i#sPC^G;#`1zq-!f#H*-Y<{uhn01#e(GNL8291X4g3vAj|XAPZMERxFUyUr}pMwGV6e? zf(9KYCCom9CE*hAKXa7WsZqQkGLA56>2uhz zr(!hmv}a~fQnL6^N9W(ZLxg~4_fF(=a0SK(eb>JPzlG`UB7Tw?jq;NOXPTC4)|g=V zy`8I@wGFy~Gb1-&E{=EVu&U7+8O^JVdrdNF*F|BdYgfJ5*i1T?KT<6^^iUaMCrs_o zdZG#p)jbOfbe?09H#*nZ7%zc$Ftw6tN#ZaT;$)yeut8$ia&7eHN&z=X+39Y*%JQ9; zR)|1+OHp`)uR7l!f>~ zne?Q#3@_{HAx^8cmY540|J(XejtwuU{}f)p?3%~>sqHVzQA7myH8IZXrTJEYIxEYj zkI}%BJ{WfabNl32A*F?Ez-Fyd>n+2I<)()@>iE3N(AefW?*kjItx1@$7##E2_`Zvy z5oU>?(_vt0n9WC^4aZ@Y`5LYMU^L%jByoM7Z;!a~<>Ex}4#pm2^GKcq&hhN2s}O^Z5^i&(o06f%sXWh@J5#7 zjDUcxjG8Uv<)p#R+1~RuZRhatMbLSmzg@n<6Wk$$iElRVWM^cvdz(% z#cVaQ*2=(%T+%?pl^^f{X?9$jiXVXh{enYE6Bd$p1#y%-Tcw9fHG&wf=EUJPb=Xic zDAj}*Jvfo+s+QyvXL=F2`Xq;i@7*63(<6)wPC z1acXbv))8VT@59;sTANM0lnt$*b%$I$!f0WvTY!HoxuF~XK7uW+0@)G7SMuBU68NPc=0R>PM9su$`|^)KXmIWXDFVY*U6tEF%Qmt z`2qcJeplr23pqnf@hpTP? zfdS5}kDac=o;@>~aem`!B z1i%S)A$h*jB{AmVoH6HpdDGWCqW@O8&OF@pZJhiPQE)hKVM@@^Fs;Er zSLAm$sE~W5G5<*6*&(BZ*Fk5Vx|Zuf%hu|e5(eJ!-xU3w$vwRnVUKLH&AZSO`ka!V zICU>Z(L?G4WU{ry`{vDXt!E@P(DFpr{PYW&?nxfl zu-TuH-^%;9jQIHM+3=aBWGiwWrB!oE=i&%07B*tfn%=b`dHtQ8OD^9#hE{*FuA=FB z_cLv9eLSB>JI3(azFv<%x8G(Bx7BN-ciamW!xVi)RnM99IT~vCouRkbpo!(n>wTM2 zI}49@k7-T2h~(5;V4OUT2>n9dkE&i+#5)${!|g!nX8J4*n-`aUu=#}Wgf;>82m3D!(fDa3ze>YmZu&!vZ^vE@4FT5I6%m0mwy_=lk{I4qU4M=z&s;Gu^@q97eKQ4!r$JkZ%hE z2e|>-qG^LT?sKc?R2#2a=J4?xajpB?1WAX`j5ya}Aa3HF#DL;}*@$#0<8CEYGLH1G zn-|nzq)4bqPYkf9635`?m4=?w?QT#%BJV;CK?QE^5a{bsn!ZT3(`6f=8cNt}q{kEr zrcrKYf5buQO7_kb_?zzuQ}ov=Pe0KX4xqteF3amN8X%0fuw7&wgRNx22?kiaS|9E$ z;a>&w&0AM&x+8j5T!v<0PC({%evRyW@Xn*PY}C%Ix@&HNQC6RrOKdcZ(#N?gWSe^O2DKxA-{BERp@6T2 z#3qxlgPC3B<3TPX@Pbp&YKyRlg^Z)5jSTV%UVkmf~C+adL?)g23v!Kg{+gI48?-dco+7dJXWV_Un)(^yiR#{yUk9C_AoY zv^+$r!zfM7Y`ejerpGo|9v7^Eb_I5S5UXr-jKeJV%Az%R8GmBpMx!{loi&WAabUYU zPuy=6xecoqo!fw^Q-5<}hOWBL8Y0(l%!Cg;J2H_QyfdSAyE2{KENW2k+SPMO^<5g5$I z7?Id9%maNCBzS41OmQMPNkjrJjeK*eQoHP(Uh!Wb)9u}yseCyRCQlRrtNxQ5u>0r) zQUN=P9)FRKg~DE-Nu$Vs4d)lKeu|HmiBk|+pT*xOCI`xK-Uc2?K^upVADBy;`)tWb z@yb$-A}?5LAL!913QRVy$nmp#c}1pa)^SKsz_JbHCR>V@KFE|k$TP3NijR}{HEz8i z0ZkAGF#WCp5$r$hlu}Q0I-Y`ORcw`eIqO zk{MKcIaMF8U#p`Y2gXpiL8uPjWzmy`J$<6fxMloegz+JX6e&3{lM|&Z*jhyeODrPk zZ&L*~hQkdG1KU{4Nll|H;e0fwStqQDXw_6uWQgD$0atTHyS38MS?cP>zrBz2)`ue9 ziyYodG&#;jLoAAy2VqiMgr2Q|N^V~K*Z|(=(PTj$n+HWPMFHux#?XepdQ1q-cFMeV z;Xa1`)7lg|))o4tSLqWcvT~9 z^0BB1gn6Tw_*KnI5Mj>jOJGTIdcF$p)!AaL1Oxmwbcy~%kLc$u0BgpFDR^rtNfWeP zY=g#00;@y>x!!QX=(lvx1*~3fC4W6h`_@SLh8Fc`yt+2OKW{dtx}p_3$kn-q9~|O~ zk8`W?Xt*tx*cs|c$nvv*l{L6q>w}ts&{bLL5dUf!Td4T3uHI8NEWex6HUVFyBI(Xs zl8>v}!n7Ja+-~GptQe(zo>G?;YQQK2Gh&W! zuRPO;AS1j@%-x(6MtzS{Z`PEJNIsb-cpGxk3z5Ko8~Fl8kH`~EcGNOgdNfXaTci4I z=m7BnPwtx~`*l9eKgSPGHvRpvzbzvujr*sxn8SmLH3nxBs9{kH0UF33O0Ovb&81D9 zA>t)N@G5m_6hS-SNCTqR$-cQcHt+;&ffORY3%$iVl{+IhX{md|n}~7^+yvKR=e!8G zf)3@F@wGd)JubTbusu$w$`_b&A?H?)O{cAK(ppiUU#?p5!QT>!bYNBsh4%Ffoa3Uz zrEb){*cen8JUX(6<*20KtlTxc>DPgn;PYeYu%W_bF>u2@ti`i1BYW||yr!_Rsd$Fs zIin@7Sk*8@r{Z~?qF9x9SCnQfa3kKFWN`;vv^&bs33O-}$>mc6Z8IMVX1Z1pQI>dd z7Jcy_bW`$gY2h#&>8?Ly`2(eOSWTz}LzVzHl&q=>#~r}dCA#>#R>r!-yD<}1fYdbf zd@sbOVB(O@p!`+V7++BodWf)Lujr+~9aAJ3GZqT#q$+lb5jCbEr-skZX6`O9kR9KV z&O?_t`W?;Bgu(nV;gdcSABiIvrB;-J{~IwU2$ z=^3G{9BSf2ZT}MMTVCFP@9RNt7^3YP|1(>;n@~5mWi={>tC?A{W@(8rgxzYubXjxi zeF(=rL@ZJ$Bj_4jYJsrk&Kqqg?uprUJ>q@O6oCus%7onAedL1p)fI-zcCsQOu)#qH zXZF5RCJC!=wC5Yl6=SGiI2D@2QMlW%Nw$i>aY8W%Q_tKUF)ccA8Bu5Tx&kyJK9uCA6wP6mmL8B9Jw}j-RIWGrU;QV+cj#um0u|h)} ziLIf{{~?CPUf=3z<{+$>j(a?6vdI}PDUf`g1Nl7C?CL8w=@S4|fu_Vr5KtHfyBa^yL`)UmrRibg_N42`8ew=;@nBpw_y)Jk#` z{@$P?8=n2g_|~O}d52a%L493t5%Hc|qf68h{5VrN$UGp3tLQ`ht&vCNsOMN`s&D;z ziKekNb|`2PR(AcDFNW$!%W)N}3OCy17i&!U(9u~zxkCfs{){(bn0Dq&F|}zH1Xv-({HdApygLJHj+-nAIn^U&l)=HD4Q91Mm}dzdway)=m)%0E>esz3-|J~j3{&IWG-}8QZwzr7y_I!V>h^$-T>+SQw z?eQ2&8n?OGlX0h0Hb;rB*z`}Dz^)fE^mM`d$Hp;;KoBM}KQj~G5wF=P|twY1r3Of8q*;M8p zTSAva)Q$u4tU8WBlJi3!(ek{+w6H!QB8!^lz#&^jfBS{twSkMqU?ntWf}I&y3FSKI z{;^+sTB{m_xeL7f7ly}IXvS`#+9sKswPj6ODmRq!0p8P|Rmrj_%2Fk~9pINOJX|S- z*5_yO;lOGANJ`|R=)xz~nHSWh_walPJY5R+Eggy@A4(jmO|h9Zo&*Iio4Zg_?lFqyTg zN-yZU4|)LCP(5&iNN^4$_Y+?dd7*S%Gj76C$6RP)QvHNPP(8<8CYgkr{#X4%{m+waxE>7su@AfvpNZ6!Z*#1irQoC)w{I1%?L4qA@_dz}P$c%=V~Z zlb1sKH`;Z7O`);cqU#S8H4L+AwkXx&dL(-NuHsf531P6c7DRfuErkFoz{*v%`vto2 zjePnp3n;Wz2Oo$FJg6?$ z27SyW_ng+dZ`r6pqlZVxT6+kxD{6=e)*Wil%Ug~phOa4`fvp1%0=TU!_XPsdJY1I% z0YU-aeC`P~2GWRQ7?>?SU z0-?}%3Wd5Ja-ZHlP#x>O1h#HJyl}dR*@d_i@?}08HTMYLcA`X-NiLF?zQp^G&k8WZ z1Dg0~iQa)#mx0h^KDM#fqgfX|g@y0n5v+_V4z#+VIyt1iYDOC2G_iq~;AlQ$rn+LK zT7(-zoGBu+Oz12u*K{)Q#gc;^<@tZKe4tlBCL=qXqI?k?A%AJudf02TcV%bT4EQhp zq(x8+EN;UWPo8gPcEE+55d@%zCXwHor(x1EA9@s+6mKn?r%8_gH>^@1sNZvInx?C27bwG!{^@h=kjpzUtTj=Z zp$OldGe>Q^ZlZ78XX~BNL{FZ8%xFPbs*tY}yynFCbA0{<9{!O$V}(Pjx3?sS9a4d9 zPW`4iu&yXJ8=!#jdfi}5&ZISDI*pYS-&#KEeM`0%w#6cPGwwZxkW(8SOL~6w_jrP$ zqk|5%v7@D^=W}kmVs6{u)K2v)>+;Lnbv~v7dxo4|!t0=?n8d5-h+IV0v~o%kIGHO$ znNN){oPiwV@BdhuHCqQ$NNK_u{v?+e>RLH(0+^oM*hXrefzpNZxr{L3a0BE#yw}!URLRF^Fyv z)>P8SF60C*Urlg$feO!BSFK?o4zli&+5@AXd%ML;A6;#6Zp+#M;=GSVYm>BNz))q^ zX1K}I&B_eu{O^&rdM{5no~80t)WuE(Sy?rQCiq{qP^F94sFA) zYSPMi@_Y7>g_Y!EBRdSX+b-Lmn*Jgk9UGwy{YAoPU}*ls2xFwyYouBl!enZ&L1Ba@ zW`o(lfHjuf{W(6C8my={L=y!HjQ8)aBuWFL<1eUDOiv@=h*h9PKNw;q7f{dOK65p16v>HN@put6vG_t*M;?l` zaf*Z!Kqx#sN0E$D0aUbDZWM>FVh4Mtd~F4Lmzc~rBCk0_zz-O2AdxTwKUf}lAzsUt zu>eQQc!3{Y*n&QQn=T&#ktm?iG5^{J7_fS000UPk&<2r#7hq^gQG{bC2evffuE7M1 zR%O?Ua0)f7<-qAyv6g;z!f*`#o?7cI$Zn#KgU-lT+#m2h907$jFJm<@B<}*s+=K+= zxq!Bw=qs&p%USm1Gc~|zU~oa}1XO!iUSJ}&hz;na-D2Z1n*R+GV(z`^+p|pb3(w|h zfacONPd15(|C$L3D12!=HMkCQB{kS#qEDR?II|$vfO=Ikv`Kh&2StBK z@gdnw_V&xE5i9P{%Gt?|#Y(Q49hjRNjvvCf?FYM=CCFE3{N!gIrl~-(T?QP6+{=r3 zw)NBwzyqfsmQQ!E)6a1zfusakO3^^?umWkY&nM|PUAZ|)ae&$b7JOu1mN54^y>}s& zS&l+G-p{)XmZCWwU%tbSvV&A z8{XkWcq`6bv8R?H;zuY}MRcTHlt$wsKBW!LOZV-GL=#r&p6;r3+iX0@pa@qJSX>=^ zRRe5!ilpC4#iUnz#tv7BOP-{kQ!?d#gfUQ~g@q>+j0VD5tc|25cLd6}1fotX&hr&V zb>@y*JpRuOw^&P3^T_Cp#$1#^;HRD3KK~?r1A?_cOHWs7I47Wb8nZd%9fE0S5} z9NZ6I#rySM@&6NcNsRCL;^kWH6tUCl_L4%5;W~J)&h)x;Md2lfCVVcm1!Y{Kld@dY zU>l5jd@Sk9lFUgQ#>&zDu~ zFts;LlUm{YZoLh*#WgyAMqFN@`;1}U;r95un?#E)-Yv>nag33CP$QMoIS!7yDNFSp zpHzRhn3%wbC8xMCGJ-=`LUARiDrIx|bI(;ee4CQ;OBI@Wkx9VNOPs4IvQ;?=z)e8a z+m}vgPEtMY4OL!D&^_+OomETMa~Gr)>vF{vWMP`c#Y~uHdpM*6%-`F>ZZsUE4@%gv zZI)P5eH2MQsDTA^C4l(QagW64r#mSTm>%5Q=g@NZkQ;KKo0v*4)&UV~ym(}ahC3w@;A zcm#7%h>JG9y^ISksvplLvHqj21HNZ7#@xA>9=W9n6B_B?g>0q$RAahoBb%WLP2~x( zU!7X7n%+uPh?Ar^+@m;o{*x@ufu{#%L3d8Te9YErUp;ZK@N z?IFT2Li;$CEi}ov;2Kp-W-nY&)}&6daP~utN5f)^1_szbAkJ%wOTA@^&TWx!lTDSx ztaN7W!4JIuV25sHOmyeM{{=zcvdFmvqe&CDd`54JQ+E_$VQtkel#Y*ez-$;6$u;4L zf9Z$`T8|dFC32fNKteG7NK^dd?U=+cQ)qaHf($wiqV;Kc+C{*x;HZC3p^0Cq>H!D- zVpg|h*RZ^0!OTk|*41j?U(m>)tfH0&#k#g-L8dkGH2L0|5har9sy)bb7%wK-XoVeJ zaWOhprFeyNpm@$4o)Yn|)|1pm*#E2dS7WOLX#KT!D`QeIlwxER+e0Vq41NM;48JrK zD;|zarZpIP*rvJ8Jiz*UkRx;rT{g`Ic~7eB8(AzatCBZ|FV+fcS|A<(Dt&C#yJA$FvnbT)yc=cg@UC6&t!6Zoe|*QPlDVzYfc=Mr;MC(c(17 z-Y<}DuaY6tb)7sEuNJ*RcZ4Luoai&K-DmhLb7ru6-HI9Q>Gpy(QVNv8qtI5-VB@DZ z++`7TwnUrK@eZ=rGAi!8k8tF-qj`^F)zEbNjS<^}5$rs9y?6&(oq=suCJiEM66}VR z!i|T)Rx49Ot2a+B`D1P8O%LN2cZC=%OsqHYd321l=X1PL7A=k$VphyT39Cq<9qd`i@A| zBN2x?dG5hc_LGY%t*85Ro|qK6NKBm*A)U!lgMzy6hV3vSYN%Eft2UWsr!M&eZD~40R-v zZ<0)$s@sQ0b!TbaLZmv!Qs@#U)j3dVheKDDF2Pbecjg{2wNuE{&iJ`q8?xdWIMpq5 zYKP#d9XPl9$elx|_GR}S*7PnpQ(tM#J)ElJ6u5*`?F9M`u(n(Qn;mBeuR6?wq(!Up z=+m!qD}Ft$9YmLoPL(g|hcNm> z=B3N=ch_zli-367{oH1K$RQiZwLgXR;X`l#Pvgj!9=br3Va8F!`@YY4xG%C|e~^W{ zzjreV;m)g$`6Y@;FM7vR-mv?pPp2p*3=ahA2Af=g2JxCMaPGVWLBcqq{ocHw$d5^L z+=@CX#yz)1Z&l3mpAWo!gS5K}7}rLoe$`Bf&C(1qp}apkwO}PZW(u>O4#M6F#%Bp% zy~NBTH^_zunB=1jK4Q}xTv4JuvMqL%1nL_ zZz?qh+$6=J>te?F-RalDbF0^RC;&XLyGV|6=UH44PNMC*hx+&M{!(<(dEN-+w}cL$ z%-gz0zYpg9YfOpw*51X|zW=fC`Wf^EknyE(7oe6{cBs0&iAwDr-W0{{2~Hh3SHBm# zXF2s=oTlJzQ;r%R85G6YUhZZszoS&{c2AD$z)c*xTKhh7|C`@l7Ukh`6#Ivh{rUkN z9#a;jv*(QC1Iyk$x_jNYJ-@6Y=;TZTdb@{Y<(oevx;*DBA=q&Pb$H@gl+Js|>Dgyd z935d*>FN$!ZQWsz55hH8m4O^&RdIVVT9kX`kJb-L>-c>U_UJA@Zi`Il09>yOJ7dbASlr*M-Z<(T7OxORTjK(l z3lIVJ*1i4rYVZbJAd}0%fX;;)zX8MY>Qg(m1QXN3Y~#f(jhb?=w-Xb*fjAIC?Inr> z?7;?V(;uU{V>5;cYnlliSEF};M-tuXFq7Da9Qnh8Zl!_%X~H2&UjXVVs1Q zDbsj~WIAe0qDSS>$}oxuhowLy9*H<5L4fFFiK3~HOy>y>d_*Pitm~VD>FHGPa*ra} z{0fJNaTvxgK$HZ*qg0Rvn}o_KL<@X9O&!n3G+~dj;LOUp1)8cTfGL)0gfj*EDuXRQ z1(@-l8$Z9rOjU`4guH@`mufO$ml?p#(Dr%XC2617P>?3+Uv#4C8H zAbKkl=8>#PjH0uPH@_awDnA3@Bj!;oZCBOngcGQ_K<%1s?e`anKd zP!h^6gnWj*^l3$+EZk+t?+8TzM+@=-tT>O^i~W6{csbQzvY-CBe{(c_zE4TQakSh| z&HZfuyZWmAdH8(}zF81#^C7M-h*&dKON<;xNUcY@`p8e0S*!+MVI~9)ideQtHL*u5 zS(J(Z(`@YkTahI2#oXK=$^k_lSw{G;95w@-$W8;u5vz;J`8vqpgL?o*J_z9&P$YT* zNmPQT;uB7rW_yWw#!JMBlSG)W_a$4v^Mn)1_I-4Nf_;XU6G*)k=E&m-Mf)(u6N!2x z`N=f&zsp6I?;FIXjho75R7m@B)mY`t-A89%9b&(6E4$DL9u5R_-7rMoz(-2%N(Z1?P~V zJ6`}X(`+Ip)@})!!|u0TwKhWPSJtb}k!CUSDqF`#OvuTSB_J~w)7|4d@$&+EVqd64 zX$|*~3U=q4Epp_bJVgXXO0^{A@#b5#B85u-;=TjItGBc1M*UW;vi9!Yu8s6D6E~Ni zuC6YQ4C8%Ss+zT9K>Tz6NMh`fC{p$|25vE5fjRW9QDc?#e0Bh3(JQxW!CWJhhj<6~Z6s3bFIral| zPNHa=X7x=Kr)*|J_z8ze2x3Gr@g?cquCTWPt?FqpIJwQhHA3+O2KWY*=UPfw6on8+ zQZxi}v=C>47ZBF2$itkWU@_PV#Kk7tirK#?@X2OA-R=M`ILann{H{2dnWi&IR?I8% z0T!nXMJy%}lRHFAf#^#d*A#gO-wa6M6hU85)HcoWWfdpgJVUTTFlbc?dn@E!gG7+4 zn#Ki%Au47ZQi_oeWGC__qP|NRSxs~cV8M#=B`z)Ifa{_N;3ouqM7L{o8ZguI_m)W% zJPM{<{Cif={7OP*=|V4(AXtN2igPJCJyKhsKE{z3B);4jP!{g*CcP?sHBr*X( z&Lj|D5~f5h89p7rCB#u9HOPu_l8?*k4C zV{JFd?xRDQQVQ!J^gI-EB!iMxw2C`B6(ynkr$-_ciJ83szyI+_K}G(rndVRYc<1`x zvi_e3ER7#Mkm5fr2L1oxljFmh{{Q63(}Pj}e;?&R>ih0{8IM=Ec8vp$F z4OM@EMoq_`f4EoWevYU~tAC{?M2rlm7JFsIbr6tSd1#Vcp^g9}Ap$WJGBy_io>WL9 z38ExImo$$hh&C#BSx0c7{qK0dCh5G6O7>C7UY-3>$$k$?_MDU0XxH<~wrX`4#L)#M zoOq-uaBXexzP)&#SFWIvYtxfBCX^!|z*u_IG;CT?0x|XS0f>SnuCN&kTfxX@D|n6e z0FD5mKB5A2Owj^S6nW`#H>nw|jfy1>CuU%hWAgo-3-2C|SBTCM%$u~&)d@c@)iunw z0t=X|+pHv)vzr}vAc+MV6h9qKj~aK7Wv8ny6vv4Eoh4d71UEx6s#cBqP`ImDAoLN9ITu5H7IIJ z^gaRaiNfO?(PjnF1Y9Z(ZB-9bbQZ0RRh8nVsP<;@Bfde+Lo5OI>+KpF7}RrxkA90o za_wfF*RCv)lw>o3EazB0_&L{%wXD~yVu!5gMtsB}4jRl@!1Rp8sFBn?gV1Q_yoBDM zi+p%yK31z=RVvBf#X*LGKs50b{HB@0kq}#yON*z@hF+{o^fM_=mV01dA^g-D&aOIX z@A8_J>B{tlC1wuz3i9kG(SWMd(<^nz6kHI-@H{|S21}53a`kq0c(7Og*J0&fM|%yB zOW%*D;HB~xdI8>(2u(NVQZr>Cj%=qTuUVZI9BuuyltH>pk0MbeU7tG$5Em`&@~OLB zA-+PibTT%bVJkwI)RUH_3;;tCErF2l$!!F1#5jV!ltbl*;>7y?`$p#VMw&a2dU7gG zH4;K`s!2P=3PmNN0ECuyj`V9o4cc!2UW&_z;F^BrCa_B8Q;&rEOA^3nxxXa)n6U)0 z{gWpr#|Ldo(QE@?5uS01J(K2tmet#s?Cj1jZ}+V1m(e7+iMx}U$4XU2-9C}_OvMt{ zxf$qBsoTwUM=nN=QFHsnN=^SO2Qskw*P#DBc=~ix|9f&Y`hVX`d8qo|lu!p%|IT=J z$FFFA<6s;{FW%DnVuFM{HCpeNRVy*XRBFlm+9fkdCK6f|ZCNo}UDZsXE$;w1r`aUa=7lnc-s1QMmGNrjR~GT2?1G>g;tm;uZ!i+H<|nNC7t5;63?Tg` z<^9x+y9MXWK~O5poJh(-L*6jZZ&?3S(f_C`QugX~FfEW?|MTSF^x&kX|9SG{ zgMCEVe(8mXNB#Zp#7a-9%Q0$vMvYH(_D7A+eQ10t{KQJ{Q)ywV{Rt&^X$6~KFH$*$!F1Rik%gbZv~61hTLCM@Mckb!wdwFE)m_cc!-!j*;RBSwq$z$ zNcjn7U~;&ZzGId44v<6v4l!?ibt;C^yj=%>ychmnl-w6 zrQXD%mUfux8M#=@jX*0&%s53bY?un&zybJSovBs#Y9o|4BAQrCoGEB@jHrk735ROV za;ibqITcc#kwtbP;zT<(#T}<$miy*sE`0_+r=fe0;?`9O)G zbx)h-!iho%;4nl!h8zX!G(LwkVc$~BQ59GH-T?XjC<|kPiQ;7>#AW44dx^w#8C_8F zXVmUFD*?h@mBdytjQ(1TI4vH^fXcnRlD;C|c&hWiUiD+@2)170d5uY0D~w3EY|ZRXu36!MAzGp&JwklADI)FB}ALO6YPQ zMUxLRu^ZX`Z)mCK2bBZpP^~Rx_2cX36eD z%*BO{+#m{I1W@GBbu3+i@`pKAKp*2Nn##>LYYC=SEiQY&DFc>CzTp&dw6s4MW@&?} zR+B&<u?)9#PsN{60Y(gOk4YIWrl`7k+_3Zqn zOtIy;Nv*R&EJ*E%DZy#SQmECWz$W=u>3MD4He-_{`>{ZQ6G7@RMIL5o50D5c7a
?O}UZ;<{3r$>C9h_W8`%}%kotT|A%vBGTiWP?2_pll; z+k3xR>ot(R%Tjk^r{n6P-D->dS1$Li*Rq`z3tg7G7E3ZW!;CoSuN-t!cGPKkL2p0P zwK}NI+9$(#;-q)7*DV<+MW;{dtVt?#11)29(IGYIiCVz+(jMvWm%5jujk+QYjoqe5 z8T^rR+{<&`G@!oEeAPK^DU#uOG`-A&v_Xo5k-y*Sw_96mPRcJt(4I;drlzW|TWQuu zo_--J1ZbH@i4{o1;*QhKT5^x9(fzc!jP9qS`)Qv+j_#*z6K8Zk9X&Kh56#g-GcTiu z=IEh0dT5Rwnxlv2Mj1UcD`oW196dBg56#g-bM(+0Jv2uT&7ypx9-5s^>={d`i#_5_ zlV+V5*vQ@<=SbopuwoM!`IBn&rO^aGn&3wh{AhyTQWN|bs`H*o8vk>Jf^d?Cd<*@7 z`_RV!JUlo#eDbsw|MU3x;B<`tc^~DwJhatMf&_k*B=G3b6;06j3Q{gZ;Kvk)kYXW$ zCOD7+p^&bFH4ydQpUuGR{Os*3a2CgG`sgQei*69z1GfmkfaP^z5Xc(hBxD>$KBT_t zRrMqT-^rMIKJk)JYUB}sI28TmKk-s{Y(=m#Wotsgxg=#EflVJN{kQmAj37zRW(Wcz z4NjtgL`E6>g$M;0j8LH&6_Rg2me`vz5LvEF~m^VTp7s#pYgPQ`@ec!=4EmH+|) zY?4A#NJ*oklmNj32Z%`xu^GYFgn}@W`uBjhLf$nX2?xIm>J&oCACHANqizB+81Dq~ z$%=$XW|kufok+$lXN>JD%qJ=4lXSxNzbhfU+dL~%NS9)1q$kg3@bUMZ$pj{RwX?Sq zkqGVlkx^u6B1La?DX3xX2B;+8K#rIFMHxRSlB zSSGO+9xM-2kiF!hDND^`|JGXK5H6MRNpNmO#~I6Q9>5aww*9SAgv&gO(sYvT7YKgD zGR`Vtm=n4dOge^)iFJ~hS7VBAAV**}`$_DY_MWFciUYD%+_}V1B{#ioMT#n59H+50Q?Vl5&ml=79>Z0(OBa|jUg88dBuGN^ zPSh%oCPJL82-(<_9S*%5RB_^QN)kcX^5+O~F%2qZ1Cy?sa{FEo-|{qUz}tzZ=NOt8 zdI@?rcAocC=jCO{199@aFGoI}x3lEpF(n~~I2eFba!@5w$>pPfELp18#<9RORDQqL z*quzWjy9y1TwKXfX%3xo1<*BaI1&Y@50`HRptrI{(ex&ctVzChG06%3*NgZ0S+Z4v z|1G9ynLz4KZsKUSHteZF@HGxll_Gc29kBC4oThs_E5i5%-`jfL!k`)xORO&-t+RqdL%+W&7 z1gFZqkf`3%kg$9;mBd-{@~Q4YvD-+j!ur?IZDu;|j6tlABTo=}!;&4Om=46m?jBbm z-8Ha};>Lp_0Wn3^t5J3{u&KBzODDBWE_P1E^?+j-WPWFn=rtX$=qfYpK9+k$KA)Mu zT_7!7iM&#YtJN)`zRH46lI5z7h_qH6ia3=_DhD=DJII8Lp;7uVTkG>M5niHMK( zzsvfPc3Bv4Jjs4ZnRF222)&V{*g{>Zik7$vAk#Prf(vO$tIqeE#e2dp)Kza|&d*dA zYDWkNsWEN?dg=CFfxcXMRN1W)l%7||C#sPJMx}B zd3LPFM)oc+YLYR3xj~eQV@zJ&M2+m8ndjoncZCF!aKbzosFCCg`@b?0{!hW`d>=sY z6QTGo(KZlQC~%fGOyLyQR4tK|)j;ipQUlhFSjyMiW{RnI<3Kef;1(S>b+$=EC)1

c?5`4YEjEkSK82_kCmaL_Q3bm;(yy%jIn3G-|n(32U)h}v#=v;6$Upay- z9&2Un-qvm?RNGS2Fh7>#-K9Lk^{A_|-ivS2pid0|?612v<^8F}j0qTihlx4NSF8le zpO3?k#JWGn7GwqNYm+oG(;+;%uD2F+V0; zz%&iKZ31!8!R~|q$-FJlGudv8VOssX_ey(bsvaeY z0)7LWGNDc_mTm)nUTm=1T$#<#RI7DvhXP86gaKHll`9FIBfq2#{-^@2I5%o2^a{W% zlLc$Od2Q4!sJ-1E>x8MmSWaCv^2dkln!yBB`6G89{7>d>6Ms}c-;qD6fbPQ|RcOB( ze^gN^_@f5RmHDFrV`=^VrbG=dOsg<6-8)*F1*}${_h8D272jE?cWawUeJuD^m=xY zF$9wXO1NMU6TMDv{P>^h@G%g-KfxP!}2ZM}Ghb99nPt2x^Z+gf#3F-U99y4u3SBK2u4O+L#x3RRU1 zbZMoqhVcqaaxV6b%GB?4?e?l0tNQQ-`YdaA86pW{incZyKm&KwwJA8cb4Z%bs$M*I zDLcyq3WIBvC(G=%l~+%GPT;jl&}8w^+sX-#E1c#`AAI2;p~|M=d8UXXTTD!kMwEFe zi92A;l>mR{8{Q|NPdMmfMYYYNA_&)*8ZM1)eS%{zFS4amm@N29nAf-|rEz06nNfl-Qm2W0AC*lmT30CRwIrujn>Kve$1D2E45RE9a$K#B%M>`;w)g#tZ=x&+0 zR*`&OM9Q3aKUYbb_-9az^)9{J(01QpE@+0>M12}TdrYgUV^oiW))C{F3q)cRo_A9r zF{-$e&E_XZ0nO$e-dxjfeglGDD9J3XTMeah1k%%QrS58|2KS&!(eGD_a_9tm2wufC zh2yeB$$`(a% zLZuC&?hunMA4m3gJGOuRW-J&}0{rc7KOCLD`N6zJ@tA^WKNoZY1&(2w&Ol5VL$Q#I z=n=Tn=|rJ}<2zspXP+(K4<*;888HD(U?kBj`qs@kQ=}pzzWq62SGSnJI0bD8;xWA? zpnVE<1}{MSt^Owl-DyU;w%eecm0tYzn?ddk#F7#mi3OysczLW*xB;GzvxzbdOOyYu zbolZ`f$V4*uTNL3M2xozgcjFdzk)WC6fqW039@8qZezhDot7zfPwE|=zG(>FD$D%& zgl#uuxd*@@zE?}kaK@<5JRgQ1&5Hs+rNq3|$9Fg#Ew!c@(QQ|070i)xr{?ZxPawlE z8M>|%ay7xc@^(VWHLWQfr#QYD)10HqCr(pVd6`izt{LLLq*YKPyRKWACBybD#G+O) z<-?qae1T%}3oWgfb_OqsSLP~v_pbI-!=5qE+eg{>8=5 zr{{;?qIvVJ%_tS^403);Su#fg)K7&H&CZVwk1y^;F$I1Fdg&JLOQ_~n)t8VyrKV5M z%jazdTe~l#B}iG8A7utSJ$ZY2Uk21otiph%)x-VE{nz^!N2R`bBE+I^{yl^O4x#cg zEYtZKAzAAG!Mo#wpME_3aB*~Xc6{>ot|TZLs;2@b*Gr%q2<{T17pL#e?=?yi_zFX$ z+B-NsuN<5521ns5|8qc@lAlo(#L>zA>vu<2`yVcUJUY2NKG?rJK0R3iqRrfqgsmYAHF|6x%zN%bbhk`ehwcx_)$Dn zsUuEyeTBI+4Q8PI!8cMoB#J-10R-)_z9LHF;yKq73V4c81~yyv1wr#xIEy828S5WU z-ygl|nl;>i{g@9GR>aBzzvLK+zt(i}udDa6Y&3d9D?i=g-kWOu>g_J>QzZY2$~9}4inrOVUvX6) zQvJ-i3N^SJzud8*jM5ab_BY_qdXuz_=w!x!NntX<1hjK$z=8HSdj7??SieS~oq6v9 zd-7|f)E@X>2l2oD>mh)00Y%Oqh>L3tO#uG+PtYbHdL9~n5%|}?)J#>oW7;%3cz3LH z+p9`pi;XG$?)c-;E9GGOt50qaJ(pji0(aLjhImE^N3Wi*d3pcV%jljRa zZ@<-ie0REkczp5}oJ({8=IWARdk0qn1>{HoOuz(9D4Rv#Uw@Tfh}XKJr(5?KQY#T! zG*$Ven>$zE6O?R7-jJz>X7YR7AJ1PB#obY<(EP6u2_ z4wlW0C&twWBt@OE z?O3_lbk+Q;?8!1yY68YNOF_G>Hlf>XCD5biUuulauhCxk!4q=!gBFN;FJ8Xb>Pm#W z_Jgv_zeZgpOS_Vu!5~<2UC@+)`5ae24CR3chr;LjYOlX<uh}r!TP?RCHDX6 z@Sa(~7v=x%RnLD8ww}&^KFXuxztk9;>!9TVKc&|=UVgV;pIUeO>KVfm$Y%Dk0~7FG z4)&@G0#5O;lM9^MLLCFj-E`x_KQobEQE-1+xphAn&8ugE@Wa9;hHN>^R9vLPZ%v<- z_wIwP&xks=hdNUVkIHzhuh$0kJXe%g7g|d)s92=7JppTWvs9526DlYF4#F7pxcdPN zx=z>IS)=%lj7RNvGcdcWBnf=VE7IUWj>l8}_f zJQ!&|$ghl&+Oi4@_}(zTRJ8x$@-(Ux_Isg5;#JUk5#&|ZN+}ceJcx6#4YY3QWwr0c zeg3YA%60wW7x|$c&1ft{_7;h~sBX~8rL7ksQ(Jz@1EG5+U(}^rYy!aJF`6JBghI9v zLL;$NA4Hs8(D-J4FXocecEh{Ozqa2ha8V+?X12uqiebDDSYM($p1f1s=EXxUg+^25 zg)OfRJzEU7j*Bf+m6rgfhbV%L|{>2J4Exj_uER=@pNW8chUA}-Y2Xyt~ z|7t*&24~IlHG+H)Q9Cj*v0)UNimLM?>J;4IyojclpKY+zgCGXYk5DV+)^6|=dXQ|? zkuG3=`H3c$fug&^Xa=wCW_HU)lofB6!mvsEm5sjYHu?NJLOk%L2{4U=aB@9u4pN9G zmsSwhjianrjwTF7ajh^R&48|#`z=jI38ry8t6%S6Fg*GA{vgki`u|(r|Gm>63@Yb; zwx8~QeUwM}{}${2WqpC}=zi%SjTL;prf)U?+^V{GJ?E(79HCc8?6R`=L2I3_KLlQ_ zX>8*zmbu*MdBxrcJMbBEfyuQJ^S)qJ7qH*L83!3dBeh`)!oqmu&R20HY`)G4p0DOL zIQIs&?q9&E7$bIzIRY99bxj}wXCDvrvCUGW<=&CHo9RH9{9;YHmYOOld zx-xCaL1}Dqy_&$9ln)zMyhaa%Q^`PWYQ9Y75oOxDJP)UZHR_DjBGs;~EIt-yiT3Bl z^3Nb~pKJAb>Da1upq8c?h|nYxvqQ|nsb=2>hx9_L&j&R@3C=67Rbc|%Q9?)Ii z)a<03%Vh7^+AE;WdLw-f)EC%lH79xBGIh{+0idyElkePn^BhzbZgV?r12oNV&8@`= z9S?Htc7i62uBHDzSyVSPg{%By)XjUExO(2Jx@E~yU?r{H$qMyj&tuNH$1DcTw)@-( zTP&DW1^ZLCo7q)EaR-818XJBoDO>k>Za-})<<>VPB|469jg(v5Au_VT%VfmuptC7r zrH<&A4c#yw4F)x2$eKxzx$ZAUR&Sa`jfZK1D%$$G$WS~dA5LBR{MySXE6C{EC~Hio z<=nvLC#GWiD^UUs7oom$ukg5`w@tAPV%Vk_FAtk z|Na95SS=mpnzWNZ0ewu|!INkm{04@D?F7Y6Oa@nC6tLuAsPvNmKYQ=qAGeJpiq7Bq z6gWMZU!)v$tKTi@Oy*uib~4&=Y^~)ayF0r#Mw3uCMr?usK*^d(?q@$gJV*j0!IvI( z65@}2F4Tns7RV*LMZ>MeGH%i z-s$mVIvZ5N6OMWrelnNf^ysJvPv$h{kFq52Vj6%PybRLmpKkx(5_o^Q6)2W4QufdE zTuVZIyZ6d(jbn8R$A9>1uQ=v``1#b^mXBHEm>=_SINXB~)^~%Sg4@a74G#TNpjdQo zhd30hCJY;SHMw!Zy(}L|zA`AgM{5PYl2CpMxkfl_>vxvI|Zhr zulcs(8^MR>ck(1h!kdooaJV@IxhB68JXrosOoPHF@*BZt<)6rDEc--Gd)YU8wkug= zCbb~4zb_M60roTUN^l1$lU0Bl3FHToi~}3Z{e+@ujy)%zyEtO zoy~ju?>Sm!{V$lS{sn^o2yOr>D8f`!8d3y2iXcb+o-m!#8)F1#fdH>5r1zB@2)6kb zMjKhwx!mZ>os;}mrxTKe59^OcmZ)CiJgh_ulcQ7{>pM9tb(|?w`}kyLbE=E7_N~Dx z4V}Ac>!3WjSSxek`d?GB`%kzF4zy9KZGrkYQCT?-7>0yr1$e6wHePOowefyA>J5Th zMWk7TJb|mMKNot)zCJ_ESMta}a|-lk|C$iaI8B0yIKhZ5{9X2>6C$}vtT+~^eW=+;Y88nQ@b*&@|nCI3%v92$UqeGi=xcN*Ae z>Tkec6Oc6wyed$mfGSu`sTU z;%04U{Gd#o8{d0`BErOiGiNP@*AJs^bL=dC%vN$u) zDZJThI_4~lzAV}djBv97M|WKXC$%7}fLYHa1GGR)C!^-OsR2`tS4}A0wsVu+jh~Go z%vP{{Ikj##PN`*EH3E_E7^0Ug;1x$&9YA%ECqb#~qrwLHXN>zY;REa&;yID@M&$f- zF`rFkD7xsZBxu@-s@xk&_{2oaq-RJN3tD0H|1cKph>yP1rAeO}!z7rPNAgchVl>Eg zQUk3VQcEB*$d>~mW6^oSrIYv|LP*z6Gn?QaB_+kg={mS_4z++!V)aRsKC8Ht{hs}% zBIs$z{Fh($ltz9N!JlH}ii8TZrBnrjY~k;NT!0)@1yc343OLcXvEDM1Gnua5L6My_lQb1yP6b~Y-B6r! z6R!~s5l2jzBx}g9H-s_YHpag!I8(aE)Kqde8AX!;JZ?#q2JwGg;H>)=KwbX-V!Fu3 z|5uZ7AOC-jRucdJxY-{`IlW@)N8=io8bp@mQC+R?xm^mY!t+DC3KLL`V?hbwPvKf5 z6{+jIi?shHz^wAtB@pwS*0={{I9hP5{u%-+;MhKMr%0O8mr6%l?IO4bmi1QaC&)wy zNsF}VhGmEkbuXv0*?4KW2+11L|8JN{ll$sLl|7mum|34qv2?o)&xCa@m&HO|iZh9+ zTc%aQb-`>8F15&Wt_Axk(8s)3d)cgO@Ub{NBivRFYDmp9YJzV`q+mJ$i>(PSXCT zA@bXyue{VkB;*Oil^GFvR9Ebyv?l(aD!~49{@;9(&;OsSrhWa#XKA0F|EJ6SKg9o2 zAjo^m5A9AV;-=N zgR#pOG?6ajgvaTh2_!vH5GxzUl@(MF5K1Oz-2~GdA3T#Q| zHLjZj-2$|H=PkgN;oaFWOlem7ifjBer?2bA**J}`=pL4)>kW-x3%P{V7fM#!A*J6o z^1g;4DQqhxAUx5Mb^vCfOn?Q7VzB!_ov&!QUtbucx0W(L| z(ZwtS7In*tG{)P`$IMSpx1O4Mnvc_)%imN9!cW$v%jtZYZp%H-PfqxE9+y-P<%9dR z4$a|cKdBV!eePdHYvBLOJ8&OT0HntMpUuXr{QmEJ(%1ifmiEc{|LO|q2e|$cK&jVX zxSjgB9e#z2dirH{ynZ~$(L?^%tXTFq!2xx1c7+3Pzfj|37ol}= zt4q49a+hoTT?x%J3DghE+3Liy1`IOS*Z}E-)p|H$3`akK7vAe~bk53G2U& zr?XZ5{+G#gHRDYRDBk%|7X1$>qxh3s|SeC&#m+ zm|(O=@;ijESjd)P@U3OjDFDFAQAu+7|R?o$XKi6<WE;A~}-XMLq zY0^j}3@SoT!9{5NtVViTxJg~znKx38ZAhXYc~7dPJnYYnON8za-fa0Pm{?LTH=A2X z{fEw`fbrzBsX7r~CD-gUpG*PaN>?y@hiGzd((um! z7enjoboC8ovRk9%Z*w^^GGH1PDkWD~NycdjSbbyx*0isf2PqjN;wN))B>o+8+-Yti z;^*X~M|KejQOMJIK_57U-)6=5GE+7GMBbOi(FdO1RM~9K3@lP-EXBhLEf2sbdyu|c zz{B`tUsZ)J;@VwgXS5f~JXwm;KfAIj80M=O$|-hN)gJ9EB5PV682;X5Y_HvanKxhV zB7Ses?I8bZYSqFh8rijf(vMEnEqfV_3*A{4X4}H&vm11O2tJeRSWH22Uh)`yrlg*} z6k2{)Dx(S=hl#st2~#2DG}THR+X7@xA`+0z{ojNPwh1C!0ntZG75Avi(o%RIZCPd- z@%ffzd)+%MUw)6e_>N7UY`pRwzV1p^UB@-oc*W(qEUvbeYpuyjt5{o)xvZYe5K)~y zjvZns$VW9pj1^vIg>?7-D*S)EgPRBY{(oo?|6eY0=l>_m`MA&jc$U`8|2J1W-y#rE z;Q#^2AwUa=GH%u^B>$IPPayw%O9(eI<{;mWI2rLRQg7#PD5zN0b|ZS04csGcG3puNA(FQY4@AYO9kg6B#`zWHwgB@ z=82-vNAxld0`(!2@QHX(9HAq(s6B zfLu(bj;X+G1Cvz~t3c#OCz)x`HzHFBN{^@Et6PQs*QWQA>;Lg$o{#@8=i_Ow|DU6^ z(Eoo+T?4>441M8KD;}w0am_`^7sjP-RlDe=qC)#joJi?OLg1q)Aon8{AurW&rmHB^ z71*t3ztI3&%iXL+IEDPmh5yH%Wp}Gs|2r7sYsC0aWp#AR{rN+K`d{POESLW?o{#(c zAD^W;mH}Rm1QU!B9vCSeD7}&~d50D5WxS4qpzXbk`NW*HSc=*0HUCD|h2rTls-ZS& ziouTD?LsL^zx*;x5ij0w2*6;Ag58L1kG6!|3{F8r(NNwX6a*R>-SO;{=rhsHfd01O*YD{0bxvC8G&#B1d7KpJnRasJCMr>?hznQaA> z8S-L^`Te=FqwMW88i!{xk@*xXmdC|M-%t`qCC?D_--N-v@aw+D0b=)zqur^zMyUwo zH3`Lwg~x(%Vd$Uc_U{HqYaAZ2?I8dA(98eyv-LLs`b+TVKY#x6&DWpjo+58cz(BK| zuy(VxHX03bFKeO#7)8N77!Fn8%OS%)0>j}op&lA~B)kr=#~B#jfGy_{J3TtuV7`sl z@|GwuUYW1Qj?%7<)GbxT<<2SNW!lI;@v1n;OC$9 zsK3>3$njuLE(354ae#a=`0Pq3n+h-Ad~I&Xk|5rpZ^epW`B|%B^PyO3Ip8}1=o0en zDLCTkQ;LKR;g@nfpMuxu7STPk|2C^D->r;azrgeq{HrJ&=^ABqAXb|RB>u1_ayil(om3e?YZoH$n&jm7v;IpKEa|c5IG&FZp zuhUmkPjr~thjx;A5sA;#m3S7!L=xJ6rG|&+c2h)M4Acuc3AGt3LkoEUiZV>q+mR2B2n_dTpTJY^)R#oQk?3dE!tJ z2?w{-6e)gBt1ygVxe#ceJ`yM;TI9^0k&muS(qZ*F<>R#q`LEgL$B0n=pfu1r`9GWI z>wk{N{r!*6(_HdjOggwG6hN@Swzwetuh2UTc-OYuUj{FgWhsehYPA*My4 zDBo%<;#J431-m-dH3s_u3T;>i=J~E`hy$>n95Z-LfWjD31QG-Vi4)8JzXyL}|2_C$ z1CS8zHQb>CU?I^~xg<2R2VA8{RELJyT61vFkT4g`X_ zV>L;a`u`HU*RtoKSsKuQZoO)s3*JXRfx&R#e*M4_U+K;1xxP=qe-HlK64c27VJUq@ zCs*fZuU-!S>+7qE&Op=N{=^1AAJ(#uZjJDV^DU%YXV(^pl*h0|cMS+?onF=iXo98z z;;F`*J8+WwqZyZdEDn1phF7zDmy$1k|#+y9n-zfiWb|S?2nS# zJ)Ha}+yw{aUw;xA*A?sk4$=^Zn}?qOuZ#bU=hM9Zx9aczeV*20{r{l&0l+nhxh`5l zi8`0Y;ihKcr`)7Jc?UNYQJrBtI0TVA0V4X=0upn8 z8DN}}a1-1EiUj&XDEWXB0B;HQi?n0_%hFnu_^~GszM=3IQxfh_$VYqs8;92T+v<7%x{BORR@|F(*67u?K_TUMhm~v&$b}zkK)OR~N5e{CM^9 z?e`bwFY69|Xp75a8f&lT8h=3kIgHMHSxidS*vX!HG2>+Cd@O-GpZfPg_<7FfN!KqZ ziK_Z`JWo1zJkEMAf5E(l#6H??5o-i}-!bAZI{-*eN4G)27Xxq%yde@c2p1M9$z8*@ z_~FaO-?iv3H&&YoDtjy)VtQ>m#kZGw*XNlRuw-B+ zd1u5S-5@SIJplXiFs*QIa43AGvUjYI5nyO{i|9GoMUWye`16-wGM>(bXO@~xrBDnw z*{HviH4_{YV#SqGpiw2_`e}EZqt4jY{jq24IwufaLP-mSL0+m3%Ap>80X(u>3o$E* zbw@Er00sdt*P5^(lM;GTIP0D>Ip~qlgWQ(AmSo9cX~9UOSssY|-Ifh`8E8({XN4b2 zE_A`Z_q5RwEv92>J{EaLC3w|I{$w%Dct`% zS@ibbvotAb&Vqp40Y-KR$O_e9a1C$J0GQjaB$5RTWWtKv4FKPKcLA7S3w)iFXK7|3 zTJd_xSH=95G%{eIVCi*PQrY~)sNXDMUVeW*C=~>0b?NBVD@tD{yuV)7fZGx#Yr_m| zL>c0ji0-huUPP@U2O#^^LEX0nTPMMwvXcx==lkun;BQbW{(f4u{HOR92WW%*r#$~V zUaV&M{h#He-~V}*CguN2nPLaB=}t?qCHoe4TNDBx34i64Fk>+TF++YsfuFazvW{{! z_+3Vtfmy+qNWL+!Yi|C@M8^~t=?e_od<})>yi7p6WF8EpCM>}ERApu5`qv)nLu|i4 zG+6)hWg-4IUG@7v&(bRGzw{93mN_d^!R|t;O*nC$SUZsWhia`G>7{Jg&)Mfeo z&Mchj^&dx3fOaV4Fi`dNp5*@TY5xAt>14KC_Ur#Snp*!+B-lH-{;4?ay5=_3Yug7K z^>f2DUw}8r&H@~L0T{eRj!vThdT2`mA5m}%DHe8$9qW=oDg8kbd0#A#^Fi#5{e}^x zL$}|!o^7JI_$ z%?cF#6w5(v(y1r`QfU?DV$~&P+JW(NdG_5w=|m;73?^eR9fRro5l15|IP}fsca6r9 zzT9pk8C&U*%;#V-UbPGamoJ#Ia4?IbjE${euKwBLB!kcfrWHnUk>S9gY{?sV^v82P zl~$?$A1D2@KL2x8IRCTi^FN=bNdfaMq8lX7^#sI&0gx5I)0=fdUp`WtqMvC~q0$1l zO-eOl?r`%pNbB^UhWvfH`{^STos;Ok@++Z;OFr2rJ8WESrM?{4dFr3-#OVF(>s`#a zq{y3FM3ubFVP$q_fiiuL?~{uPQ*5lB4qVyk&nptE*T2Uf>ihqpN&Ih`U;nH5w6Fj4 zEUnW2|6W$FKMx?@z0(Zxn6ZG{B6wCC7%2PbId_JBWATBi^)GBwcJ!l1LQY8#AbOS+ zG8YDXQ>jq5{#Wzd`H$&*yy*S^XK8Z%OT7e~^9=4V-b1hV%02=E1Da)5*a#i8 zu_aoqe|5iEo24&Xt^L2qo&T6l`|}^q)JoTXHqZH`ukY1sz3Syfc~$FO0dBd}gAC8= zRc=6Ux4;9qu3X;=14mcxRSgEoRfnakIDqR`i}(Sp!TQ%#=Q}F@Cg;DVdHp||&HDO( z&(e(bUp~)D0u-M$lmW?=1rD`uq&?%%M;{KsXPBd1*;Nn8>++fhj&|m4gKCu(ku1m) zvp)f&%vi`t5eL+Q95Ka+1i^Qax~w|aQ2}Awijd#AdM(3G(93BW7+oA>BscN=_4_b= z>)x8n|Bl9A6aR0Sum3%r&ind*&(ezWKX3e5Kev?nxn2Qk1c&f$v@38V!t6l$v`=2M1X}|yTEUjey z=U0B)HJ^9#aJZ>nnbmSY;$!Wyg!)S9{j?^J=yUidu|707^T>aC^eZP#LUo~|SA3g*o~0S<-#yPt9F#xraOS5f1Y9E%T*rZ2_CYz$^@c)|AaVul)@DQAJuF~f<|9@h z;I<@Oj$*E_hu9Q-`}MST^1qu8SRen(%l}zl|Kpijx%|)jfQ3gLq<$w~@B#Avk$l2( zh!6J*4Y(z~VR^5u{6o8gUY_@@thJQ?onioW^1pch$8_A+e}A6lkpHRVzZ5?z`P)I{ z=R*MzqMbqkdDK4ba6mH3s&GKFaT|vvYKE-d{KN;HaX~Q#Vru#nSXCUvx;((vd(X9b z{u^jb zBH$+0dPMy4Y`)y^%ivdvDeHAxQmHOKsN={OvP&&ST?R=PgA?A<{ss=fp;~n zbFZdt{Hv4zhKDt66no5-k5!-w5yuq1JIW~E$w@YO=Vf(lu@5wUx~+ly*X#7j@_#1d zNk0E?GG6uhf6vkk`ESg#(g2BoZdci<#PVw-y4@PWA-lVZ?q`mRmC5ZUXG=e0^tNcF zCUa6PuT$?+zi!EFMsGh!Q?zd%p%vvnfj*)~Kf)k*_|3nn)%ySQ{Q3XIeA=J?eU>I~ zcKR0L5TKCL`-tFB-TQ8o{0Q)xLVB-Ce~iF|P!B->)YWRT7LmMPD7crm7o~^t*N`C} zkmO!@a*KWB>#8Ev_s2^X9Kj&S^vKZ{;2RVo3OUjxNT94(76~Lm?>?zkVwP(vUP7fI ztCA!mv&K>ioT44X@}4Vo(|tpbFp7fv1m>?uu)5d37|`QLfSUC`n@tM$zm3Pe|Nksa zuKz3KkX4E2hZH1-TBJEM&Dd%#wfVE=dUtec*_OFt`XgqSw$f7jfx* z;vNjpsQ8sweBfsg3L7uvU~H~#UEtUwJ{k&>NQf=pACgd5d=&i@V_GQnmRMZS_esb` z;#>7;ncZ1}r~J zRDTMu@n#33y4i`~U5Mx?eP6(L%t{8GA&(;75VU%^5!_4}RSWS1w54j=6q-6~~ zkHn!9n_Ri8G{RiQLaI=?srJ^WjQ7#IGXPk@KWEU<+CgMglI=XhMIJl zz50+I8HXHQ$AJV?+o|<-Ww#cjYls7|pZJHb30GIzVjtx3+5Zze7`U)K$UA`6@!DY% zCZcQTxmc&_yKMx!e3p8H?LSRVoj8Q7TT%;06$b4-)SZTi-w}EfkpO%5Wmx};46RSJ zIqg4TBR`S@SY!W9my3Dc|69)b{J&>um4=&Ly73VTMLH$9RV#92s!ylKC8N{zFIQhX z)cotpVs*{I%O|9+E5ZeVvd8+4u<#|F+PeTA9APmIr;*e z#hh$XFF%YjA6%Nf$j{lrrIwEh2w*|6FxrfSH=pzMt!^U1xKM3B1t5Zq-4W_{>@I^e z!l6K$(5j9p@-cg8pAtx;?skx3=&v8zp$5~eOA>C#BXp_2H0sg|uy?a1F+&gSHG|Zs zV@3k{&@Kgxd}mK>;W+ib6tB+`|C!8JdHuf}_xT^s(f{VPN~zUZIU1 zD4D0}AseJ+@N0=6() z*fnSu1wwhpN;x}_OvpvetsenlhjDbnsu#JAB+!YZyUGyU_b1`>{18;G zL?UtplKGPBUF7+WZi-d4lD_C{9LpC?6Tdx<-Z=16ll<(i@_}j`qy43i|Z6#lfoJy@I zIjVi>OKzo5hOVF1;w@#{o$xiK4I!Q$62WbOB-0*S&A*k^LhDM^!&c{HY)*cL$(AGD=rEU5GFjCwPIMCL?`YN~|Ex`kMCbW!$ zOzhjt0qKQRG6hq@fLsfi{wnivDBp2`C3IU45xl<+7**18&-Krp%p}S&|hD)b*WmKV$pW3K?FGnK{DyDMA=F3IV^{=!b z%FAKLU=id?jbp)IWH54sb(tG!k6{>84|<)jdwI}0>dVM4^{GFEsBbDjGsV!Db`9mn zPs&=lJ6UjQ3YTj_iy4C3*>w*JSKj~ZY6K6Q#GYIupGTt4v49mEAw!L0}d5t&Jj zf3T>96s;t(;d_4(R4wq<>u9CS$PMwhx?%`VHuZQmPio2SxXc=H{IzV~e`MSM%2`+b z`?j?!NyCorU4I5?K@4ifXkJY1aIrLYT=rgnw^ani#-v-Cu)v+;i*hPb!Z%su?%;#FBql&8f|*xW5Y0bd>uY=HGIx9Nzllb{}#9 znQ|62f8G+j`vEWXSJFrQeC5wx$$@yns>hD7BLH%eh(U_GITM9LZ?^1Jkl+M@W}r>< z9R61Su=llIW}%{&J^c>HK#_dwXxMCvJ^l2&+aMj_k*)hpmDQ-24`9h-cz6c5u-x1L ze9|q{OqK2dB0J)mG+#9e5Eu#w-9Lf?AURS26CB?4-6CvR1-JF0*B4{qmx{Zo6M#=t ziNqKK84|}|tq{HOvoaIx05+>5Y=gH8kN{YT`U`9)WS{63_gN z-LoUzUPjZB`T0HAQ?ixFODqqrV%%IHAG6ODQhPOoYe%RvmX$KEVmHlWRl~e{FCwV{bg+J6 z&=P`WX0FQ!D8vgqLDN zf{0mjXviKxi|HpDjGZ20%RoRP8=$h4Ay{%j9Nwt%+5vhNzudaDib)GToDcC& zM^)&tBEL1SF;9vOWGA&bRqW5rKmOsp$tv`oJ)J5!omUm@vnMjjD6|NvTTNcpH?f)S zy^3|wa;_uiobCJ?txg71Pp_uj02Iq>M7}D-3jiN{bzq4FFC8#nG?to0it#&(+0%^75~{B_SVWnYy1+T@EGa$&S(0 zB;G3ZB#){U#X;f(Ng#ef)lx!Bwz19Ad+n2?+JkZKqv%vb8)DdI1nuhBIH3lPZuUCg z3GLKtd-77$KA!?MhX5~@sV#s&79%iDziJ5_jTwoqVxp90srw*K9pWTfV_dh+zd=zS z9d@Cb=C_G{)nfeFm(nMhZKsAApd<$J76>D9M1_<=xckJ3gZ*qjkwgP;5{Sj{yvy+~ zB{B35kjFKRivaG-V2*!w2@{n9Xq3QEi-`wFaIfMF^uD}CV8wj{Ax^6E$6rn~2gXvb z;(lflO#o;gUnDL97s%dr4kNCPfvAMHl&x?{oI;LAhkY2m1CXX(CW%YNe;+2T;hesP zv9AiBIZ8e2ANzov53*N66*&_qMuQ$R-;zi)lI>@SHOX74UWEz4XNit!G69}T_a^LtK4!?qvWzqf>K$)opzSgaJ0uYxl>fs0juYpY=JLmhJ^So7OM_P4pC7|5Vn9O5<`HtE&s>aO=`x z$A!0`m$;Pb33O^aAzhmmZ`8I7mUo57$%4q~pvnY)sDgj6ww$Koo~|g%yy)b8_&RLP zjv?5T+R(;2>5u3Znp0;pYwpa}m|h;{*q1&*O>ia4SBuNsk%ZV~?k$cejyyH~IYf+i zTxybOy2?DJAK{&hcl0WZUlrcNWzBgwGBGIZ=^*I*w-g7Bf}Fcu+Qmf0EH~$ch*(2? z*(tIU_sebF;c>Cd_fG9* zty3{Rl%}}VH?ZwAvGi$r{IMI?F8o)LH+%Cy+1PViN$1= zC5j_t{8Cf_hPxAKxue&kG*r;mVl&!;{&K7Dp(n}akXvx=d~~~d$C!+I4&&ljW9d&_ zh!!5ymmxrbz9ACr7epo>ZgEdRHZ(0B-V}mx;9$l@D6i2zO}OEfd9?DT>1de$b+!M* zDI~5i&|$JH>kApyF{CSnL(F2iCK;p`vjZZU4+qpUU~lbI6_Fb~3RUvTP!i!km4h2v zRZFb4BH6t31VFC9MBq6|O84dKFY znk|l`(TUqQ>%ChmdRZFKYdt5YKgvkKuVZ!QCQwM|j+~m1<`pO3ZoqcU>QO`HN$}3a zdl<%lARQwjEW+^CV-7<@Hj>4ji$UVPHfIZ=BY1H!V7X?6Eh2Qoe`#i3HFe#52(Cql z^i<{1YQj{jvU}5-P}zfmTZGt0u@=y3cX1y6Q1GGG_iMbIhMvMFqPG{wJU(+C&D8pL z^9?`XmZKK#v1DY)KoxkL|5;{xpOHruX#6e-m(0B;J*aT&4`QkShQA%DoFXL^sE}Mu zWi!2~@r(Yh&viORg-L?{lE8eSJS~P#D}zHwr8yQy~G}(F=fP22W(^K~=~u9WOmn z$@x9_7?iVV2e;T@}?;R9x$Th1@f^6 zwO1hHD1x&11HnNNJI4OPq=*;KhLKhw@G{khvfO9CUZQpm)Z&@ zbM#SL_E_%C+3o)z&~G%EV@0chmM3fDq)Zim724(gw`-Bv41EQ8q;`EPy&fih>PKOy z6+Y}i4kYF=89-D#`I@sV6n=MIPL=JvJTFt1wZpvpmAGc1v6ytIl@k-TKs?C%01duK zmvoBjQ=u;F?Ai>M>Z(bWhXMWKrb*Vn81rm&5P`cTDB2xT;!zmz#H}Tg%MgZCUwGo+ zR1$Cf#9fxBc=GXPV>Dfn#G_#Xhny~rh1Lg|Yz!DyMyklByl>yZ&#>EM{D zhCL+s(Z<)pqio#n4)nZ-#^o zNQd;X>w%dy^XYhAyq1Gp7T)&Q^?Fl-x_@!rZPnNi&{5Dq!&Im$dyH}$YucDAhJnWaf;DpThThtIgW_ZM>H-eja|h}NdAZ_K1b@SP zq16z!#pmLo1}Cg|=H^|E7g}j^V35Ml5PMutm$eI@lrW7Eg#!(P&IFIbEt+n)H}GcLd=aVPucXU zC_A|F2o+wFjK-+iX|u}eYjLW$fjQKFJhh?$UU7iWPf5w&r41M3QNjA3e}l0DV>kpj zx^oXl?R4N$9FjgpO7p~jXL2!!{3|i2}D(p3EftV((o3VxXDi}#EeC?6bxn6`>{16&!VPE zbKHKOQF5m^m}I*h^kg1C5)QM@A%TUHsvA)N0sg7ONx4Eq;?$4Ir(56(BuIJSF6*`_ zv(Nv?EgR(1%fMX}^E2DtoV&$21?zR(7|E)Oj&y&H=c013#8G?tC_5z9co<*2P2#i* z&TNhqU4|QI+r3??Sr`7Ht4o5>Lo7wOn0F_5JCXyPh4*%Zz0P_M3HpZ{Ymepd^QQz2YHOi8dC-PzOh@|k>#7D@L2IcB z%gU#d4UlDgR30`nMjQ0VsjHZ+3OjT-JoL`+Uc18Z?fUJ?_-B|M6_`MZ%w?rSX~bN} zgZD9Ch2lg?PL50^d~I^xIm;uDp*z>uGg)#dKlge6WxULVSe>O<8plZ{_~ z%5`(#{*rMXAKXnlHxF?(S7dH_X2R(>_M0y})g9rld9Hi=j7$0YAM9QB{u|H`UavW~ za0-lc_DvH1OnIU`lGOpxROFPd9dfzIVyStDMel2Y1LyrUSl+WPR1en4u-;=zn)~`N znXHu+v3(FIt{!29m$@IU=Y%cIcX?T_JY<+Z9cSY=DE`gF=S6u?#q-ys)azzVB?TjD;iFv)EYfT(9nVX3fd+3%C?v~@(43^*D;hAn) z^!Jd>DT8OOH>DVTrXWoXXuS3FBXC6i=BiTDb=cBipzX`qr2-0Ho#>8l@EyPiZ z=cfC;i==;>*h9tr+E~JV)IpkkSpLZR&@-$WEPK7TIfyW$P;QEr^ zNB%>)Xp2{NJqp z;){ExCN5=L#t&_sdOOeJkp*K#hVFl=vK#q2|DM(IIh-o%$|IB8ZqLBHm}my>kdn0Q z$9G7)La2>^sKPw5K+iMg@O1sSqB45~1_smdUjEcYftd7vmU~MAvJp?Mmp1$i_7~RH z+KT8Wu)UigCs)(!>zmfIj07u-%{5P{yoLR(wN#$4#hW0ygmF2Y38S5}o1OwL1-#Dv zt);ia`d+_C@-MfluX1#~J8H0mdSq<@HO-72+b24Qt$YcBt_5SB1Y@qze>bc@wdY2La|E9q^B0}t=kv^F~w~*84|#zHzh$ak<`0R zt7TlpDKXP&-7CtDDLpomWk-MLvD#}|DE1U2Y*kOgbiNQXv4WiIyW^@CoDJ=bitoEH z>~vO&*O!m{S-2l{u(26oBOR$=Gz|5y6%!W2-ccG3fCHfj4S`|xkgUAH740Ow(JLj@ zEHN>rxi8msSXAegHScoKp{-BG$fHv^gj1oX7dKFm-IehkeK{K>B@zei#HxQNGFP=# z)pf|vOGzw2rd7A}*;JsGOP~uC>0G$ct0vW~0zU2w&15{qr7wY-k^}(+f!Pd!rk6<+ z#(KV}P8?4>!b8T`=Q4Jq%SO(Pk%eV$(O6F=!t7{2QFVVTKR%~$>Sk{FF{b|-;A4$G zN*+pkQZYWS^4^IY**&Z3DWJeVb;LSjd+L1rG4XiO7=m3<9r^ZucnpkO*sjyP4mQw= zYpJv8v^DmN+%@(oik~yn!{rlBo6H7W`t9(M3K_FOr_*WI>=&8W!kzOL^Jcu18!mJSSW;F5C)iY-1DnX353roovL9uo=2Z=$&0*O?wfsVzgp5_@H@= z8(HFuWsA;voz2A-c`d~jowb!&SwA@Hf1?`L?e|M&NxRU(OU9;Pa1uG990ZF@E!(;C z8`9deZvM*s$NgiOs-V0jUDigUt#s1=c$LEhSl(a;Y__Ck_f+GRFKLeK;D^?ebJk1OK!JDhzwksqDx22 zmK}QKHGXi*rKICQqPHn4VHRn&9Ff&eEheKdBXI)*AVDP8xp6Kbfh%{}C~rsPoOr6P zKkt3#PsqEVUqcWQtwaOV)}W6dymawjt4sUH;`v;U6lQpi6(*P-;2l*2uH!QE_+qJ>CPcq@rH<~CLtff>_d{$WmpyP}xua0Fj7LkKGg7r$AFL?hDQ?v)yMR zCn*l*Vq>ZKqg~kbG|Vi?SS>~CWumeeJIT$AtXeXm-XkSlHeDC)cQ1zhZ{3e0Lub1r zL|l(rEyxy)+=zCZu|{%QV_y|FQ3EyS>t;DRTqrt#CNtN9jfu0F^t*>B-XBxy#x<_L z>h%2U*2meG53N6eU0Enw)=*nw%w!ksHA8phfd9l@w6Nmh@YZC%_vyjGWei(aHdJ^> zVRZ-&uTfAwVHNMB6<76DIaXkwq$+dWE7aR6tm3C}_)pEZGoO!RRQ@k@f8XKnizkY) z62E!k9Nc<6H%pv?`Xy{#P98$bmq@h(7LPaggV}&Bu9MX`#C`|AVl+R3%G8DoXUhtU zTvwaXa8=b1nYYJS-keR-jYC2_N>2{TBg&iKITJMpXy_X*IF=p_14nC7vYmT8*EYZ7 z?T6fRaq7Y1%FyFnhTJ!ooo1H%aV^7bIdG4T%}(|;4?aujbBdH5pxx_dQt4*cXD^9= zg-_);ElZwj5z-tjcE(NB;xICDFX+dvS;+yftheULz?@Xa#I?*W$3@Jb_8mv9mClzP zefkYlD>L7$CUhILNL%!UOa3)U9=Lviv`tLh^87Fe7tWOu!MluO?}9a1k|S~bJt0j8 zxI7%*%dgY3@m$uvs&}#ROw;VXo)V$Qx+>lJeu%RD@IF#GshK_ZOH)0m>ES8hinrV} zj{eC~+Sdauw~g2?thWPD%?1k4xft(QzfCfYabM0r>Q#cHj&hz~?!06)xc3$ADvl2l zfC<0~p12Gd0SNEFg-npf+xk>?xJy~38_(^QYVAra(l~A4$k2A6BTIG#IwR?kOv69j z+*kt&>bWo`r>bi?>tTO9I>j|kYw5Uiq-(VQYMxw|4%<6pNg7Dfb=dx09$vJ=YeG1p z?Cs}w)aa?9f0dVJe^cx7tT0hp6&JlhJ#BgY`<8(%Rzn}LB+VYX&LuplgstflS2zOR0gOm`U0a-GGmFo`j@0K z4(8!0pIBf4m6RIvs1MbC9z-s$pcm`5X;+^6GS9l)a#!k_s=C0<8$Nw^QRXgbSuQRS583I|(0-Li`mhxhEN08XKWuiSxiwp~J_@l}amtYUvwA*mEgH5ASM9%+&adSR06!L!Pq1-B`m zg#_phnlO=M{>k`ItUX3Yu4lF?W{B9Qci2#ay+&y6Y-`fp;DJ>4Jv&72&ox%jDe>EV ze7<*AQ}eTd(E_6fcV65DQ-FlAgHHfe%=#m8%9|aF{_JSW*(>tFgd1?@2O3)dmgN_N z6Y+?A0R56iwAoPlg{pUIiY9_{edSLOL5s{hU<-HF+iJEwkDYgc(A9-i-^gbH4n_(t z@&{%zzgl-I?0q@V5ZyXTXy6tJIx!f=CEm&l<`uK0HGy}0fM@iV+6=~oC;@MzXuJq@ z*8|LfQQRwmNKtb)h8Ip9T6vbnd+s*)sXYr&Yrz2q0V4i<{~gN_;7V>rgtQZfDD&3evQTpkikTCzkjm#+UxfeR>c4O90290EQWm?x*byROK#-@$1kDs7HVM5 zR}eYwx#daljtTaTlpl#|jAWv<<3#}loDF2qP`MGjfn9s)>~Am8>~>$D*Vhb<*UM@Q zozwSfOUKQ?$PcftV}jS`qxB2V-7UP^Wm%`Y_w%jw8cim{AS^7P`?BBnsi1j`&YjT1 z(GiC62#0^yKFO1e;8#BY!}P|2IvoZ&2m2$^yqY)#KqkT|$%{S8%=Pa1Hj?(buef-} zd7o2qXXbVM!L^CNX28V*vYN>%@DDGTF7(g|sGHF@SWk%b9KOpZdIf1gSQPNw-VlIo z|5NhQ*W>NFL9pjQ&F_&?gd}M9Mn$+y*_@<{_r5)p*{zWiAL(T_7^G(;hr#kstJovv zn-R?RI(>agXdnfy(o|r=`{g)%$&3?gHh#h=Yrw6RzuE-g%#S5&CY}3DkZ6vo_cJga zimVoLiRO3S<<{u#Tllh8G_)tpZnL_>z=-!FnEsS)uC$eL zIwUuT&!3VKau^f>2PJBjALm1oYG8`ce1v(i<@YfRa2{ms{KZ`r#^ep9ypWtQ;=V%m zD@JI2L%hRWo8lG3u_43+d$>NF&chPgtY=aPKA{tYF^N=vlRaK&sJ%r&=YQ8Y2U6@! z5P?me`Omr5~w0Wl(sN@S_}CIrcbXr3zCgEv$uQaj^@ z-PaeHCV7P>+oL$#P-T`G7obHE>&r+sfKhc1st<1P$2D6`uvIiLw#3*HZLJ{TM=(nhsRauiKbcyHx=hV$^)yJ+A>C z=3fXw2}=Pnhr%2cBAxJ%l?L)dl0FuL>qp}6ZC&pP2cd>)Y#OO|w)G8jkUanJ??zNa zsx@a2$5+Xe!tpGEiX%xWdn7uKgO%6=lOU*Je<uO@tmbAkg8&;1q1*@}w~x zq%}U7tXfd5Y!<43(BHw-u>GslmK(?WT(--SsM!t90JFg}vxZmwNCA?H%!zS?PK)YJFA#!J#0klhnkxc<{|#b%aZOZs%|g}4Cj4_M z+GaFFjH~?*5_R3U4Ke0=?=z)N1k<=MQ@OpSo&xFg-n-hcB0QlY=VrS>vXrxg!{k!p} zfvEOIox;mnJ#Ii3;)?_}>_wV0)0Y$MMJxUs*3S1E`{Jg{8-V0?| zFwRp0x2kFx9>E$t`sz+BtD>Fbm{#ST>k+ua;9lW3iX=W7{mDWb?war+hT_aX`3VKq z+4UHx#V-QYJ=hT&OQr!_)wPn8Kej=yY#^Yw;JKUx{>I_p&zJJcs*XL!8<&7hw%&J01c~`n>7wLtd zo7}1}tT!GA6X-F%_#9o>^Ssv)T(jpPR2U-mF+w9l={S+doM5d(R&T^P!SFF2Arqz4)QPu7otMZYPA;!(AceK z2N5lr_FX9HKN0+K1a1Dt6|3I=AZAH0Va&iYORk&#tA+=$EhWW)?MKB{6h=hiYOIE9 z<$}eE#N4kLlMNAo%TIsr0m&+0f*-MAWw;zKu(doFN47aL2G>SP1dV@^m!H&+|3M_CBRkPi=kb$DBF_#Qvj68B*;N z%QiPz1NPUGPlVcozsO3*F|xvGLJa8ZJ1lMl&=v~_qJwQqiQ^d^{gu>7GLK;$5Fa+Z ztP@t|4wlbxw2?9tcr<$9E@b9j(BMb$JH@0b%eaeG47^s8xbjbD5MGn)CL4{4qxw6& z{>zEIavzo0MM`@bXde+lo1`-OvqfIWqq&#FV+NRYX&?VOA~7R0+C*?^3DjR<->%Z8 z!V~3hF+lSi$&H*CsWn8(9E1t6tETPc{>Y@t&aa$Uy5(D;6?5LnHG%;=o{rmw_EWS6 zs*LRti#sCzGe#Jfj-h%H99by#kT{|n_4KAx3{2)1v8};Liz7#POPiCJ0lA>K5k+0^ zp~n6AY#_w1$Bs;(lkb9Zw!zL|^~M7-sbH0HcP3h{5eQ`mSEmSDinl0_Yy5XeX;n!2Sb1HlbY?@Km z>cpiG!~Rx%#ydnD?19eDK;kI7wyCsLelmzZsj+wT&oU%^&=(a8h7JylX*kNW^)Brl zA`%2Tsz-WMQ{=-Kx%4Nt?b@3JmV^6G%f-rWjxG8eN7&MWvt$22kvo^Hd*P|8VYC;O z9{Qxjrxwcy9<#!GhsQK-pBEr49Y?MeM&-BYKKL}qy78>+JxcX7KN5}Px3+%aYeb!Z zX%XTS?|8B!JP|FEa9JP{w@0`!K1>qzc_fOYTZHKAI9D3m8Z*(qZ91?i7U@07G*UO( z-ckNU`|Yg$;S2U3EW$!3q`v~c?(yVnR&00g?yF}?_vxE-06OEf3SFA$iRBu;G>MAz z9sknnn|i9F^(q*>Nqd`h>^sd;J8fUpn@c7xSMG zz?jNic*k5kbI79&vxrj7qIG-qReC}m4ZL1v8QCe{)oYkOI>zQ`6eE@M)dH$8Czt#C z&mSf~dhP`pJ{RZc6ywJ~Y0;+k+Sn;&{E&H9rTRVGFkSe7sz2;VZr;tZ`&cuZ*;>Zs zwo!q{!zGcj>z>t8(HL}c3h5XxXSetc(ad~V+eop*i+I7zFw;?=xv)y{w<^7+Ski`3 zqyTYxEwxBbK_sW&ook`wUvEdyha*Q-kY!?t`H^5@R$b1{b!dPTXf(%xD0FfVU51eOR3`zOqOd?Z4H@ zpI`ZLHcwOB!Ke3#-!Qq_V7k%Aq98bAgp6?rhq~>Wj(6e3?Y`gt5Y^eeo8M(5wkMN+ z+Ccf0_dyGeL~c(Zpf|muXgXy6WUbL~SaGUM&z;YqE%>`AF89`R(jAJt``P*Fts&n&|j%@;8CN0=RueE)hx^&4%2#(IFR@* z;V8^O2F$cy@}yUGPf@X&Vu!vpY(`Gfo9c7Go`jf z?L9-fB#G)>`tS3dp@F6rLqU_JIU^&%SN_jZV?-AXTQ5dK4OL!C3)NpS9eMhz6>1jTq++Bfza%JpUODs^Or zR78_^oZt069}Tsg9S~DH3Yq11R2+CC*NWK*dblDDu?u`pGn>g)4FtT?*7Gi^FmyGh z&}1a;-xRU%ok0QC^;;z6a@g+(5jh}P%&819)7Q8mKd_CVAOyGmfK+`tU{fm84E%Hq z{Fwn{0{%%oD#6#C9@vH2LPmOUsbU!(6z5VRxe7**vFAdAdNCp{K+ImK;~>UoXJ+&YM+&wY&Gtr%`P$4mHF7UH27B!`hLqI7j5*{-Vn^~J(ft?J9`n- z@5Wx$Z4a1m1caq5rv1QKR%##|9G>H}bX9`+1@JT_jLR7;3?yrQO!hWxeoQ{qy`-66 z_#bU+UjL_1(7B;|>2tZE+W@u`-8@O&r{OvGj|`WORXy;liM&YvyhI{5v9N`ScEAVYw<@$<}}i_9I!3qU_wg?316{!~K;yui=H&;qOvvVxOiHk`p~ zMN7N#GF=0Q^BkS5MMA!Mq(lQwo}ts_O)vshRn_}y*Nh7%;le5(|6!1%Kpqcuj89)_ zJ6mp=Il=F!JKF6>1ABIdPt)n-y|2<}r3Z4$rvBnPiz@F$@sy6F3OUv?k~2tW*4FqP z5&pnW?)xt{N6< zWL-5THRP3r3yF6JM|ypKE%g@GvX`(wMCK>YK}D7+fI=>h7;PPJJ6q*reVnhDVOelH zme9)*5kI4HvY5mdOVK>C)?L>A>QzGIW}_iahYI5H+%Tmn;bFrhOI1Y;)TAWAhYOE% z%Zr}Xu?iNDUbMK6TIR?HGj?k#HoGpHtX6kUZU33E?t!O(USrn#YXvQHL&pK3-Tkp- zqgeG7piiHqGf=y>ch+vX=+j@mXdu6_746~6KJ#L! zb3Nl0EyIatKJ}G(?aRV&av}X}ly3w$ns_$Az3Hy}N*x6~3HN1;8+zG_>%i38+F!o* zrLS{EEuchhQb#I&R<`~1b4GCbSq67^o&M$TEL|<6ZjPtcCZ2Vlt46x(YogzuZFE_k zo2cd1ZS)$)UaA#elm96w>RyIj{`VK)o3F(n*)i?XqSs{MFho`WTf>d4k>0s7ZcaO8 zS2M0t6Q+Ibvus|w9DJ2NzoJCZhGHiV=^BI3UNK={o7K5uH;0#c?W<{CSH*CwQ#ix6 zGHrkCL%L*MbHtgAN1p|iWfMl!vmucRu+OG}=+W zA9Q@~gfL!N&Ai4gRsXV#I1(EWn{4}2J!r~EX;Z`^t%qh z|28;tPZwh|hH!}rDe;FU(w9aIrcN7;EFG2xNZX%mds-}w0gTD|20bm+&c7VC{%;~L za!*I_ANOGd;c)NwVTeNt{?bre@5u=M(&5KKz~eI6r7Y_s1rG4Et&VBpZ-yB&%70t3 zTMfmf!~6V<4f`6I4A&~3{%`K`HSByz({1~oX-(vR=Qs22r@s4x-t7z~dTal;KYe~h zHo!yafBOcWHLn0I42D)ag4fl?S{zcM%I%fLTA<21F^0NBf1`XLFGY+;F~bn(26QNp zbbqkcf@G(0*{P2=CO1n*4YdOeLH}Sq>fmrRgyex)$HEXkM8f?^hO$?%STCn6&FYv6 z<}>C_rz{_j*xv7PmVtHU2OmR$lE1*3{~Lnm1w77wZ|bE=2ab#j{-*yeY8-m0G#-3z zqJ97e%~O76_tXD8+v5Mw92-+9XY^&-eQmSmP`g(UCtf_QW+C)C==qEO?9keWQH+hA@^oPhiLIU&W zL6{V>0~(}!g`TY-m5h@y3MBFqE=6$;;%> zC_yXodm4RKFiRP1>w`telwwt8Dcfnp1)f|GL%Iv0V@5`Zz4Ot=vu*)S2~c^Fhw z_sSMR&t%rQ%Ht&Fv~}|$QBs2(Doth>DXE9}lcY(1NR$+5pTk3)Nm-WErQ`0iawk9M z1S^mpNxJ$Z2m$bs+CUz4*P03|xx!^ZO5oRsc{O{KDIEgtiA!H<133Qsnyl%i&2PA5 z;)QyF=(1X-HvZC;2D6{wD2uSIRdK$VS{7+Rs!RmGR>e-7N<^J#!c3oI+!74X(`NLu zh&RS(YoY+USAp)!#&U zUs4{n__XBe9TTORU_Z1d7SZ4D6{EIAqjt>b{$&5+MC2r@uHnWjx?G5Za-G{fQe;7p z*bP&ea#zjnsRzX%HTUGY<(KlODNQ4;3LTH!XG$BOtL+hsHP0=EI|znRiSOkKS~i9T zCPoO=AWU~;_r&QoBuNMjh{^7IW13k{)qz*0e@LsTiu0uIzkPN;GM)K2B?@0=B$=U*lUS-z6I4y{}P>p%KM3T^flRWJ6l4O8F77s|rK? zFVek6a}!+C!oISIXIcp_W{Tm69%d-&b|Ll68s|1WS;POhc^UppncBN%Zq8+1I(uV%KOt3>SnNkE!TWb3+O_l5Z?Xi1&dA{Aj^B zh)*~L04=dCaU>Y$^=fvRuNOH&lABOHxv$z-=2T^!;OeEhTmVJs@dR~TvJzZm)om?O zser|%Kxns&w{Gy9?QdCRR_PFeWtve9E{=`N`kh3=$tLxwPYYj1u1(VDx7E~3a=L2;6vlrlIGA`SpDq_W-mBBQR( z3}_wR$$U;C#0tf9&IV#%Ne3nIbr7ZL4s%_pB*D=92y8so9$1nDnse<|%lR?Wc_=2> ztAC?zp4{B~1q)+It#$M3t6V~IBSE5nQV_yKt&hm-lLMr$aTC#vWF))HZ-nIPt`TMq1uiwF{}{w5%SaTyj{qZE|%x*FIzwq z^|8e(F5do@;Skzgg?;^MMNah(X4A8`TY-)9@?G#CuO(AMdCZY-=kv}GuZK^I=?&2| z7M#tDY*)uv<}-V~PoMZUaKpAJLmQf#Oe`Ik_}Ihc1AYzDn>3pm54o(QE{lP05^oIB zgOR3&5A79Uj+m_`u@bb@eCQ8#AxQ!OMvekV673TH*Ka{c@%|!1e&OoHk-k3u?(Xr)sxLPTc`#@h0YTArKLVW5i zFB%cPvx}QN7|}fKaviI8QLP}k9te>kUCW9X7B$!9Uz4lzFPz(CywyJ|zzF5(zaCZ#NAfDj92$I;VRbtT9V4V=a@Zmph*3=x~opB^uC?7`7HbP5YDaw;d6yFk(G^7}kgyKgS zH&##^e8eX8tDXAo9*u834si^w+-1KRzH;(rkR;QgqU_v>vk>^{! z%V-W$i|5tNr<65YR5SXTx$m@A+ySRbN#4U^q9dK|v&|qMyXR1mPn&0@LHdxRK+zX0 zj*G^if^--I9eK51D%L4qlwUU*k+?aJSe83|6vB8Z9P6bO0bc#8qt; zmk<=5Hg80}>NB!Ta$Cgw1ks2rSbI)tcbF_EZZLJ5VjIXC^GgEy@t21s(tQyd z=%lsLkWh%E$w6TUmoJr|otB(c-*_$DjkP=Js1ABDt`qqxCV_5J1E4=wTIN;qIX$~m zI*LtgzHLa}hyLXh2`bN(qM6}d{*rhzM#Mz_o-{6{9F zax>~x4V@g#H6D*2D?c86a z3_0-nt3qKK(clq9{pl5c4M_sb`N|^OdJv%E968+8+SHS^u-?bayz%;KOsEtFc`8YT zq7aAPYVn>{5R9ogm=mTz5Svy$_fpOsNVH)N1`%%cOaiP{i5Z>v&A08XG(p@s$9oSB z_;ULdbAh7LyM{a!hBJl?h)OCu7vb~DHz_xC7TAJF)i+FvbG7^=Sr%g?Ky|rd*{|ZdL|YM0liq$n0w8kd;xXz4a7T2LR;Fb}NrGXT!8I%w{WMri31)H7{@_$J zURUmkk8{QG>pz5;?VN#sPL@y)RQ_xOQn>mZ1_TUodd;t=7{YPIxM6K)_=sGn(YLkq z)JuCfTh^{Qfd~QAtr#Py+1POT9U+QW`4Pu=!8)5VkEh83FnvRhL97Rn8YnIOG zpqmC5?dSe_88QZIo~-XocfTL*F>ks5?)Ee!>i4XW;lM`R77x|1D@$+qe_VZIkmyXb z?VPb~p0Q`n*tTukwr$(CZQHhO+cS6WSM{oHy&tJ`y1TMdNhhi9wf0)T#JmEIDKubt zMZ{!%(oSW!@^&F=N`>?if<*)%h5=mYrezv`9DckS-{xXm;+l~QrefAX%W`EHbg1+? zo6q3ST7uW$5x*8RV6m zAavF^siNVd)Q+qw{w@R#k54CaE455(U;K+DFt74rW^4#Alndgv4R;22?blhGk(YIH zt3z-_Vvo2XhAHNzgYAR$Nc<;gQ)fGUU4U6|X&}i&%x8g`yyMw_Sz*m?nNdu{Bfcme z5XThbRRGs-?cdiHAC9xXo0oTIKYI?hQbEEb^i|rcFj(n8#xv{;=7K6AsqPnQ{%DTl z?|>dY^s}v*e{%ta(6jTU^Zeb#5xp^v7W^|)(yL#u9dGBNP|x5-%AWSBC#rs2CwLdy z=y_bnMbHkp6;+E_iY!~We(-iZ)4$ET)lS2kka*M@+oT^?xgK;e-2L5*Ouy&;1g>0q zUJ`=aq~p~(*GCH7*qZO2-FGnm;CnVDKs6Z_Y1%K{&PO*!L$8D=Mfh;1n|6Mv2bhEt zC5c#$=fNrZXb>~H{_JV=Y@q?NZcAr^DtO5Y#jC_l<^D)&sap|FFYF|zh>I~1nOVMjcpEEmji$gVNp zI>n7=sm5YCOn!Pb<1~g1H0kRSIw3{M01`YN-A|MHfD;RC{EWDnes*%5K<(zds80Y; zzE?@=4g2152mCy2nu|3OuKsH(q9)6MB>+kZ8*Ka-LYtI!qglmu6izmPM5YdNn_}+=@)JVz>3eky z;~5liwu4tlJk{tKQ)!5(;`O5a5y1E|I`CBXOyfPk4ASc^w;lwMMympVnNn2-)(Ps! zte0+SC|%pi@7Do&nm+Ub3Lb=<`#{C@()*g%D=+9xCm4e$guKYGGq1=kRK}Sf255fk zT7J`O00_6QbSFPUjty&%ejL+*%~$vyH;w0Q$>~Ymg$cLQyZ7+-c(7bYw3wRDx$05< zsk^F_z~MMifO5v2$nB^6aLuAwI;#ICf&ztQ{dxZ_YK8sP%%LaTsrSMRtf_?yq1hMp zPTa_;E`bRJlcJk-33d_+-BPFztt9vw2yJyA6)F(~#i&d5#T#w3hVhpw49|m_x5w9=4bohLuUbwdGvJcWNY;pH&1jxPgEc&Ir(O4?UcWk#JdkC zeOq5>!?8&Y1=rC}*}bG=L3 zAj6puZTZr5CRCT1FL3+$>Vn#NWn>KR&zC8gYU9WQD>`8~T_1-I0CRJz31;w%#RB^p7bKsdD*a(<`d4)hsAcK(eU^*sq0XMo$c@9P-L`=+bi467LU5jHHorS!>;N`NYeuoAWS;AK-_hIC zh5-G|lLqhdEU408MoUvrYu$<6ua5+Gp^(_8JkDhv^cWG6D3N@6^#a5k21>YoS=NIq zzqXc^}%{PxbyjQpkly9s^5+Wa!f6vM!DbiHP3jr1Ik`SsYEcum4i z&)4(*`{&czfMQA3FknvP@ z+i}3KPeFNKLrpaexK3i21;c$YS=MoXG9n=#O#VIUNQ*Bw$s9!je|xUS?IKSU{cPjsCio;1dI8q5%8hU-X-(6zlC4$J~ z`8mPu=6uU+OW{p~u zIbs`R<=T%VMWqI0stBV%uLOX*Rn0u`oDEs$ty%>FZjLb_Xr2A8qh`u_Bo)*bBmP99 z&PYlZ@S3Na$FRFp@WmuO*_T+Ds-HkX2owGs zY@H|D1gjEb4k)%i>ctL8uufJO5ksK7>A5CdWLa%(WLmUu)kc;?@N05%gXU{f>X=@&0jiOh{@zUqzE} zI_qguf2AXboC%j5dI|1eRdrC}3DShqu^WIzR$d-aZ)|n~NEkXevx_!AhtZB|D6a}v z>uBwP(t|A(NlE^d>xm#EF;$bK-578#vfm{$rrx?;9Z9mXbR8x!I%Ljiko?zx*2*~_ zb}s<1m5uk0E)l#;2>DS;&gs1C%4vl@y~45CNm$xE1jQ{k%gV6B+N)#p``Gdkm$7js zqq|*+h;-yi#8p>qme48lbRmM$A;)=hM#EyipPf>hI=vSKp`oa zh{Fbl^W*OoGC4E6l59S0a&K;-3m zTem>g5{O0(1&z~hc@zOQ2D;rRTix;z1^{wtYJ)JCuB=`XnAkHBPB0`pu775n+>{T4 zyQ6oWDXO^efco4Z*j7wz(C%a>^ZXq-DaYhlBF=wtgs!z(O@eY1`g`20t;&-$tq$MT zEc;q(!n_ve_n-Ams9Sh8dRKq|!+&ogT`_EVe;LKYmcN6GLt(_KNFA^Ap|h zAtRw^oE!g;)rcUngV9m&vF0?(uR?m|vzx=+RfP%*gMBdN8h?EazgA9KlV8wo!9H79 zNm*D2GJkrKQ@oP`@g~6zdC4O60!(69HwZC#TkI}K*@pOAdWr^7FvW?{~gu z-36r(of6S9c=D@AMBELrDiNo^&QI#?22c<3g3|*o7KyI>Y8DxI)W>>UFETe zxjG?TppmN3p8j$qUW3p1a89^5qTSl^MRDpK`XWj(e7dlM=Zc3GKLnN~3SZ8a?m!R* zwT!8AHH&*f&tud4saHBQh&?7m{&V+7_mKj4Uj=fo0bLYe=Z+fuUXYkCJD+ScAqm7y zR}X%tYhMm~u!U2!SC|Zd762KyA6j58$B_iTt=u=1hsRyu+Q=D-BCAOkX4(z`*0P{C z{2G}iFtCO#-4I6v$5@QnqO0(EyEZ&9ZMtWL*>O9~xajuWtVt2PRl-;!DZ7k}w3!|m z4y52wReCgCZVrGV1nd&N9s27@Ic-!Nz?LFu{~>S+d(gY4tBtN~d)eP-)D1lr!7vH+ z$Rr$*COEo>JX#SN(g;{Z?h}Fx=1xOU0#MSIHaPpK(rI7gYEb2|e1#DrzF)pvrRb_i zva!(w-XfxuRvQ}!zkrjT7Te4%aLxg!uS1nZriP@{cF@z$-=S%O8CFKBbC4kx9){3w zo;3I=9S<~8NPDe6J9C~k<;jd*&1K902av$S7WINqv;tRsKY&s2hH_Sf!LwHRbPWs7 z%2pH!dl9hfHDbegr~8U}Vz&JRD_m=UHc&5^KIQ|2)@`I7T53IZ^JKF@Xhw8$Nf&{p z#!W}OO)`5K;~9~Aj$;?e_L?i3qcWcToUL(ruSvvh&$V_Y;H3@+>1{{FhDJ7rN>a{y z?i+uAqyXexX8=%W^gcN&j3ZmD&e+dgOo0H5j&LexlHP9#mFRB0{X?fi!5kW+i*2{ zy=JxcM6#SVJMl}$>kb`yE9r>`kF#Q+=xZYVJ20jX#;WUGs$pB)cHr&qqJ$f|e(5C!I^c&AQF13xX-AvQtIZO9R zZyG9Yi|mGN`KBGO^`-?**E`G&6VDm;CzU`dHgz%7=xAT3C0})S>f$cy-bO^ z7(+m4ST>GMaj=Q$%hrtRUhlfTKTpSAJfdP4-+1tM8RQFGGm-8O*h?zOYPc($3Wn@c zBqBM%PC4fhJRcS{OO2x90r9<`#N0>TW7EOpG8sS&dp8(xHDHCWj^;zZT*6kti7 z?@5KGcz`050VM$fApc)NMGe(T3^oxZx}|Zv;|hRxeoty-qT=F1Yg3E<cvtH)WUABJ5#*5EKa$PUX{zBFMZQ2*fmQpvc;-!N1TN!*$TgcDR8$eI9~thUq%5g2WA)iQ1;7GEb2B4k5=gpO6~^WbaOPc zpJ=l@fDI>o1>L?eW=^U~z)WR+Ym66{#(BfA$nM--+TrPm{ zv}GTzVaK{57|iA8A9ad%d-2)g{+Vgp@l~dH*tK-H(}Q0zyO=&e zvAu1P($*?IAfu;0=jVC9CY|PIS$)7aJay1>EKxaiZGdrNS<|-2&Cst{K^VU;b&yKx z&=^Km4`%--MtyGP=W2%bJA80^j>yDH=W=bD_nKZNUgF;?oaD%Nn_Fg~TRiItrW>Jd zuyu5TN4p#glD$LUwQ4X;!NX9{VoIpv@;R$HAicfTgoXwDUsA=?5ts@vq8{bTRbCRs z$_jS>HQ64p^l*ksAb^qUruMB5?SSOI6D5sL zG`Q^{T~fLDcBBDht9Wr5dbSi1It)@9bY$iOjxkGgs!$ZNCe(HpMcCzD8a_osX*OV> zS2}2{<*H*xEv^_QyS zxM=b@3uJKyMSIU84`{ zZVkW(CXIT;25W#Q6_iYkw)BgG3zxed@7i^+w@uAQTy=5bcx`x04IM~6SX{iI0Esjj z@KQg>8zL8D=qy+^Fo`T?qT1WAcJpto515ZK{gvpO1}6>XozHR0`zi|;s}>~X$wX36kBGr0xZ{f zKg@acQ?Bnif=iDjTJ5n}J%)sapub2se}^W58Iw){g;MuEA=HrYp4xtN00f9LlhGp_rp7dqMPpqnZW&%&h1ANLquypiMvJMjG^eQ~lGRV!|d3O2`xMyITKqKZ_4C6 zro3Mb+3BT0WlLIZu5_06VmWU{cN%dEfzBkuY}|W8KH$4E8~nxA`~am2!W2fiW^Kzx zLGv$EF$OzuKU4NRUg{kW56jU!%L{Ay$86U7Y%Ryy6s&m`01hr*0RQhQpz%5>Hn4`P zZ0Lxqrq}h}Z0z~yXRf{{{aMJvX;&Y5zrlDdJ`49U`@w@|$YKudHXW&(R8yO87feeT%~}M^;KRMD%x%Kz!u;Taq{$La3K!^w1e*3MazXq9Ju@%&dmz6 z!ax0zDMk7k7|&*&EGZ$%NE z)1%y~BJZsnD$+pMr>=Mb*sD)xyzTo1!8nUdN#ar~?ZRd)H+*Gr)00SE$I;h!)H^lD zI7hPW?GH_g>7O{*10zllJQGO8qkR2BC4#=B@x|mwN#+NuFzBF$04*^`gdvcrAXMyy_F217Lw#JRT}fwt5VBehH)>R>!7 zhcYv@PGe#c{}S>fa0&h~M;h;D4_ix(X3}P@42^bsW|69Xv@M`^?fPeYpp=w8)#<^% z;|Iqu6>gVcNDxKska}j%aclS_wb&J*NOH~oO$H@52L76-yO;Vk<5ltfu7e4YV32Tk*;e*AkCGBP?$DH5_+RXMgrI-!D)mm z$eq~;|HAA9c`*hpLjH;E`@;* zJt(N6#fR+i`wD$hn5K25TUUbVO*E+Nmd~C2@aBo7)ipQCUo;T+h6TLwp!Ita}aEIPA?to=x6Etl-_aWL|a$ zF3E*J;YjRFLrJsrvkZZs+s^E?EJTSK11${~Ei0`WM`0$7X5rzDq^Y2Bh2*Wf=F5Wj zb$0V#_4lSCa8*fI>v99DN=h|_xP@kpz1`w_`QH9#>C42&&pH#Qt3+s5{Yx%&-IFJ* z+z*@F?TwPKed`X9<=_m5Bkk_yh~*o_+c*a|^d zl6FNjrL+^6j$DaYW<1AsWzV*HRaefl#0=1PedYxG!+mYP`GQvN0l}FEp{HI3{Za+$ zD?eKE{#l~6)wc_T%K9oj{h^lqX!1rOLhSX@2q&MUt$RGjSooI;iT? z1RxbfpnqE83|FuVD^iNxxvhu`I}&wl0sQ9qXVip@-39y_$MsBdUde=VX#rJs zD$=bB38>KL=r6H_Vg8GTS!04tm6&KCJS`4%7=W?@FenjZ0rU}2)x@sI1my&nDyVZ$ zOy^D@qHzGmC38ci!xMn|)Nk!z`I90*^aq{Tw)h*(er2L(bEG*6OR&vVp+1AxDzY&NSJE{mCN+TIj4%Kmli@x@uU0(x&YQ?}r*- z|4si1?e-o}zM+m}dAWVE$Z?PdPGLTNuke#LjW&P26Oi({#6BAPHQsK>DGAZR z#ZD!BJum^|ncT(m;rzV6HF+5@2?+rM+wpmLKYBV^i}}1gxe@B_9?J3Ne$CGMIu$#- zy`88&&~g~E&nuzN_?3zqV0+Q&!(7#w#zM7e5BC3zrEZXRm>P%KYC;Y*#KMl*?LqtK z&*x}MWmA%j^0-Rbvaq?LV06h4(6YL2j?OleGR6qFRg_A@ck7g1%TJfxPQ@D-{Z%+EHiOqE?lO+JZenK9_TAE; z_Li>XsWb$wF|4Oj`6$+$PAEaEzN8tPMdYU5aoYm^_)+%`TRTtx1$?5LHW#{vp?bug z{IU;W^0#0DUp0A|)$F7EqfX=KG6iG4<21c$A<$U}e#vBmd%gF#tbM#aC_oVclB6qoEHA}woi?W$)Was}_E!b1B8nrJt11AVO5nTrvPa6R!5 zM@2JSTi0&DMR15eTsUS>J(oHcG27S$3U-NWBm*KgfcKz*jXM$C`R18e`LJP`_Cc=T z^U=v+ZXWETC=KhbZgp2M6E$MPgq@cGUQK`KE?5hX1qAaAKm-DZ*?ma_akJK%F>rs6 zn&TmvI@VewAMXw}shHd+ZLE_pVz8-Q^tDS-4B|UPUNywxkoP>RuGJ9wt(RjUNIW&FIT^&5WtHyme z_IDbK7z!uQbOGQhse4~p&1)2mSKu?ice0T-+UzqOcOUqL6>XB;5B>7l#)7^|IqjB$ ze$wjRIADW20H;WOJ*kbhy8=Y2w6jDmMxg-xP`>%9`^3DHif$E*h(Cl3HL>{=#y&Wt zOR-qpJ8dSxpN6CYgxugg;_nDIwSOBA^v64FG76D%F|kow|2eL^;SEPwhg_9OMQQk; z8Y7xG%Qq%q2(>X}Tgsxqachr=20FF_W0{^9y~lb8w>6!QjNhc10U=Xq4F1+EgU z`AHrbP0k+^#3rRE)V9#s%s!_$NQZS~JF>#tr!5_~M*0J=TfxaAfFGH<+1@z>goakQ z4ur$YS-A_QN)PFR4UhC8NT3|XUjgmH=RTmCjg816=LX#5p&83HCp5Gmxnw34t)Kf8 zcohqH=-o%w765H7+od%zx`^TTFEI?lcWuOO=6Ph4^g&O##L`R#ubI@+>XqfwcaYf| zWzMoH7E7mDY81~^>s@eKeg@WzmxUAXGANql^gR&c!=wOCy7*}>hWL1Mo@p1eWiic_d_yZx@qGgqg=ihg;?QjE7YB_4Rhtol`E*|da$?IBerT^j&Ty{B}J!`a5~u^tF1fBv}SRLL8k;*fQb(?#?QFY?gMlFDlp(2LRaq z^*4SfudK~_nDQ&d#6LsFdwk)cRW*=_ast3-usGB{$XGJi8N-cf+p0p~Cvdr8MoAcTFh?HNURFkl3bq0xd3b& za0h&RXiAO-EuQp)`31)|z{NU3AG3@t1})xZh~x}fcYYdINaZzorx6m(;=#Vnss7ux zK{9B7UCXygWblUHmYju}li>RQ7#l7N|ce(OY|{e2H}JoSk*9|Yj;`{3wjTnA4R;7jp) z?0Sjc%1iu1EjqwIw;6i8Yz$Ivqcs*5GpB!;RZuL~fAGnV)^;JdNWvqG`ps?BIRu^v zgS!z}f6^W}(*MypKIK`C$<{M+S%_mI+4sal+6bK}VCA;COfY*SR55hB&^(g_jTAcT zZ)tJ!qGO|b+#YXV=T8`j6?LdxR`wke<%u_`FgsLLLo@AIsEhoGt-PP~Rfdi;U@ic) zl8-TU3zr0YC+OvbMVfb~HrTWhHe36v%GS1b{$h$+4NnIz4 zqTwxwvqS9=$4R$EAa>il5kVD2X6(wdq>6!nT;)H4vc6#zc~$QFDekGZDK>SCa2t$$ z*|ga5G=-HPM*a!Qim*W$@P_HL`QTT>sz(<#Y2E#uhclI#J!UzAHYB{saPO6=9Dh8$ zuBHvR`K@yryUYzPA7a>=tZD4sZ$Zp4U;d(o%8FESXH~DLeXZAffHUaluppJuQ@kN% z>3S~(`NukPN~N>~9S&%U7+EumO1Lh*9ri9Wl%1HmbCv`~FVBs^qTd5b0Cc8s<&>!HfA zv(Ceu7I{#tmZ&#W%nfZ%lhrwWbpn58~BB26kK#74aj#W&02WQq|V2eSglL&W4PDrdfX zt?S~i|E=;pgr;Qg7+q+DX=a!O;|8M(P3tk^9#7jL)=0kq6o=4%IKE2}vK5S84@b=@ zuxVPJV*Ace;J@F@JT$4!`v_zSRE43G{0IKph12aFac|orWV_WSv+OUY?V>@Puc%L_ z?6jXu)w8evAHug(KBc+NRXy9lk#dz&uPV|(@{FgjFHpSa&c8w9)MLR3JjzEm=$kQa z(%!D0f>~crZ&=`~Z<6tpqyBdLI)`M5WmANoM(g0cr^!#X((Qt84)F@IWv7*U#y@gR z#mzHb%w1LHfHD~>@uN0)QegOM@@mR>ZQ*LkMsd7Cpht_813Pz*l2$xebf;xMooUm? zD2C(Nxc$z^4?pqPxTx+*qtx(hbiS1_#|EcXcZSmAlW8&Qpi0#RxjDdXv&SB{lCrn& z%;*Je8jL~ma)%?d5>)ur-xjH{^B-9Frq>cm-^II+{Rg({}h`Qlg}_+u@W{R;;o_F=!yIjpr)GF4FjimfxXK z>S*@(BnX*UAFP<0u+JBptZDWGD^~j8Up}`<8Jb*u zpK3Oa^cjjQtS&Ys?CkE6ZKQ<@RM4l6grWiue`WqXJ?h9Vq@;C572}I#mzNe=g^2M` zIT4;s37-ZzQsiV&;6zd6E@WKFF*Dwli4fXvjCaZ|rP=}T7{Ckrkd&xms?pp1#lpr; zPycItf>H%fMio##D{hB>)NQX2xIo7+*o|GbGwL!TgV z+ZK8Rw=8u(uuTrc#r3T><9W_-OV(|?7VkB{{PPEo%-bsncYMmnk%MfiLHM+NyYP}{ znUUK2F1;9}Z(RBFdxUA>@%pXuRf}>h!-tGq`?FRh+Do4X{kHqNR>Zu^<8A==apr3q z=6DFsuosHZiW;?f>fCOGv>a6=W;96iHE(u?~U2v)Mwok zR>+D-@$4cJ5~Q%kttGC@`M6n!(tssVcoZ^YW0N7T_{=|?O)yP!z^%!d-gdq3Z&lQ! zu-**DXv>zM7V)d00ZmA$A-pb5v=Q_FX?Z>hmtujf}E z9G@bGG(u9!mAW)8Glo%H0Ih_&VmxiSy2T2#!-$!mAD{0Rt&@H=b)9@wv*Aky>Wvzv z1yJK)p+UukwR+cLlOMHj?dwjDa$ezq#UDQ3G9*%nEQHOuqdOpffWvp(MnE5&^P zYiNd8LL=1!x{CJ0rT3eJucqV%vICka7+L`eVYjIeg!v7VCjfdR=2i4(5ik#f;9!$dfYZNad>lH-DEJ_rfO%S*XhUZGSn7 zohBhDGESWGprt-OoL@d?k0p3;mps{0Klk4E`y)Kc-k)_G)t<3UO>9}?%5c!t9ci1^ zsjZva7gQ!l_b5`x8L>7Xn%-JSLxSDc)df8!qD@c?w%;Mxjx_{0rDZmn(vvwPA7k`zjyr!MnSuhfJ=|Dr0r zrU@X;1({FS889`*b}3)EB04#&zIo|{jroTyKcZO$qh;vGaWbQ*;`QTfXC2#Vp;DHv z0F#n0f%b?+0aOnEqMpA!%=EO5pVVn8&~&R`6b#V9eWxt|XAYw|PIarh00Jll1)TWc za)yBI9GHFF?S7Pft>A6d!1i#y>Meh~4DjIcd5hYa`h0q;7o{T6;}GT2}cCOcXuIv_4k((05tC3DorDZ@@=RPp>dKQ9N=amnp|pE*NVU@@(%_ zC>1yFPB2L=1?uh#Zv+{99ZVO~5t_J6Vq?cHjD;Khg%}B@UN=P~q%y4hx7y;aLmi6i z&77g?0gGNt-#nVCzSOY_i?LLbUX?cO`Z$-RJ_4@_F^{8pnWRSBS@MtSAro-Jdc}pf zm#5uta?~O{UZa_>Sd}#JI|kwtiOnR1c((ie9pzf+WyTp*ds;;&t6gtZEA z+LSpSKh(D}tO;4c zc%2Y82K`YZld{F$Lo#zlJ#VYO)wi+syam2nGBpkt*bMR|Y}W{yIcS)OPR>(kI#2SM zC=0n$N~|09I+9lZ7Mvsip@H$=5ViDN_}+#gmMd#E{#AT&!XUH~;CJ1z?2&`ptpdAI z=6Bj?qQhl~=_t&yE21n1rR&Wq?E%!7>pw84G6CN9+0e7KCNf{79$10}_L_@i<6ya1 z#vp1VF1o+BBS4R^8z3ZCD*T0gmYLvya*ro^CNu?`y4?boHJdw)-N2C$q?ELcTMSk> zs-w=)x2Q@c*bw1xFK%5S1Rn%3E&@#7SZ((@%ty|&kOw*VF27Sd84MV^_1AE00{CpW zW{cv&hKZ8yo?#Xk4q^)&y9=-*A*5pnU<9gHflvrli(82E=IcAH-n}iA`f(#j{~@T4 z=ajq64mVusVg+I|MZ%5Lwoi*$WVId#w!N(vn6-o1tvB0rfcrV5SCz3M(XBE`N8_!Q z^Z>E#pT;E^^mp9PYJTp}Y(<-%N_ta98Zr^uVCVwt0jt8SqD__3hec$yDXg|h%|l%4 z?ldZwC;xpbi_2#}emY#eQj#!Ak@IYSwj3dOKS%_#TyyqszFe)s496J_xLj?biW4~k z)WE#Ea+5I+!7nog4md0|+EmA}!c&8uC62Na@<&vpj&Ru}h^TYo)lM1a*;1DG)ylgDr&DAaWXC9g)PeaLk`% zEK|6}a9a5>dIB1muLKkSfkVasUq5c=pX{XXD?bhR%5v?u%A&_hF z~u!R4#X_yXDH3lYePvXllDy5K#- zvl}F=njl^Ay;>f1jmpYN?CBgN?GNhAb05Ef$AcO)yal&a0sNTH&&*Bn!r6`Kc-A1V z>G&Gh6mU5^s>c5H+YLZ{PUfNbM3cgU42GgJBYi}K8#5P}X;OJnedQ>#7Cl|Z)QM&G z1CcQXyh~2E2lK}S^pp@~a;1s6(_yhm`gov72HIhA-J=UIj2v@0WQ`hueJC5iskg~z z1{=h2&KMQqnf>t5&E#X6HD6dDTHz4{k^V>YK{v4bZA2jDm()?pab+*wJkgA)yeF1Q zYJ^et?Bv(8i?LtP8u>1XG&w4;EoR``VWabeZ`r;e$=kZrapI?dnBGbYIMYr#e8)U1 z&WMmFhV{ZK8;8Z9t^pfsLb%5tv&_Zo*Q$X!sWQaiVC3ov9m}q0nN2;<>TqRCsV)3i za-@-zlbi0=@-O#`d&Y+g?7UY~GnD4$-GhmT{VV6ZJbPsCl`)QIDVNI1%h?W!@V^mP z;Nj4X`?xj^$oTdopp+JV zhrW%C&Nq6Y@5pL10T`Xlmg|e$2G5&EjpVfqm+1>QZt0Y&TdD3%v0dRSb$+;@ZrH-| zHpIVceqd@&oG<4AHNvx>8RfDX(_7!7R%%7zYCP=kQ5y+^)Kp2oSo#@LQ_-Dez68}D zUfBiKT;!#?5h5TDKBz1`rx-JR388$Ab~hfRFE~&;O;Ko}_fRpZnU=1es+sC{!S4X5 zO7(ntp0dcj)utOLf&ISyw1s=cE9KN=F~^%1bXv15`#WN7O@-SRuD+Tio+RLK0HL-I z5}yz;k)p*c=%HKzYs3=5elS5i!5$F{L-y9Vtt1oi%i+>XIOy^If$;bhZoII^@rT1@89>QTAM+9wT zl9MG^RtD;tQ=7IXNiy^6!f`nIryUu(-o$Ms9Tpa4+*5*0WDMqQ+zRX>B(iMQ??@WJ zGQuE4DI4z_=MMFou&!yEor|oMoOWqT%sW2@BRK=ZR{P*&s)}09I9B{;8E1}2?x^t6 z1!L2iCZ?y0y@PKv^LHrjbaQw7u|%WT*DkSkX{?;1?BL6ZXi^T9z8?92k*ZI|na;l! zoHn~LDNYTQESS!`%R1s_fxxfN2`G88V_y}KC<*BJvSgIc)m^GyZuIv45m!K1m|T+F z-ccF4kg2Y2gKLVw8CY3LMyYs<%b?z4c=5L<)Ocp^jtw@JWSx=FU8l2KjgZYO7M z8usr}VstOZ5eNCpVELOgVuhzZUf438FIbM+tYnh8rNrPcQPiznClyx(On{t4Do~U) zLFKAax8h$@V>F58YbLJ@o|&_ImxNve4fYTlff_I3v_S=Xw)8^%^iHE#PAonIJN zPL{i#r)&oT*VcOVja{ zEHf$R@uynrLANsQ*yS>Dj&;vpt4=h0wI%;5V^O@TP9Wx3xDyC52x-ahy4S_MIbu-t z&nRf`xq=J8oqLg4@t06k@c6@I7PIVfvO7lsP ztoxd1Pfzd7%&0}SP0?gxMf7pOCt*eMKI2OSb9w{YT1vdfutw~d^2m%7|`5ikK2($ zCGZ9gN{*-46#E-GIbOPQ+gU8LY}URfg7MNY{c!z7)<6G5<9Rz<-G(N!yX0#J{|qCe zJ&cVb3g9YA90Wlnw#0HgXcCqW2Mbb?N6iE0Jm*4qbsW&wwK@B`)H9cC+%Jiv@#)^> zLU;`SDXk**bzfII9tk_4M6d&;-SZcGxSzpz^{i#+Y+nzb7|84Vn=Oz`mn2@ z!tN#vJ8AqvF#gmHi25(-Y%da90DgebNpUnkXBJ%J=o}W(u%zSzj$Do?-$j7siY}7;$$V zqp8mYRaA9qB)ZQLmLQa@EM?n@whBwMt^~e@vJp#E4lL!UszvJ=hj}Kx>!~>_p-HKY zCDm9BgrhdvrppZjW?e%xYRBDz=#IN{_O~MOYs=5POSZO3mII<1VAGP8DLYbyqw~vm z=%I#M(`G8-2mdMP!YX(DmgXb30^U~5J74h zb>{Kh0%-Q}TzsoUzLpJ<1U{G7*^po9lz&*T;?+!TZ?$>*QHBOYeB{G!Ve`-eT zh`m0g@INMfuw2|g@rHb?ZZiAFR2>XauMJ}QR0vU0<>1)Xt$&bP|=U6djla z$e&^9Zmiv`ObnK$Y{0SS?RrO8-O^tLAXHZQ_ialLlhGZfmZ5Vq2 zml2y&sEag8!Z;~51{+vX{|C4M-#Hf+%)VooYMU;ir6x+Pv*)*nqU4Gw`|n)x{E0(0 zS_BjIrw7!*-Af;U+kCl3kJ@>I{jW#IovpS$*7d;t#Jg(OwQ}QHZ>%YHL+Y7IVJQ(cJI2j8;B zRWo@2EkAWm2f2P##|Z*--Jw|I?*?6eh!9zS$QP_uUtyQbm@*sb*WrHeunbnkIGfhr z-eFX+6?aU7s(mjj(I-IFRmj#hWK7xj=8_q~Y+$GNz7=QO($`v|xhuOtk2wJ0R=V}t z7tvk;lFFE}m=1&hM!%V>*i21nzu?+NxD`z7HZj^xxMpQ>fAG{Ykl$I*m)wYHg{QB? zT(y;JK2^YhcP>I-9v_0PJT@S+at*3n-w>B{X=qB^fu%8a4XSeQivg(jxCD@F<^d(d zYGnhrinSr%L=6QVzl}L77x3}0Bb*rk^vy$5#Hk>hCSW4@WV4qIA!okQoKYO2iO|4v zV_F{}8{zl5+^O&Ct zwr$(CZQHhe#3d6#B4yp>E%Fb1Z7sP2W1lAmG(D^*xcmKWWUQ}ZIK z8LNtA&EsR;^c2;SGrw{uq}TKW)6KczA*wlRc7b8dqf@Pv@5*|wRE^7e4>uX9h%<+9 zKn^#f#XM__2}?tbmKVF}gnD3iY1t+UF5veNiEqV0tKaL*r_h>LlWs;CB@ z5M0TOmnH{-PzxkgK&fc(juPdyk{$%hidLZ$0+!bGAZV*rt>uB+&e-yBG>9_cSdc%Q zU%xQ&jupBf%o*hhL+k@-3Nj6Uf(M?~h{J>w?e7I{hpN&-DPdFrG=xhPkV+&P6FrgX z$xvu^v4dSm!nz`}#F6)!aob=x49Z+7SC!DM$OnLQ*9Y0)kmXR}wtjr*0zIk zHF^2lMZzuv->Nx*5>DBmP$@f)(jE)~^M1}lBRg|&4}ri;VwqBvs^5pDh{J2BzX4Rb^u97*C`6$D{PP^_vt3@t#*M5?j_4l zalL&D&vB=l=a^q=7D$F;{gcO-fX24JS*@#AtIxCBh;^##x(1ETU4*YEc*G{|o%QZB ztdSUd`pk1JI9X$3>Bqj#HO}hxXlHk$SjTAN_CYx;vkP0-M(kCw4-niFl3Qsg&*DDN z2W;svn!o%8M`RyUU|tRiyx!lNF4mRvXk}T@`d-8QQZt{)U_sh-U#bnnHRlm7R9Px_1FySW;Li?{+0cb=rv1TkY7!{ zs@P>Sf~WP6&aX+=Mp)yocP#sd=Kp*pVpumkFn`&{miZN?4G)X|pKpit&^n&|vsjk* zjjL$Z7lNtp@3@HZzrl!Rd2Z`J;X3{75G66xst#k#u}?dpnQ zJva_-LZGu9nuInd(%A`1UHyIQRJMcTXgBxR?}@OsU-#Isk3!J?!f4c>JXQ^OQD{N2 z-$n7eC&2$*A94R9+5BBD`u`P(`5Fsv;h7N~eE<4Be*SNOpM>A1g`3x!Y@Q1KPsTKM z%^o>Dx8|7UA{@B}Yt=&>p4I>tu;=|N;!N3gh?NA20zQH`3=EUR)PE)g9zBQ=B2`2t*&=~{gGy7pe*zZsTXdY{5t5J1l$F2D^d79XA|!Zu;uPOR zSWmm+5uj~K^yDZ9R!ys!SsK_4)oD}Ocow>+L^6X0{APQ@?>V;7I0ms!TZz=E#ox?2 zDIs$H53WT|iBwB(?b!H*;^3@p?M79^4P_x|4Y z-R2A0XzeVlfSxIy0_7C#L~`eS#P#(J+^(qf)}1sIlTY2=Uk6jqW0%V;0V5NKQG?#H ztAf_+j$^{<->&BZ0KMxegc|bo%nx>yj=AcugLryF7?BSU!77#vLAM)t=3;Nb>9 zAf1L7YYmt8a^fQ?%#lbX_*y&ndbLlKs97j2Yy{3&&;+$4ATxAFw@>X0oXT`DF_Od9 zBggX8M9xL!9m--_X`2?9iZZ1rIu1bvOUwxuEGTzL8;cw?El=||)pZQT!-`tcXG+y- z372q>Q;PI(@Kj#54x6j=Cr&E2gr5UZTH@ABVpfvqcrhoXASWgLGm{T{EK}zpZ5rUKnAaEds+JBkv3GFx%``PE+<-b-)&0#OFWF?j;%b3`9#mt7TS|^n2$fS7_ULFgyv7snwlUSIBBCNqZ zp8yBA2i>*f#m61k9k4tStvVUrsRd-)J(Z0&7LUZc_WmwfaXG@CwevNW3yCg2#u{2F zrB(tDLtI%xQVp$aSRIp>ja=A2wTx%#Je4CrHTc!=&-`eE4|7RWUuD{2D#K!p)yW~i z{GS6tb%YeCUT+yCyLHo=Ew`?WOJtzbZBT&=eY93K6vUUd!`n1|)a-6nl|9&)?bR5Z z)OrSDyRAPmn;U0e=gF3GO``Km^tT3o|3(*usZ}h;cQLhsb@Fwju2;u%N4KzxP}Oq+ zrH;(s?DP3+|G&slO<)#Pt9Y^&=G~~dq+Y}H1BD<_@&5&nex-$3a@CYeGejK#UU-1k z6v;$qqMnl5Ju(7=fHt;fgRViLa7l~yGI(_ciya4v99<%-JfK53*HO8iCVr3<3a_^E z43@({=_$BpOh{8Tm}FpH*_*)b6nzu9p$pAS$=q?WLoL62eE5EyT=M<2^!^-97u~D2 zRnx;aJ&TV4D44ByQHZNUgTm!&;Ca;^MD%D0Y+vnO>_jjA*OB@*(vUS^M<|ffS)nm)o5&rQDBXqs<9s`4$|ncc%gz4!z5YnY=i_oa2=je6`g^SH z>%!;d;^t;|`^8qPtD~FqH3sMVt#fpt`FVC4c(cA9n zIBq7>k!;~ z#TT}u4~ENUz`(~E0=+pt*5^sZy%xB`B9BFFNukV z!~|MLpVNx3GAbF*j)?LY#}cW zg>ZN@TSHc^7dchJ*?uqwF!;Dtd1L2v+;D@FxTGd1ykfTV4pKdo?<$g?J#7n}5W)ID z(Y5r47@ry~y3%p(hy*5RfF|JkBwBXvh`C!e0g`QTh}8VtN^aszzvx02_VLkzrj)xh z$Z51K>3U{j#S`tU4gFSNsHif!`Afr* z(<~@X;d|&BoRuB&2h;5{Ze7VDj9W6aVf&!rMGRe88a^%JE|=*%ONHVTrk~>0!Z=5UZ07|jDdCjvaG(c7fw6N#TP*qzjns#D%rom_-Pvo#(CNiw78Yer~HB|p})VQ24KlA5&_kJUL4UT0-rW|O1quzk@I=Tdoq#Wb= zTLv@3cx1Jxc@vea-6fS1o|&D^*Z+dEQA{F+NIQ^4Bx*V^BsUPum}++gqK8|U+&U=z z%?<38B!fV7^A0hGt6eQ4_*_}%L3w@ayX12{H*tL`UR=a$w~a8aA~QQfzh5KYD>Y3 zDeOSxNQiDSR0n51Kva|X=hm3eF&Y5Oe;=8Z>GcwLmGyjqzQwdoGhQq-Zv(z9^JZ=S zKUXa1og~B=zQTigNNBJk zXnazVX^j`}Q}nhra0%CQ2d9wIFTo8My6 z-eT&Ssp?;i8WAmKpbnfbrFE04*xmYam`F~sY-rG?Lv#uRPQCih?8kMcxWJH#4_14} zLxSFV1U4Q0_JK|FMu1_T^N!wb72#nxmfGW=Mum!^U&C?c;+70-TBp7;n={!vzO-%$ z6{O*N#`pU-iZxsV-_q~Mv#oE0htS9R2j+Gc_GWc~+|=*J@4kRTN&g;t^4bgWVzOni zp>#pc+l7W*-1P;1I~&+ZlOB+f@ct>w*f>KG)rH80#*8H907wG7FnTtU+ELSE%jDgXw0>~VnAdo z3G}nZJZ{Kvq8W$$w~Y0+5^@@=pe}`+uS8{?=Uw(#-AY^}H*U-FKgv9$#0gGauU3`1 zUe5!AQ3ZDg7nZS3cixiJeE;s44OKNtxL)ONhhga^vS_@jznd115l*L8SlD~G;TXZk zGccRB|%fryxH1w8tBzFm7&A6)kNBj75n=6;kZaTqgxZy{KhkM%sfC19lq zIL1Ju@J%4M-JpaY{;1mtAblfEF6o!@(E`+2d1>aG@!g2dGsQcCXvu-e0|91$t z`LB;k2mL>q*_L_#m&~?TQScns4{NU5E<9(Q-*gvt$T6f&Ky$8Gnc51JII2;o>TfPC zv7Zu$HFLb9BaZh->MB7O^*qpSJoB79`PH`=yx_ot-`OLqJeb~5H+S&x152u>)~#;k zK2T-)g&zw z^VjX$`>SJ#W1GAI?LS&u<3}^DzVgIIAek5e^mc_;)9EEBA`_C5KBv);oN`l=7!$z| zcHw9|g`BhK>Iz@Psj6Waf7yU1q}ifmrPB1PVE5^=Re~;g`_~h7{*4gzXU3`>lDv!x z*T`(;R2N=fe^xvjoPluwBWa`<2BN%TqTi24h_u?yw+q1{Kaiad4Unu>dhtdcy^mqD zfA+c)o{CvkFi%DmncW1N8}*C~JG8{WeWiYb`?CWW3#>yG1!Kep;-@nWP8Rhhj9ZHP zn`oHy@bCJw$%e@uRl|X5O9IB6mD)*$auf-@DTdLUhG)&?z?xksJ?|F4Iq-r{ig2-K zcjL?iBdvSh#_n6eCK2ZjjenZKo@{4L!VTT{v?;oa3GKkn9F4jV`!-1e2{>Y&v+wkq zW1rK*+M{}MMgV8`_Di7?g8v^5^`yKA(=sC+`9Zh(grX=DOwA}`;|T4)F^So2 zvLB1wBhl;mOURawHWO(S#2Sh>4WYU#Fp+x13lkY-@AA;?XXgt2Y(YLUb%dv_NjJ$Y z5@I0xD4-cf+9i(G$>`*26`0>EDh%UM6&)Z9P>9Mma9J53lXz~>(J3i6!0VbY8>GT@ zou|Z4D2MR(+0&KU*WQ34Tbsp1lOia$m`sY)k`g!m-UQ{E$gSYMw;Pcg09_OdvZd>-ha za;Gar06p92)zY=)rDqRMSTOc;^b{{sNmkit!FUV z#X+|e;issB#S*~2(m3TrqMxI@IV%B1@q=>j#Rw(eoyXvV3nD`HSG4bK*!r4FEK#l! z|KeG1=Xo;rhPrIDU-ec=%@aTEqH%kg+Zs+bLC1p)bbypZiasB5adnH1EJ+=|{=GkZ zMTk}Yee$bKCuFomXUNf92$sGUY3T6ynUHLHxw()-u-M8TrHM{wD#;+{TjYK zcZXJd5Y;rl+g+S&Ma*NjDbwpNZoYjML-7QDJ16cKzA{lvU_;-jgfS54BKqO8#)yl_ zp2PD4n_p7le~|q5VO8oaM#ROO8u2XKapETGIR<}1(=0fNblrzQs&HZ%#J0y`RHK?f zIg+AE-{oqQW|rn3On<)LdfkQdy^;_EjHBY#QIZh@mZp1a!GOfH?dzojo_*{v`WrgA zkhdsp8B0qx45>sYbUZ2oPE&18HPubG%T}{e>}7fo3TMZ3$HDJa|Em97l8pz2QUq&2 zt0gVbQ|PB)c-Q}YbF zFyg&wP@{ty_(7mrT z=)2srf{(~rP}(=aG-l-Y8FN~&g}K6e*J_zm8xySfx=K%{$CmX)C4x>e!ieVDYKa$| z-h<^FGAC+?E;MrIpcwR-;P&*TK5NqRq4!*HBktzt$im3)J`giGI6HW&tA;$+$kD#! z=%olsx~#YDQ>obWOeuJ#*J@Y3& zx=KN7PI93ZZe5WxB9tazam2xy0=OO}M7J9l)~uybv7SWyve|O6?FJ%Pj>8_C|0^=A zNwe(rf*((#GWnIQERJZ^GpJfkp?K=ej%w9^|N1?3v;5cDutv@G*OfP!zV*Krzx=PU z#xDWes1-`W{_pVrXc$zdni*89x_{?wekN`=sEKn>+gbb$*D7r{IjZ*ThF6FSwMR+# zzPtU~FCGD^y8-USvOTTZ)o5f&)8Lch8YMgh1guiw}xN?KPRH|f| z5{`D%3+wZGd3v^=`irgqEfa7&It%NQ*3b9t_IkWOdmTCp3kL_=^K{~ zIy@uHcSP5*FHy#*hf{Od^Mkhg!s=&gd8#S!FQ02y8$B*w$!l^khH_O4Yq{SHx(U;E z%6VEk&~#M}N>dMjDrtevf>JdgpeXUpn}=QrzDE{`oC@yL>HHvoALi{T%l$?SCGtM% zVmcf-!yBDhXZdAQ`O6qfxY)`L^E-NMsTRnUDA}9jfjC4sRLhSSx>J@RT9U8~b5Qs= zfSKz|iFe8Dzlch7lAYWG5^`wef*vd(MQ6=xC{`9ibA}TlHsf2WX92#7BjD8)G$h2C`EH_Q{IGDS{uyNC-bLIor7kYrS&7f=Gy`;OkpXN@C+ z8~h2+YpCwio`fRU&MPpK4n(^K(PXL*UZ*!PT3?i4X$c_~5D$+sf)_uZ2*nnnTP| z-ljbm2)T1o5QD6=Kxm24h|%u!4c!afBAR~`wf9MH6m-HY!HS|jy{hylJXBdJ6thu# zPFT4;zZ5#pe*ei{NRBO-Z4{>SCd%t>!_2E+N~=r4fV8LuvHOiP&%}uF9uuQ1b2+YU z!@Fp1biamccD(`GP5lx6&r-WV#aG9}p|Oo-nvO}-hypQIn6dKSjGChJq`_x!tyBUU z6w`Cnzx(ENvC|m<`2|I;Y$m5<^gmr{a+IJjYk{D*9W>s`qTzRE@qU^g>2 zRVRO2)dSNc_puZkJ#+@a!Q^GAd1+h@Q9WOcgNy45bB_6JLqQR{Jl?B zuBe<^0JQ+I01!zJQzB+sSK?u94iEOgU*{m)W!Qp9B|F@Y3zTtMTYz?<&1j!2CjaWe zezRKl4&5#&Y8l+y*FQnZ*rpSjj}W3V?Pr2>cs;kaX4Yyl=}GZc3n8`K1|x^4gV-K8 zp3=B3Ds`jd^O8?~NkjE11tBZyp|l%dtmQ{(#DtXD-g8JzMSbv}AUK)br&%=d-LYsh z3Od_UHW5pcJ2K^&FWN$nCM5HNDaG5)%8fHQ=)HSEe4talT88V#?{Kvdp3wBkQl$s% z5BifZ3XyUU4BP-Ix;Hr-o+==dB4eFE%O>A@eZ*rQ0cxLaF5+)Z0CUc?qK%L40dj4D z?NX*(IbnEx2&W1tBeR`WWJ&1OM2DJAGe?(~JQLark5nUjb1qCS>Yzk)9}xcd2}E?J zKiACofrM{K2lxprGVcR4AK?Yn1N1uce>URYm7_3p){Lk0Y|5fBU^se17*2B-q0M8~A-J9x0)y_(VmZdbD%Ft3 zojuaWL0`DwHD7W__Ol*m)J%zhgy<0C63#))RUlJ-FNL+SYbibb)H;{~g=SptSvYr> zzkUC4{s@&5{R?IC!&m^RNAO__w6FysLug#b;c+^B1LQ@EP7mC6z(0+-7aXNdQUzRa z-(9X_r~xwP_{MV*;u?=^|3vl8i(yXitb>*|ZDNoX)~*)N>?+8Z!f)gQAs^Nx*4f9K zMy^e^eFl-O6!+PN+)}ES?b5IT^v0oTbd#(pE{D7k>;C6TpDr>x*yTf$)&R@NhIGVJ za7)Jy6@;o>=p8h+a%*%~^ED8E7$m{G{i(IJiETWmT5hKRNN-usHeu0)r+~h+L-z2r zYaDg^U8T>5qtQ`1q{yPlqp!u5Z}R8%}~9l#EeK(}_X(*5z9V zr+LDXmZkMXsVyazdM$%ojZ^dMD(f_McrG&o8*M1!`5fnT3m%O!m{iQMTBfu)qOO^vu`kkBL(7~ROKK9=Wqlx)v44F5G zwdW}^EMPW4bgYgAY!j#`iex?+6;hGyg#Bjq{Q#>joe(t$f|d@j@xj&6K=bXS zU$klgqB;GFmjcN2z!*#VQmG*(8Ph3@CTEtB{nkxtxgjQ4urf1ppOsl?%geeEgq6}4 zhf$$X1#)bi5BHy(`?>@5q?uIXWJDN4r&fT}AK*$>mCyT)wZ#E9w`EW4M91365raSD z7u>rIX*<+2iz`su?qqX9dQ>h~M4u+^`E3p_M2M8-HfF5QxGhrr)@x(|gyA&jVm9uF zp4`_3msdN)YL+)oWEv)^Ru3(2OSW&)JmZWcfQlypj#;Fkyd|j$d<)=#D6jrP9ar3& z3b-}r)=VZiKa zk_nFvy-T;envnubBgM8J-4W>?4$nm_c~aQ^uUaaoI}<2A$=bUNfXv>0W0Q+I;=^!2 zdsR9I5ykYs4G5u#HIj@*l9x#v@|r2{!u>U)4@jL+twa{xn%g#bD0t$bNyrKk3F7Gd zBcgbW_R{qYaWiHO0d!at;u$7#-8_tFHpSv{TvE$NN=sG82R76`4CuWmP`eQzc0<6d zp3+eub`dP-y~mb%fEhIaQ))jZ)IR&GRIw3k=)E;o)V?$GU$g(}PW^fCehpje0c3YI z|5sSr84YU3i*mX1f85KPe+T>@&S44vYxO^2|7T*Y-`Se}6Qr6)0uZ~{kQYMpIuPA# zkp;VMV$Y2{{WKDE(r;ggZp(NLsKILeqwa3h!y!Efz%74ZsT1~IhujbXO=mou-Sa^i zx+#Cv<5hT6NOw0(AKdphYhT>B(HxFg&OIQcIwh;tR3J!S8szwAq>95ZU@S@fg_R^C zvRDk2ZaG7=GX1RF4qD-adTp0Ho1w!+o!s&qVb8Qf&@4%!c#KnySq{mBPZT+jnPX~? znsmh!O&JlN)Y$f_&KRW;O&WOc&RYwiMfRyAEZoGXpQ%_P$qxQKZ!|0#a2Jcze3(by zRC2u>p219^Tm^k!(+8f9MV#$q!eZ1yunahOIQqy0s3oB@YyTq9=!z=&T8aN@68`$2 zPDn6ewo7A;yCb`PALuZ%N-vJmiogGQ3c~<_sQ~$k{VmqzmdatsvIJSXK??3hHMJfX zTkrUw-$knL94MacM{-0b(gDdR4BIWUMbO|uwlwPsLIc(J;rk^j@ulRzI|PZ5y_3bwaxl|P9L0O zVPmm-fH|x#iXLXW!Djkm_34(W@fKOevN!$2hO_#{C5@%XONVHdcaWDzqS0?z9?LgL z+GQ;J6l2E9Sdx6)3A3h&VH(sP%G;2m1@Sxc8tr?T$sjmHQE?pCbk0bzH5tRd@5dWA?(nIxUcNvWNER;^7e z4brCPl14&OErEzL?)Z6{@Vi*v(p^w@7O8od=p`nl>c-P%{ALyzMcS0O^b^DOl9y)x zfp(CiT)(X^dR+vcF)=3#4A-{?%^KwI=yC1^HmTN`gov#v1K3+xR>!k&2}4%D+;qx0 zkwd&8)l4#ZH_;U(&9{YiCvpk(k~T)P9j-MoGRWf||L9_Y&%4lz8?kg1mw?eh9etO6 z_n|?32RG?_SW$G-j-+~TjBA1_ngzlHIHr<{p&sqgS4g$RPKPPy86zL0zKpmTF+K6Q zdYm@|JHpLjPDT3)Z2++W(AvEUHEk@PpEGR>!nWl{B%Ej&pV;*_E?i>UzFr>=Nmg}4z3MMEQy(H6t!2x zHBOyh8?p`$3+vRvf`}`~eFWm2EVa9?zQK+F@JU8@{4I$y)a}Y#^_$#7yAMB~GZFml zFhHO;=Z#UTt@G>pQ?=PtL{8&?onYJ{x0N4~h)Mch8z&v$c|96ZM1t?^mur87Gl+T6 zbCqsU7o~H;3OPzZR4J45ho83Km|BJBQZyR7d0hM+pX;}>)KpU39=8Z{dg;R3rl{h-596hJxRBPy0`gX(`YETgJPE?|cpJ%-Et+s;6=2NUgsLaVD(CzCPL=eW!{w%_s|;yy z8XcT?jg_~PG>T>jwEz!HuK>ajINIa>rZ?E+Aw;GGVT>}sg(AJ>OK0pyVl*K<|*Fc1Gf;a(ihGQYb(rPdSbXl&3 zX0sRr?)-EK)qo}i)O2j#0E~MSe;7!>$SCf`w_Zw;MA2TRfK>U+bwQ@XU+IJHdaV74 zh27bPoKPPk+knhJpV(E>RUQIh-SVnQf5e4zCn0s%bD8%~47jwq*kLmJeyU4f1)jdkX zjc@fT!cMirb})V~nANTpTq=|5lL9<|Q3_{gZ*$dPEPP+9nD$}D%x1f+tvkVi@5)nP^}60pF7F& zRZ8N{^gD;HXX7F!h+&I@e$SbUc7mLfq9-{%62_0h7uz+gFr?&AQIY!Xjs=_8zpV$b zR`rSu;DP(}85@ydD6U6)a=3Mu`NK#cz=KdnDe@i~`I%usr7kmp_VCD`iMw-tf|(ux ze134f4sFC-TMysN8w zk&*I08hN)I5R2Xh3no?}0{n@g97S+rH^R~PqjlO@jd5xa-dxO$ZGk!vWYFfQLdrR< zL%g_Xp7vX+taL@bSFhtIo{LP`Wk#xWW?5zxuh&Um0^Q@3zf#E^fsD&qHjqD$P?a(W z=lEBfQoL?xkZNq4qRI(=w!j0VDY0>APgYIab{1sCUD&;LCCStqp^}hhMSBkh#ccAY zwyh%g7=|{{^h|-yQwxRR#J0>yL+~CBe`8}8z=5_TCBUNJ1HY>PW+}7f7@4}JEm8dn zQkHAfmTG(jI`M9Voo^u7MJ+SE?y`yX>b?yIvwYcw=U;Y%;N5=a9Pag>Q4gx)e`A4w z^E|R}*#081a5MFOE_emaJ0a>K&C+fxQcTUyauw>0eY}4>K)-QZ@w!Ytf?i+FE*jf> z$VL($l(h|?2Rn8{LCYm8dHhlq zJ(!hQPc6Xm(YM!byzj%a5&BWG*)TLHdnWw654;L-d!aiXGon&$WD-(PP~zy)up=2Z zKZxH;d9c0J&AC7pwzjLF)d!!}BFm%K+i{47pvJ-RCj@evHhqUE84i_o0IKGh%UqM% zL;r+w{aKHaT+O^^E!Zg2snE12wXm_7W~hiM%v$vViEfJ<#wm0)Jc>&d+u9zNXI~lh zbuexq!u^)4K)?eWvD0N`U}z^^XPd)w#1C+&rM$}r1oZ;!Fl+hyj=p!1{paO%k^#x^ zG?mTPx5LBH-o4RZ^@+>--EEz+_PjW4VA4-@K9)5&HJ(-qk?x_Z;-`t^w!ux^6H?J# zeW=pIJmEit9Dx*wPV-p#OGgfh4$EzMgJ|h@-BO4zkGb3y1W_Ed{ z7^Q(IO;v54$A}K3@#g9#CATED(+n{1vt4I37%uwV$yb!5ZtOf^?(BONPpf0T5Lsy1SA9N9q1iX$g+Vv?*y$i)yvZ|3(4xgTE zcd0_nfa-M)xtQPJDiqR#GUT)oO$2_Lsa8O%PbPpzyNQGH9&fhtQ9tI))*-sg6izM$ zKs@iNViERXn3~7hzDsx(nrjSBBHqr&@Q1+J((gS-b+BE-%u{lic|*{*@wc5HAcsBCSR_A`LvJO4{@o zbbTzgjVCkC6z^dAP1U7y8%{no`|+Xc4?Wt>LLZ&$-T@*o$EbuDUk zjL8b`o|e(6)HJYLDA48Gkh3#bZNc06^Yv}1hVL_-jp%0CFJj#KygD!&mb+`v_*`lx zdnrNb_oMTG?R}pwu*rI8+dt5+caCa!@SpGF?AF)@m*_(jrI3_0+$7*@dO%uvb-zVz zza6rYWuQ(SY-xrBRVRsl3?YhRq^qfTr3^xR#Oafs$v%Zm=Pq{hU)+WHes_f`AJi#2 zln8mM8>VcqST6L%scgL4LJKFtexkV7DuiNnBY9MIyigwa9gs`eEYK1V-dBx8nN!Ev z%$#RxWP%)rjaYe(FWX1s*3~I?;*@EQDHY^$JiOHSA;DZb0(-JW?Jo&CIFb6N=^9Gs z(9gNxH@si;oS)}=d#7lHy&nKBHX{*9&8rVUb$_ivOgG9^L&gMk;=%gWx4 z!z@#KYmF<%XrQg-lRNjQ+`Ega7|apv0L^+2Nh3gkch9Y8@nQ0xSY$EIlRM_bQ~3>1SHqh$w~UMNFL z79UP9i4KLdlDWUh7zPuTAD=c6Q;p;do#gaffz;H zy@N8m^3|=TX}? z^hAvnk!y~;r*_Eo$jRn@PQtV!xa6O7yCTnuYij>4UL9cI6Ofi(LR)tKwodgDZO{Xn zKwVTm1*Wk&fTi?yKs#=({z#-##pStE3F%P?FKO_cETs^Hs_rAy)99y+6msvbeo-LS zDwpxLmYIJvF;M+hHsce_S!i&zmF#pplLIu0(&!vX@_&8_b57;ll0 zG>bW`Oma^-qb!9=()gIrOLJ>W#K%U}x=Z&1QB8U!PPn26jNcZ{c01A7ZIGs$0Fve1 zuI*erHuo$JcI0g!q92vVVtEA>F(|E2KjWHR5gmayL)f7l>tAQ27(w5GTF;bIp!VWPIDxNf zqsO<-N>65VP6OH+zAQeIOr{&b&Cs3JZ9$HqNA!Y4P_-P*q2o^iq6d)&z@h1A8?17$ zwl|RgPAm2Ymd2o4%Y0%{eAS79cn*FOi8GgB4!I}eW z_?C@2x>cz(P|JAjiAkV)Z;{{8d86ZshC;phr&TTp{MVI9Jno~(Geg%VcVUHP|a>h5%ZU5|yrIZX)?pI=#c!wwE*^ERH*7*umiQtD_ zQi^hhu-4`r`N|DvA{nPLh9G`{Yj$P29^IAd_x&lK@AoMKtS4H8R()jRWTI}ZFMII8 zeiG87QF`v*v4o*NojI0n+chC96jgU8O+`u}Cr(6_)y_Df&z!su+mgm5g-Jr`Q!p1* zT`TKXG4F5bEZK($cX$l(1ia}UA+H--jp z623Yr2OTTNu=dDacmCuP!qVkBzTbLdM7BXf`8@3%;tt?vvTDG;t(-ut32uTAN3ezH zizw#zNaCHNt79)K!a=Ks5YHm<6!+tTe)(io29gP6-c;-Me_|}j+E_$0wF*|J8iO!h8KXeSXfu?#2Hs ziFMah*{7{YU{6VmM&gkJdzLWLRXBd1;XIUgam*9QIgga)MeuYJ<(vn}#pelwa~CHp z@`0RscGz~V-r;gAjtjT4Z{yh&Ek2c^gnposaeCJVG=7ES{0sMK!V$K}xWEtR>m>He zbSIh8LM!6hZNI54PKY$oul282RoQ`*TYAkD%^+oe&jO!AOl&WsHa%&m>twAK89w=x zt-xTCNr8-4OkP~udH2E=#okEiDvA?mQkg5@{fX*=R?4ymWU`Gjh)g#dB(y5r@&<6&vK3Nj5DnqgswK_}KrSN!G zW06?OuVVWD!{ z(u#W7*V-2+cS_jl9Vrj*q6d;)HoKoT?y)01lCFcj2_5=ltMG69E+A7wX|#PNOAGzC zS+v6RNaSZ+&(jSu>QrlX3{emm7oMqcLwH?RRq2(>=NRl|rglp8SN3IA)yfum3H$_21c*aqq zuwgDWVy7nZbG+VEY;4cEy5X8b%t&#N{mkLKrh00*Et}@i{1bry=gQ)T-@!+6S`IfuUGpGPK&_Qy#sm z%hvhsHZfAsKef~Du?gGu+)4Bs4;^as)4r?IA1b>{Jk`Ml;0kYFTv5`&%zUbCoGAm7 zXgPZwjuFE5M0R@qQZs3#Pehyra);thLnSiv_M{2o1xO8(H##k9-E{h1-(U+_Hk76{ zMi+;V;-tssPRi?Xsdvad(y5$kSWg^Pm zNNaFO^1qUe+!gIdEdmOTX;ICcli@jbM*iwR1_vybkf&5pG&>NE1h@YyuCIIw*@NGq z*Wk3EnyOrol~jpVP)T()U2;II1OvjRm#c|kb}&g@l%yoDu~Ho7#B0_~JEu%UGVpVq ziJU_XZq!sqzE(7Jp|NnvDI}(DDqu|Tm`T2gB4?E1qXJQt2|sMPcQ4PJh|O#<-ATqf zYDgHCU)s0603`M9XKOZ(Ql{H+8#^g{?R=M2N}dX@VdLWTs;zp=o?_71iv@nH8DV97 z+$st8187HNg0)CDyiGgs+a1_zpU8iMvCacKzbd5s;DV$nJVfe;O)|l3;KU-a+<2>C zVR|SrY41@DmBXD6!atcFiI#)4Zji~qyPiLcO<|t#<}!|E3@G9kp*+_8{yI~ZY=`eC z&)xFr$(^*yvA`V*rk7@;l8s7@ahe;KAU@pwP-QI`U&uZf-ra+B>b72exZNPPxQW6q z{kSica`31384QHi<&gFls*Y6Wdb=_W_JDN*xktSg>^0z0p>m zG<55L8P)FaY{tM-fsF0&v@a31j^$R)O^UELDat^pm)*I!khr>ChII|qVW-i(7X@!I zeI5ZJhZY|GK8U#EuC0m)5Ob|xkZiVUR4RM(rCUqAp@K>bh7Uoy;^Q`QfV0UEExoeaXr`1a9NbgIb>gt^{SNd zKBINf;u0)gi?Qmzu-ZAsQz^2WR#UtletW^QOmG{7CKP>*Q<@E`O0wy?lQ>si@qz z-p-|+F=KhxB#cAJ4Rw=ipWrb_9q5Zt&G+rK4-gCJ}CXTGKenKPLW zVL~2&5uq0*97>q>J2+%Q?)O3_IL(JR={NnaCgi{JhhI622)z)()L)SQWns8|qo#)c z8{zHHtms#V$L;%noJt;kJ$PpEgp#o%^!_Kz{}*wD@7Mn1*ZPcmRsrNtv%Eyvw(H5( zT5k3tTPdk$bcT)i$^T6u7BuUpt%9x{hcUwkf@U|}_vQK~KudR_Mkh-kuFa8x*7Z(>7 z`}1@A!q%o{#y36`&qrnY0M+;1?zWNrCs_Qq^+~0i_@F0{bLZrQPCuL(8b zaL-&c;j>td;9zt~OiV*BOXs6Q_C)%kSZuxb6?q(vNVN_{6!|!^-Tun{)=y-vXKGKQ z%Y8QH<67d4wFde0Zy6mA`6t1ZW+Ybb8P*i%QHem;)RI6M25%G%^U$0MdC9nEOg@(H z0hGkZ2EUdCJ2^34Du|>wzL{*YpK=6s#c>b!3T2v|myR0T`$g^lhp>B$vSis71zfgm z+tp=Pmu+|1w%uK}x~wkSwr$(Ct+)0*XWw)08xOxSSIili|8nHY_~s0^k!E8WVI|xT zq!b3`AFn-H8!fis8OW{E>QNxDSaPMvY-x%58G@E~r}iDl%T>l}IUjj(Ztc~ke$qEE z;~^>LRWZz>cECAKsv|s_p{bl4*o@mU1!XUkhzh@4DxJUAmmh(&Ry*0<3L`H>N)KQ> zhX4Kqh46-~KhwrFT@X`+6aYy}My-HV*H@sM8>F7mDY>tbTK}>XH(9RVuG_|8%GJG- zQi8|F+YNw)@kzn$ad((X-Z#;~hD|txeY{1IW96XprZmf*v4lQcubxXN1H8Akem?A< zKMat!%{K@RVn2KW+6tweS67!o7=c@9r87SV7Z^M#9lUPFzMl=}ogc#VLXWtQZjoIN)?cPW3hn81GPuH4ktd(YMp>s>b}f~?GH3k_oS zx^-KPX)?^Y3dYaryrnY{{oYzg3DRz(LZ_`F5<&0GFnB&XL|_imC`>%aSOQjOtU~Vr zsK>1cJ2ef??ZL|U(`Q}O&cw_?)_SE5w#jZQ0mmH6Wt!Gr_c~x@RYh*+;GS?Gbh3*5 z^YIMmQ{g0%m4yjo&$%(0_ZwFB^=@>tmMv&iFVsxSI+g)@1P>15-B53IEeh{asfG{% zP46*Xa|=4x=Pw+&-#zOCaY4je%P#jhPzvN>jRzw7DSfL`KUA39NKQ_7NsZkNx%j8H ziVa`X&R)+H!qUCD{hX6PW!g8cxVmXq>>|%E;|dYsNEl%FVT&B1_})85l~xz3a9j*K zOPqz{r>(*-IWWz-`EfC8Rb3kB8dMsjHznpAeh43VVS@lmx}2aE+R86XYXb<@Z#7bV^eAL>_rP+^Xoj4tv@ojk zaA^>2+&=yMagV4JXvZG2UpL(A;aV&?k%@4}Df#$2+7TFm{l zZkJ*N*WDi!ao#Wl)d8%}o1vDJ2G<`f&;c6gO;0qy5^=;!gJX3_Y*QW+nMBYNJ0W@Z zH|C5}v^0_Kd79`h)nf z#|i~+8Ct*inXGM)M(143;7JV=#0mZ*pT0z(KVv6I=Me5Pcrv3W?oK?#NqAm!`81=V zb}o~}9E*Q%E~mH|et&f6tC0F`1XH}GYC0q0yu;Pi1Ql)-mKwD-`P+A^b8<}7o1u;)PTOKH4-843nECEK_Iwt@h516B~@WqfNSp% zFGm44UMNBeqVu?iJr9VOMV#G=o)-n5kheS#gW0sGDwB=NmhOAheTgFbRq~l+XpSh3 zEr;=XVOKD!)7z|rb^GhNZkrEEPB~;2I(2A0gn-_=NJB%A-7@C$HI5=--SK|q2P;qp zwhRT=s`j|#S9D{W{;+!O=0`w zX?Z5JZg*Srb8za|?njrFD0RO585;+GEcYZHWL}@NG!ch%{#_XY`9S!VoISK50{yn$+i_}l>yo3UCgB)OUSS)pyeG^JDY{6gu3REVe zotqcKEKfKBdgy~Pou53>U33zRm(!=t+=tfqDTNhEPD@cLr4F%Di^xX4UBMLxDcSO< z@ANj;8Fm*h1RF+{JGjZfoEZ*h>AV*ZvU?^NpP+w^n!L5J+ElMG{Ny^%{IGvXMki=% zN8!Y2dM*_7jgWh^@<9uL?{ zy8|Q?xiKHL0V8Y;!$g`*uMN2+YKHyWNJy^Z4?}q4)iqG3m{~f_T-Q|n_CkxCsT0xs z3CV7v9F@J6UOpWR!5R&lG|{5ei@Q?` zVYVm&HQ-FG?Vip;x)7b$axYP0$S%cwlNrJ zDZ)rBV9;%^53C$refWWiIfaen3))v-DZg%lVuY4I^319MUDvupF zy({uF-LPO(;;6N^Al+H}l^m&n+DZiJ$f}|mFT5sIwP|T|gg+>5j|gEh8mi#}_IKIm zyG!k9VchxpiZtM@Eqo4rKbJdglLsmVuhy%a5k$RgUUmzkp*Xer4KK)B!u*$tm^Inq zR)1&AHk@qlp5BM*=wujB(8;kSiQ7kJ(E0xm+Vx6@z#%eR+Yv2z33Lyvf_J3(;5k5v zR&QZ-#}PtB`bCIYZ*yedFof))<@QtL$IgY|=P+8I$OePaLE`lZ1`*WvhB8TVC6^+k z3PlF4QV#0ybDMD1>!n^SepL0q<{M#KAt?MNYeXy;V1D6e_!GQ_)I*)M1bTb#o%=2I z+DhmUWgHRFV6qrhnbeO&Z`UTM4{Zbi+pr%MN(U+6{K(cylFTN`(A3AV{XSqskssfn z@rMUPVGhsm7=1U59`n-Ob=Y85D<0yV*_ri;hpE%QJGuwi2KxEkG<8*v%$}avmsskc zhC6*wpb1T!>*n1~R|F#RfcdOJ_0?01m^CF-#yMt0wC$OHi3epxtx#9&4Tw}1juTTY zo5}GWmL3b4j^&T-Dk`mLZ{_t_^g&bZO2~lGx~!lv$v(PtADTyMF!pb{Pf_#i3Dl4v z>iGO3taTmGXZRFR>TWlS^O=Y+?5$hF{g9d($92(FZ9SbV*aqW}W4D{9ckO|>7WFi} z*s3k@QBQ@3-IT^c_H4&F^$EIA@Aq2ae$(c&?xO77Y<2e@)Wd2!&+d4B>e_uUZZ-7t z0d5d2)T;v*gI!Hl9l&g-Di@4lOyZ;ZBvGVE`4IK2^-?L)Nu^{-v$ORD31hS(4L?Cn z5`k!c_EE5V!pAIHsOQh7_9}`nC7$fhl)1oK^_Y9xg0&F5NxSbnb7(&sG!p|1q8>*NmZtc5^-VkcEcQFN6nxnH4SMLy1PI( z7dL%#ej!*>PJU4~10M)ixE#n%j3jjFh{?zYbfLR!PK6kbS*FU6FE$>@8SXPL$FQ^_I zuO#wk1k3Fp981#qW(y)x$)#V-7u`8Ra``NIcHEjkW%)Wy7#8P{7K;0G*q!t9AHlIr zBt#wvBJY%~y(ZB(@&RrAJvG;<n3Fdz~mJz;A6?YaHbO_SoY;V31aAt`q}1}Sl{n%AWos|6i{Ty>JlEIF6P z1?VGRkyH3pWJG?dhBP!et3*nyvNiJE% zJ7SW~(-ofa&AjoExpssm4;!S-p0+2f!byk>FLoh(ajwu0cptJ5W?PO0kkxc}sL43i z(4HDrEuSFv!>J+V$0D|gYDHvYHr*T!4EubO3tsKU#oz|S!1?Or84bCY|q*H*{fjE&w5Q}JY(iW=AVS9Tpbq5VApoO-(US~=($D! z8W#NwCNOH!>9L6rYuN5ZN=O-MGB6}i3YWjn^k*Bn3y(FEVvR)Q-y@5C|F*4e1cCfSsW}IDu>^D+{+75>qHb^qLOlV zEsWXA+PEzTO(NTB-)o~Ep+b5Rwi-EH z&YRokYARA_);V{Dg7PFhd@ZjJuSI8idR<&^p9@^CPK`5Y7diZf8PpDlq)J4yEReEC z1yJjAXPY8e&P0DehZ)y}79Amo`r<4(OTfAoWG61ugu=pSb#&LEgR%^zM-di8d@xNG zETS&AQSsexF-m!zlA=Hz1D1rkT;?vKH@WK@71n`-E?n}V)Ny98x&O@m&{T~Gk0{Yx z;-?)Y7v}ravUAIJ8GCFq7rQiJ46bs{GA?j-QTVgpQp=N{VE|;Xe^W@*(Gi1gmw2w9 zuFWRuKwm3m4IAzJvNAC0g?MsUk*?1p%#sypsaT!YUXOv5V+~XMxNVt^anJ~4YL;tW z&C0)p++qd^Vr}JEM5uo(Iu_Ma4q4*pL3tO9$;8R@tgS?NWtG44JlearRfIuZ@AiRp z^h%jAt5muIx z%3oroA9fNFZF{LQh2^$*@4>1C{05c;HBi;5gn{Y+$`Qxy5%G{&e3{=Y;Ci|@{Ot~z zA($%|o8SxjvuH`9#lz|G5Y{#Rh~a#vAmQL2=@F-e|Glq(baD8-jB-?zlsk$0pbl0y zIzv?PENGm-z*T~LP21{Qve!X#3Mh8mSHGYdnE_?)wB;g;%f=}Jrqm)nH2kNMpbErP zT&3f%*%pEz7G(Q57LX^~Xwi`+v{AHEPYYdRp`nKjGHMbpdw?DGc8{)N_*Bd2&Jf+4 z>L!nuW=No)j6nanERsVKsAB{7YDJxTQZ`yy=4!=F?!Ev{&$G}E;F{GF2^*Vu0uI}4 z>DX1K8}-h^u^zG%(nmFohdNQ`mB!Ml)@?>{HOVe9XXqzd?FcEX4V6^)h)Hf*-o_0x zzKv@0N4kY~HL81ym5HB7KFU2W!-phx;TP#_nzbeUjjn%YhgY;yR)3Ta#hzilLWX?r z`&es)$#E`tcwppo{sVM5Y^A3Vq19-C@gdu%F8>p|P94xHsAx55oVKjqMwJ-02V8pj zcRE-7?2nGx$|~hWm89$^7nL0kTNCvGnwn|1N8idLbKY9k899423lMqoO?mAKOa{}& z-Z%TL^5)JXz8zAttUwXOG3abTqC3l^L-cil64MEg^yTBkO{_iJM6oJ5@PkpU+oGze z-SAB;gT*C}m=#0@YcZ(L`(VJndgD;g5}BcC=qNT!RW_=oRn87aXoj!m9h(fQEAw*L z<~~w1=}v5*9PzePW!EE=OnXxMvcbvAOZc_&+UA3#o**pWuo*21sB`PeO-n34KVd0` z496e&!#*t##r4!y5q^p+PqfCesi0j9%nzQgMRhp$!a+w25p#L!Ls7rz?8&Yiys4Xp#Ei&40V z`BSymYlh|&3J4Ko!@Um|fpEs3O;kx+lw_aXSP9R(>2(UUFz2SQNt@g_iBDkQSATyp zlnoj&LX-rN)wLiCq@=cd4U`-vx0X*mb^p}q_@zaPmfQ7D94mpd~s7_49C%}L2K6@q=m3L*P*45qw!{3E{d ztgikezSKPb7GFoTe~T~78Ax{maCgGL#20@5|5tqBUM7^mx`wwl)#%Y})?|vf;g&$z#Kyd6AZmc4Uz*GNuzcfBfph6z#3N2J z(UE*VnF`l7yO67-SN+B7{&W&Dv!f0PDbR)Wagi*KxEZx0@Og1v)`$2RB992Dv-bVG zeBj_vKk6FpLlh`8b%+q~;e6K2_!1&>bbnr;lG_Olr8$XSMu6fAO7ITPg>ZU4|<)WSc7(<;wvNujf`iKkXD5 zSwtY$@Be1KVEp^9z+s60oAsKu`j7Q05a7G`$9hr2P@soHzWvk<2WHawvvC-4a}`*+ zMl+73(v?hRye-Y=`M;x6M zrd@m?%JnSBlkdt%A?<&l?$#-)x~Z>)5bmtx7qh_pZhAuT*xYt){M!YDJJih|Ndq_} zABWF|6!Bv%tI#wkg;cXad#PKD8td=&_@Z49s=NfsZy64tsNI8Q0kM!bl_yXub8jvj-aEdm1VVWyr7&osn zy)h-(?T@sK!pRn`)Zmag6ynYbTDHTd{%p_B-srox!feQ@mq|d`yrA8YhhIAuLsNP{h%$w=;HHNYl9qc6hp_+&g#dq63q!SGTh3b^69^%*slu&F?cWDTQG0xZMl1h zh2bCAt+o_4yU=P@O?=?FPSI2}^GR&_%u)k122vG~$Gx&4GdU))nxXTx|;hj6no+{{Akuf;rfSkb!A#PV!g!&*Ya2O6}R%HRfAsNV&n>Zui8rt zMV$62gy8)()$gEjV;#Dmj4T^O$6LJ2nZ2qI*seoX!tJo+RjFP8+Yf=@*=vy^&Nzl!}TG2(jU_(c}6f@66+F|ojrt7{OH zlsko(hwGA-n45NLd6UuZR0;1fz4Fl1ftvZIbQ=r zD~wi7Hn+trq}j|Pb0feGe5yjyNHchQKbNEN%pt0?rOn<_rUKLYGME6yIRQ0!;{~@5 z`+@u{kt!~T^L5JmWa$#7Qm%+t5du{XPH*pekKa*gM+CWw8lc9o8LW%w;2THGPD}&% zL6xfA9#*(WnMz_gd>iFKLO)&WB;={|@4G$!R%5@Tsw4IT$cFR5z8>y<1Ia+WA?GnK z3Z&-rfao4qJZwrV4(t5l6P(@TXEwOLyMa;&4ye?ngqG4fmClmwt_F*Fpe0Li&lpTp zzX6FcG^as7&iWoO`hDI3_BGtAcFP$?Z{uv?eR+5dQKlM~IO7qwkXqzH&BuDoTV=YS5 zqqX7bTr=O6&{3~UF7%VDoIAU=7%CD2>%z@`CFaKWPp&E;XPe{*!wDAt9d(ETY`fm|N z?9Tyq?YW5s;+~#O>@SYDj@13bCm3jR6+pv+fpo6`2hXgYn3Jr(6R)vB+;@WhK3xYy zKE)nc zPYYa27`=@BMwE_hz(`>D{%~y!%`2sFu^nFD-vq0~C19ET8N^cZKhEOs6pW(Jr-JBj z1}V5-5C}{WY8~t3$U+)`8Ww5lMZpTH>>6K7b}Z(OhdWogdU&_ z+Mt%^Dh5)gItH&wm#W6D$`*AmNP*Vj_)~d`UNi@%hSerK-7qIHvRTN9dQw2Zo8qVoBTc35hD0FW?t>?Y6Uat*1!}f;a!5Epk;=aY`UM>fuQ@!*lzy+0bv@bgUuC{;^b^^&b?>v(ElhQk{z@pZy>}28wEH0A zKdTp{=aNX@P51Kle?%;blOneoiC|H@K4=)OAC*+H0dHl^a0wvGP$%VE@tcId({)yl z-O;&~lMzNj7niLZe&)kJIbYGC)99!^JM<~LO3hjnssSx||HKz76iUmc)y9|JIe?Y7 z-{2A@c|qo^?j|=IpL<2dpDA)6<2IZtJmy4|B%6U=IdEhA;eM3N#P0`cA;*!(q8|3> z;7OJ+E8kjbEy3Xdv$a2Qg5F9YK%x9zqC}HLlxe6yPAHd-r7}W4bycMzsv5eb!i%aN z6F>baRohC9GnKIUqd7cUN5eg zG-RI33+n$S$b7%aGray=kQHOwux$Ttf=n{x|18Mt3aS5Jf(*_6Z$U;mz&copX~#SG zp!lwXs4ACdE*^4~nAn-XH3<9e;O~00>=Bw(%Z7|Zq;5F)o!$wKKpF4)2Nth7*F9}6 z{5(*kAQ*u?WzLwpH_7tPSsCG4%RFOQ9=!%r)6IFhrKi*D5z;iI{`QsTn~@yZM#;NA zKF{}=_`w#tqH;yCShQk^g7>j5fetBZOd*bkgte(Br_>4M3D6d#;1knQYA7&l7qq$l0 z_p>_yZAWH*)(UB$508>i2QkHmRio+ToiXz$N|QyatK+CiD8nk~Laj>TNo;vB2Y;;@ z@lMei$fT1k4S=2$SS~m)VeIFJVkm^+IIZiRtyjQ7nQ65H*W)Rxw_~uR)&v!s{z`10 zJhbjf27LWl_`Tdme8fgrR|U-l3_E3XuG-YP*MO8BkEb<=`c=eQhy@$JMys$}z53;V;s0z%nG-ht}lzm1y=&R@oD z_oEz`ut|MtwsQjEDir}W(6TthVpUedGkVWh;I@MOp`dNq0U15fkf#>>dKTfUx_ov1 zg1lfeUt4$(fZV3Sjx!=`yjpf$N!mc2s@NJhwURWW6nAPtT_6K9M7mTN zoi=OHuDZGkA1BSU4F*P3RM08%8>Q9baVgzIE)YP&?`bfnLfb(m=s{KnYCmt3pD;`jM#N7pM`P|m5^s?c~W zg|X-(4C+hZCCV7jEuyt1cW21X!5P;nPWrSpF@W`XZ6 zs>xBaE=I?-8~~g`et8z7!%ivCHa=kgJ@9wzZt5yqV~r0`22) z9AbmvS~ehM?Z@9E?DOG#?|?9&blRE%E#MdYU#S{LfJ^;rmG|ExfXV*^Q~UsTodDc$ z(IcxsZJa|%uFPvyU;(fbCb-v`9-3J?BAba42QG_HUM9)VEXA_lb zeWUIZ#+5640Z?JIef1shI>;8SM&K0<=W^K!RgPki*l!7RN+}8$(;k2FqwBfF4Vu@A za*J9hhVMmJUrwlMzTR;5g<{mMnxWopgk$s}3CMB5SP6L*fh z0`y6W`c0cd6d?#93d9RTE)$szCrsb+9(6&vkz2y}~%&C&7ypi}CU$zP+5*$Y9pHN0*?NZ#OvTYX6)?i?25W z*VWVU;p{zb_FWBa8Za38y2m`{%T}T7ae?CGR@Lc@P3{+ zgBgc9lAOe#G(r?=7|w(if}#x2`j&@phI(s%7$+pL1+doO7F*mNof@b5+@!cU)uj3ASp}@r5=-~SznY>>Nx&QGmxYcD$1AXp{}%tdM}P3&{%r>i;NKQcMD&aMwYLA8e9^PJjgw6YCm1>y5 zbL#{t1xh>i>^!8Z#`Mc%uV8AALTgI#R;uvHJ#6Z&u0=^54$58p{ew>+ zU}!VF=#I>rUbHdn5U!Ny7za@RlXc`0jimfXOsxheu08%ldfR4$ zMmP^-CGn2eF-l}`Et~Z!gZ=pu?mL?_4`_gK-OJzv;U;W0xjpiNd@Gm-I=M9J5Zy; za$Y(%;qTfwjZdR?WXM5}O=!YioTK)&({_Hes+aMT7rn8V{n_AG-|f@5f9nnN9`fIt z@9+%tg48N{-7m$krtT-@O>O1^Z;$JL8<{cXA!%0r_;cfATx+1QMax;`+DTe?55reV zKk@5$TmXTJ-msiq@{_ys6RYh`oNNa^ZCv+6t2FhdOdQ_jHupGiksUjGUWWIuEmm;Z zazf(=bvX|2MH_Zd(1LWfFl7oooIu4nE8v~~EIv4Ld=ZIBPcPef#Ge85!sdAU7VelS zi!q;h`wl&!WwGg8-|8zdE{?_NoMCx*GBi4qRu#Ecp@%Kka*sCIfJrk2J+*K{A9CsH zwsbKWGUw?6*@OM0t+OE+Iz^Xn&Ff@d6_G_U*%5aMV+jsE{HU))xPlGUlp~|nZtY2v zp_)knt4!ra1htQUBi{rH{{l4l=UcyT>&Njo=-4}rh(@X-@4!l&G4`LBJU+29j+Ke7 zL3;lO_=Z6I7kpzIb}@$va%xR}z?&{c)sUj}08#sc0%1539#%S=_`UI5SQa|PMsEMR zQYGK=`e(h}ZhQW;7im~=O_Q`t5lH~|*7J7GGk5Gh8P=Ny^1f8uIk{7ZAjWM6zKaZB zO9d=!^+x&#UNm-_LXJXc^lyeX(7Tn1hK7-&Ez=Og< z>)6Q?`6NgPs<>X5_V?NG#4s?@HS5!;|lO`vM)%vuWH?Mmw13D(JT| zHRNKGucF92X zU`t)lf1sh5rH_(LS~BE|KOkg;& z51sXL3dS-iA=NLIPxFQ(#mK0iXQ{)M<=j{!Sa53Bw3qzx`A+ZNiI{?@r-6p}0J-#2f2Xprc6;m( z1F`{cc)*j5P5+hN2Z$dT^<3iPY{S9Z|7&;>kbUCuiB-D)&s@MQ{)ys!0nPwrd!QMU zcXaUfGMQt#%Z@OHe`uGkyJ2{A{|ACUbqap*d{ z{CS~G;C6cR(n9Yz^z8iE$u1ztc?bqy#U3D^373D%9+cbK)e7MXc^+#wgO43*Q}0CC zYX-1bkpvpHqA|2jq{dl_74IInOw_$BN2|QRTUcSN+sWuacV4Sf!OBTo*9jZ&men&` z&!9EX!S3)6M*4r_D&K~KmF5yv1nyVl(c-YdH+uYK^+%vf9)|+Mqyvs?=9jFAiDeQx z%5Q!wW<#Uyr&mdC7x|XNZ?@Db2uUiMxZ~G00-@Qb1?kdzoC{e-F6b%eiAz-7}W4LK(s3 zoT?(Fd?c1@1B{$k5Mfh)g|!OTVXYikx{8v_ii!{keSR(hu%+SGgb+sxbMCJf?z@>O zuW?^z)T%NuO^YSFO700j@3H;g6GQ_ILPp11dhZvE*0uFokW{A)mCy_IzNj!crmj_S z;I7h3eF)#n*n62O3?Ei5^2;pok9IFPSHBc<%#4;AD*bkCKK-(lL|hqdnrT{NSH7Lp zx@#!2FFl#F+i~uQY=?w3tc(_Re+#JsO%XHd_dK{C^pab_{t8>T~S z=ns90sjl)+lyP_U%F{bZ^~jqnlTzPkLCesOG`$nsFx)Hi=g2oxi(pJ&#oV&ixYq53 zD%lGvd2+AUL%uROtF;F&|9Je};d1jF*~R3#BH(p%fA-C7~VZf^lE{Gxy5q0hZ~*eO=W>!gN6jM6|)z$`3mXSi$Er|I?^N*QG7tG z9IA$)!CC!Fnw01yq_Da?AG0COoV21Q`86O{keuR0;K}p-gNwwU_j3h9iefX8MDNVh z6AUfU%>uFrRn+%A5_>Z0+-{5kc)gn>xGJ~4gJ@RgXFieHKiNK}CtJo+&+Sk&P-kD@ zu~6Ww#eKmthT&_*RN5_)yW{NpNVU<;BBHPh#g{vr2#J(7z6`%Kn^71v3#9o;n^d(m zTU1e)iK0}WceYA;OhekB>qRzuJ%F3>DNvtn6pe%VF)M37vly|fobw!y@L?IomuM53 z=fiPET$zJzV0Pib)bjtW;y}OwDo%kRK(Oa;6=&o8w~8Bu(sAsr1dbv8Tg91RWjD55 z0vA^;&W6VFBk;I_0#qC#K*hBW{C5@S!1wf*imNa9N5#=`P$ngk|D)mZs(&Id)R?D@=hKbFF5ubtU|AikW;M5nITcAw8lUSYN;b z=>;GlM%#n(Rj23g3~{!F=ApDxQ_A@lJB)5>92F`xX)l&fq9#=SmZhOSp|gS3^Tl?U6u2cI$Th1GgA4` zdtgvn?7*NUm%^>DS{%n<4y?|6|!^YqRK>PSS60Wy{nN&6L*pt|7FbqMCNDj=V!oE0WC%lHPLPEZ&8hxdd> zaRPknHcDlorAa1I7e|Z%lGZ~fLdvJ-^KN^ih)^s<4{sUY<5U|9QW&ZRYR^8wY3zubyp>AlSmgJ#=qx>Ty7k6&?Ir#^a^j_O7VS{wj^-KxEDBBoO$RzIJ z59~8|6Ak{0W!>RpP`*j{Hw&{XU~AstxayN2Rs1A#7;Tx7FpyJvg%%xl8?CJ1v9;*4js!#tYHkhJ z?sT4_Sp z_>XNS8!SgTmbV`!!apT+%w^rWE|xe2$mC2v#V*k`sOAiw!w);VQeTR=>~}qle$FI* zrPDj_k=4syp-9C+jc>&yHJdLdO~M1o9jAPB)0W`w-PaWN3?_{j4-D{QBul z#rMdpE^tThEDtipY2zU_UTtjS_J9y52ufiik2F~Ba@`HK9ko8iQ_b&{LNrdS{8=yKm5FfUpi^ZnL`%iJsG@!A*|7271S z++;AqM$j`U=Owu|w`SGhjiC7bp=0ps?$<{6K}V(I+}X@iUVl4C+h*ZoU%e|06R(EN=9h&tu7-{dOmi3K@m|ZuSd3g?sqP!IB-g>K}U>;;sqhYPcV>D1P(bTs}VMtvXgQtSck% zZt=AH#N?B1S}XVSSE5aSDQ*np{%E^+1&z`C!HJtbXzw@_sbeQv9iqEFv;1@EjodlQ zoX_N!nUmQ*pZBSG>CXr*ia_2+xnGhfA@{LuJ3;*fBR-n8RvU3OaU9p2P&sY&-`l7l z6dT{DCc)nj-r9s2*ua!#qFn6+n3BoU&e{?B-<0$zpB>?f@4&r^mZj_c9{4ylx>`74 z)$<4w_Rp*$fBOcrMi!fWGeaHUtATqG4D%`vvCr!3>=xxPn2RBUTlcw+^@-M_6Fpc5 z@u_P{@>jjxYTs}xh+X(7ZY7KoBTYsCBH5+VeIrQwK1t`yP&AhKQPWh0Pk`rE`O4&P zzqxmG3`;Ky)no%XP}Fy<&_{xM3#=rRkUk4N&C8L4D(Xj!qfJ5;?4cjg4mzI6CsKIP zp^}vAu4mbw7Lvwke&vbk_UD1#nO@+82c+Th7PiR5fM|h{Jl+1Shbb}OGgjXj199lQ zm#eUcUv-r&+C+=_UtK2c`-rfZr@QSZn_qgR{)}#t+%GV?L(fS4#%U=B>X3efXA4Ka z>QJ<6sMM1Nh1nr^O;gC(l9uOwuxo4}`rxRDfi2(cdoJYruCTxsB%5fP#G_?OaDP+r zq5U=)ef9X-0eT8rF+X;L&cH{6G^}>$VE)CDYv~#Re-lT8yAbnkB_;lMj5h$Z?ZnKOyM>D5Fk`H#I6<8SLW5jy?7QyoP3tv!D7${nBm_)Z?QdchZ zoX70(PA7dK=Y=ZDd(jPlX_QvtqnuECKfR4qz!~z5t>Jg{FqlpJDrD;VR*F_H`fL-* z%h{9sq@Iye5hcbhEfW#=SjtB%qXAn{iRh@(H~iVy1I7Z$mnz z{}!Tw^uv6P_Nzxc5z6Ko=3Q$xFu*^Wp%_;3W~RE)K^vs>yHKir0jyA*o0+Yh%MMJ* z`#xPsmUjim{?AIsh}a$KMUVHB?4>Wi)7m)PnK}ricmveby@I|zUyHzvgw&WO?;;SmMQ5XsWy&bC~E4^j!l8AE_vH!2F zw}=wnKr_Y#o<1o(w05ybxw(%J2NEvVFG=apG zO2~VaAvHT(-Uy7#93bAIRRWfK;{I&Kr5fv%(O-ckW9FE{em{!>4o*Vt_ zTMo3Pz>QXeVIG8ekkMu=1_pIq!h+g!sC5E^fIGsrJ+>P=q%Vqdo`?!O^D9FMUzJH? ziPA>v8k_awM~OOURuwMXN2@?#EdBF1X2ff!6wrcQEc|P6Rls4}D#FHIHfo!%Yebdz z#IGquurE2PDYnOYBb3uVjhL(be9NWE=q;w{wBQ;QH=RxK~A-)eai zU*6_6oG=na99S{uEio3NKFMhBedHLcNanplgTNF^WMQ6H7D#!-VjZA)0U8Zn3k0-P zpf-^@bB!fdH`bAQYXT>O)siTdYjr!urD=72yZp;IbB=aoPy7!q@_Hm zVSn||Bsr?dhUTHxjd*Xp;}=tPd{z&8xCvTMqcWa&W`L(VvFQT3NlSFlwQaJ_|JJa* z<~S=!{aL1$Z}w8v*#ezX^rrs9bkFdcq5%RopE;X68%Gm8PL_XepZ!hVR@+H5XLJ!J zah2JHKT&`8_LU3iG(suzLWxbVfVRoo^xRc>rGzZ?--u(+x zSIt&4ys3?S<8W*T>_tWYkhf5*#7vsHTKbm2(`ew%4Hy38RxH`K-<|*T>#H}XC$D~e zeRBHk#pU_Cch^5%-<-dG_wE$2r5xPAwW!~{b2q`fdv}wSvV8aM$~&jFagJKUB7+>j zI@OT(2RaLGJIr;?O`9W4z>olZh3!b=6w$vC@{Y_z?8~7QrI*mHvy@FleJ`*~ddrM9 zLPzolB*I}nf+!`$dxJ-Pg1z_dq_{^s7i^l`_9+Co1}x1dQFgT>pvsmyKMJj|I>CnZ zP(t5eokIdKKt;~3F3#A?F{+OjXNX+AX{)x-^==NUc%UA$q28)JMt#h*=NvVYTrc>x zp0+*pc-TDt9}O>1o4L|?xWa_3-uu%3@!!W^hSB_e{H48h;Y9v@Z0@r0mkvN;3t9L2 zru6^y8c=6{;5$9zdcJ?vQv*9%24W_x=8-svLf7SHoSOvOab9e;{%by7@qmB~r5WOH7$ zy#(Xk0Z&N0%!O9l1BF4ALc~L;@D^M(C63W*220&+FfO+X_0M1UB_-kUY>9hPBA&G_ z1nx5Rc5ke9-ZwF&hXe0)fM~F|JUEQF(ay*A4iiE_dLgXxGqowhbjX50@39%d8ztRA(8)l0+k z_tMnnfBROTi-}{wy>xMC{y@R#TBKL_5r+9xo8kwav@>t~Y$H@pZpXE6Tne97W-j~l z&tka6HsuV7<2lB4gt?zvos-<@6xI-5@kAuRF3CGy2<0%`i#+31|7Ec9$05NP*FwU< z8CkLASY~^Y3?){?S;?zfW=+8>X8FoYS6e{|S&~mLT#sIT6Q8cISbcjHzqMC8!pB;S zP*>Nvunsujxo18&l=&+S!EeGj8JpU2EJ&sr#!T>A)H)eM| z-Ih~01u~bZuAtZPL9T(OxRY6ZIA;HkRf{2_;dN)c?!9CKGDC|V`hpz**;so%^zm34 zWcTxAfswLcHe|qb*gvY0iM&6kCOY8n23{?V;|v`)J-MT~XZ_(I{x<}FSS4m~r}36P z(T#p0sIFRIqh6zPea|@NOm2530eY)$W^?Qs1SEZ* zem_uWteY|O+DosCCbS;{`rx9v=Sz2g`9$WzL`4aH0^9cK#4`2=XKuyR$>rI$mQabR z`U9T|Dj}|MShKAsEa=m)8hoLhQyCGn{j8osvxb_N{%%GaCj2UX)59?YU|K(e-aBb$ z=<+vPvjoKh*5ibpMs~|GY}ZH8Q9_CY240%QL{#AbqdhLGER_e^wkm-R7_>1TYlmb8KNP2_#v&-kpY7V2Z}Sq1>SMAvQ%`o7BnbA&7~M`oWkudp*nh+7CAFBzj4ebp6Rf29!2FZI z$?@6Y6w*7P`iI`(l|j<`t)S5zg>5GNc|xyOmN-ig@1S#$RzJ0e&g!7Z`?aov;2=@` zSa85O{C|UE`TwIyLoO=-1$V*k=zSkbi9SUlX-Bf=OX7+NtdO&#T-BgxEarZ$4a)rB z&e*#Z%e|vD?zMNJ_GmPHtf#{fg4P1*w0rPxd(@&}_6X%Ixq~t3Pj_jdiBG%r--%_K zkL-2lRo^tVc6LFl4)vcYsO%{qjxcvttG*MyODfuUmf?o9C0=CMsHlI*Z%~QEZSrPS zq4jN3`Xd3U6#$2&GQA)gTCN+bJ(=#zj$Eh@uWUFKeE`V#bZp0!1wjl}J!Qg5LT}3U zI|yk@7_yF1WZz{MG;`C(fmU9Bi!1)#<}?L znZ4(AcY*tk4N)+sR=AVIQ|B(*Ij3Ca_t&@LKIshEOMv0=G6=`*`33J5(*tWjs5kN&BZ zU@o!gi236e8VmQ*e2LD5w)IuWbL%ou?@#S#J)a$acKq@SYY}0zk{gGsxV~F2$Ls^M zGkDoc760xt_rIUB59|YDSL}+#|7-t;ePAQI32rI+_siHd=-KNIA@i6HFn9?D;C&dUB{1!ciCt2O_!cOks^U=#grd5~Rozzwq z`4u>LxixhdpLogal6e*;h5lL*ju~X0 z0DqxCC4t<+b448p?I z+DcMD0X_U`C)eF_t(Gs2*$G}a1F>=f2p3C|vMGBX+HkOY(8WUlaG?>&S9#UY1&8|i zAX+uy*k4RH6zi@IQ7QU!qE3W@zTd=g$_`DL!T%+h4c* z(5}KE;R5JQOb*Ie+uV?GQ1Fbb8(?Jpl$E%5DfAC7Y6R2Zm5qMF6Or-82q?{N0AR-+ z1aAa?e(*UPu@{H-wkW)|6zSbj{j4hEDpu;bHRkNjnWNB#*C}1Sblo9^BY)!xT)4Hb zxbK^;a<6z8lD*aL?S;D1c{ki2O3G)DUj(JCu7heX;RE-FQIDd-UevMY(Os0z#mN*} zS}iGEK2~*@%eD6-U1qND**ytF*mu9jiuZU>$M%PChCwa|5l?i11<~u+ih*PDCWg!# zv2V4~)fZr$^xrm}3)8Ab4-XebLsm5XKxCm5DpFv~n2p#4IGVnA_$&R=tcu-LP-Bw^ zxrKw<`0-xC*n{VRGL6vXrQ?F9*m(AB*bdipa2(y|7;J)y(-7S@OWGdU3p;NU`dV+e z-@Q~jkP>~Dm+XSGTXO^XO1s|1`0YpCMZ^om+^N-jx9MK>i@z=R4v%C&;efAF66!TL zi>=VJuZY|cnriP;UiI_#(wqZ4N}IZP)VV0DH_{FDDemBS?LJXtY0rK0_X)@BFBC!d z*>d6jP#4M{((e+h8gAP6y!-Q3fTjZ5j?setg}j7q21kgiYQ%t(Q`DphsY4QAh%(-P zJtMor+BPy56{=Db(W$4UBn{&8V@nC^Y@sX&KlFFR3)-7B*{!JeT!n7cFC}Zu%BE%$ zUT~G!o4J~gS8MzjQXaD(`wu)~8iv|X99op0FO{k7*APF4z5pkM(MOg)`VXwTso_)Z zzaaqp|Fie6%Z=mKq5!;q=P6L0Q|0b#OP1{Jp6UMfNy@e?w>`FO>uNj6NgxuE&>{&A zK}xOO*;VI3zVGGElYE66FA^mJwA}4Ugj8kP6tM^_01NBBblC)iLK!Zfvc}4Nlx3Z? zG#$$~L=~Xwn2WwkTXrv-8A65gYS^Rss<53ab9+cVy)0fBV-=iuHc!fv`mhek+KVA% zN5~ley#w)eu6<8^T}KVJG`h<$PuI9Dy0W5iH8W?e2>44^HTP!Kpan9hlUGt7sX|EJ z{(ho&<>WvxzKJG8M{k|cB!D+cPyr!w96=Bhg^owGIJ;QmgF|+aW_8qgfQ^8va9eI> zTEyAJ55O=A!5GgN2Ow11#bU!6mABYq+^hg5$nimd?8wrKFA?m|Nm?JpW6ojT9!Hq0<1kelx3*Zw1s3T;~fe3ajeIU+rJZAPm_}1|bMr zuPY*2nE0fXBWH-1m@ABMN&a)aRA3hIEaZpukcK3HV{|A7w0_f?#X$8%+1reNy+|)B z3*xHOL&e$CrCScPcyrU^)c>q9h6|RnRh<>;c9FR%CWG4VMOMBIFop8dc?vx3`0Sf^&+*^oMNv>}OO& z3r%8PMzpI{Z)LUgv?^pJ@<=&Igw%@iFht+!UzK!bE3zOFm_wmY;pevsy4e2&&XY2v zS}^m5#4i50fPvJhuvM0x#JW!OGH@823(ksu0(l}(tC?+0kc*jt&ZSJIVaS+sz1 zcU+6Oen4DIRSrOT@QTg>F!j3UIu5?Ujn6~eRUL`c13kw>P<$9JM}P?LM*R?&xE3{y z0kQ2bzvS_ppz&tbg2)65+5ON)vqNgb`T-xV*r|)`{Iy_03ij%IRnWmMc3|KvWE8si zOoB@$E2)p_ohu6VYJ1>~$eF~M0|%+x&T%;j?o|A?kjVsw7D8ZTB?O#5h4!uIXhk4q zH=ydNG6MvWOzk-$fu`)79zdMH5_^*UxM5p|{*Vg|7^Z|)2kEk5jz`s#`{{Z3w+MmD zhO(XeD4>{zIwm#_Im2{d&Z&SmCocR(JaB&6k;8l|kg9u6{1C)%xq^zqvX)e*5%vPV zMFCli@2xF(b&Ssx0EhnF_`d4tcyj|0%@~ZjpDh_%%4bA$AD{ zF4b9GS-e=mnRpIdO{f60h=&e98$lZ|$|3(b2ynP5KWEa6u4s0o^b)-?LN|YhRX{WUqax=E(j@M#=Pwi{r?#zVP%)3LS~e(OhEg zV-`tkdP&XAWg#I~LePR4OA#pvq53^#gKe+T6nk1xzgeonYi`DAD^oU9o(I_e1l-68 zv9DFb6^K2^HZFH9R=W|%OzHqMkg(?1pJYI*8Pt5BH_(G)29n(r_S@l{T>%==8?3bz zFkT-j%eW>#N~TnoOlKI^E%TWAypFngv|jABFSp7QH8n~wuku8!S1wP)e~@YAUn^Vm z{0(jYJ8o#6a5+E)1v!$IL0!^S@g8wW4)K$|@-7a?7dx&a>9ZPWEQT)x->gkOUD`VC!pEMkds1m za&jX=Bs3sBpsxTZp9GM30Ja5w3IA%#g=gKuEY+7-tkYj#!&8Kf%$R=qRb7f!?S^vHA(trSEUm_*WGDCeIHI3`!hug zz!O}JNWe?w9i%M^hbXi-k`5z^f~pvTo(%r|7eSW^;FD;hQQ0MEqfy=ph{u{rc$K+A za>y_WC&F=ARIU&#RlFpoh9H^y?7OakX(C45O6Fi?71EkLiOJB|bP6=hr)0*2Av8an zlVFOyab=FfNkuS6^pKbEIsA$LNBgtFka}X<(pxK{XcRfZ4~kX+^l={rR4ZapwJG-O z0}x^R&pJy5%HGb}3EIl%sA7%L8uP=+D{f*c3y{m}Jy7&6fHu)vA`XYGXoeC(+r{3i zrE2=}f?^xDCIev4E?%uA(**C66$0clX%JR^JB3(+O4q=1ekczg;oqa&2($>HyP&^0 z6)}p6Zzt>a`kirJr*eF=`-~RYM2)^R6}c8;QhG0dAHbpiK6F{%3GHTl`15(dJ~`K?G6Pf%E;6XWjZaS6{jjgUn=Pw(F4KIgYS@;V{3rdrn79p9$=*&W|j(6-=| zqqe+=R0O2e70RH_m~X3Yb{3Zbly z7U#RH)oL}7!|msve+HVlwjr>Qh22$P9Mb!Gy$T*rZmxLH!(?sUjg@IN>e~JO>`n{-s!8 z9M}2QTP_~(@8aUAH$KF1qzrcx%#@jr)ps^H zQzTJy*NON#KOkSkHskU8DNkq~AJ11=FFGDbjx3#Bf$asxP|8v-shWeC3aonUcU`(?D)p1f;)zgI02ogt1{Eu09*+I7kr9RlHh~guU7X3 zc_RU!Aq+yj{N${$zAssz=mz>!6xCot4=eQoS7ZRwoPQF{l#3G0 zjF%Ek*Jnbs3|&x;69P@*Vv_fY$&QN`jMsbiQ-rY!ZshgFkGaWt8&cv#p%_jACVdOC zUko6sx;Fd*i~%OMr{Hx=Yjf#dr=l5?{g*4_q>a57Ea9Z9ax_yn{s=Xqz6w#O2KBTL zn(9NNT@|ZBO!2Nd#=)ZV36g$N$WUA&0bmrBiv@}?7OBN_WDFCFz;`LXWKnFUg`*g} zIg1lFC`Z{#FGRrzTIg*`J6DJg?fRfu1e%5LzhUWD|W2QQ&E)XwEv9 zzz*;X1r)qFl|zA0+c&Q+Hg*I5m$}mh=yz9 z5gXk_LkH7Ir?jy$4~WPI7^|>MP`cJ;Ns&h}=L*@)$~aoxyZ}rnhP(p$(!msVPuF)) zh}2J75L?NdWm+A^;j^bb&(A!!prey~6ez`RT&7T6aYA@dDR;z<#cVU1Sb#B&xwp7< zYc8TS%QePTAc&^`9RTP!3TV9Y`W1G?;nTs?&X}zG*_|=DpgljzOKCR*y@Pgz$7~8C zW)$etD0NY*OaJ-dkY#dRoP@Hx-YYI+yF60PYa%L1dPOcs@!Eq7DUn*A07*i$dRgcZ zamB20K23Dor@$sw!~}jA=bwrF;0!F3TP_D{5PYh`#%h1rCUb8N1N-EzFgHP#)lT}Q zT?W)+z@Eb)i8S)t%Jj1-4}(|jL6D;=XZtgvC}sWEBQwh$0x4I`vI_Z~W5Uic0qh(T zHn#8Km~bf^6BsAr$egAb+Gyb6Hqs09Dr=W*B$Ql;NlU2$G&#$Z9LOa(PHd8$l9C;D zq6B!kF;PnBATC4h=>?pt z#tR-W>BNT?;uIxjaSTjV<_P8Ajs+Q$Ud#D$1q3DUQEP%+Xs~lsYqHh2lh!Q8u7^mZ zZ$yDh0U5;+KPKjGAk-Lpv$|$jL)^*SxDV7ey)&}rfn|i=3FDnSkZg;_Rp zukD(VVmj2lmT}WCz#$hm(pEC%t1(1MSTy$9QZ60JOM?Vi2gUtrbzitBn%osi_>96) zLyO97bh z51bcOkSK7li+S2GQ4AK*kb*bjVb$^@GjA;3%SA2;76&mn1||bvzENBoC2732TNDJy z3!TMx!zAYT6Pf=<3Bf)#N3V{k2Z=Edeei%KZ89*-VDrOu%VDeUMtDC+IWU3 zG1_*FvM+884gnB_PD&8rY+vKaEiGLqwmq;TN21V=LV2SYE}lHKs`NyB1`pDazlJdP z>P3|yv(1NLhyw2u_&;y{`k()-y#4c=H-D*BKK|`L-~6@8|MADSe}4N<^~Zm{ef#Fk zUw*y0=-!?G4Zr>8U%bejiogE(<}c{{Z<;{fzWww6G8$%v(MS#SwM#~({*FK1i%}aecOz(E!;~7TS2kcXM6OQ)7%YG- z)zBIRM^|#{rIPAByE*_Lr;UScX4P{wU&%$#i_J>hnT^N%GwxE$V6Mw&m~$7#JjGJN2{jGn$ruu@k&x*!N4!L*o|;6tekQf|xN8HZ z;9SuU<>b)SRIako2_BxCHykP);;_Z5F>>7o-%3VXw99J%eZ_9%f{3ya6E6!V8Sq>y z2px#v6rSi2dmM09Tf~0p#F#dVW#m~?lnR1IO!QQvm4Xr(aThGDLUl<~Ro^niLzXMg zQU;U4S@B{;o^+;Oq3Zc3IHD-1j3aE9JG-x%iF_vOsDHaFH*BNpeJ}Ce&fM?ma#9*f zy_BanR8GY)O^}{6e5(n#`^69$UtldPk&-gRnbLS-SYnG&fJ0CLxOkT;U8QnQ7^0Ez zXcREHGDgM?+sHvW&K2_s@{+Q~6a>g6Gq&sh>VY1WUL|<+3Bb1|=|(UWS`iN+TLc=X zswW4LM-Ra8t@4MbI_fBo$%jr{?UE})1H=}HC+G}_3#bQuIw2v~q(L8AI^_n!09sQ9 zf;$uN;T{0%t&C(!FMlR>T7y*#NHm`CFkS)0av)W!lLx=}&K61<3hadkU2Me_!U8hG z6ccGOR^Ppg>oo~u^_c^4apAc)6d`b~j+E%x5dxY}#s?WkW}Vv1QnBXAB+bdK5<4sj zzLH@kchDMsgL1p(c4zy6c(IOehCG`XINY7wUDC9gNY<+sU*bPF#2crQ9UD*vcK3O_ zF#8PK5p=|jCMR>&xfI~>coJ6Ti2bJ+He+~F5iM%acsaU*2iha3QO!%JxrKR*7bk}c zo?Km==&X;RX7NioguETar+*Sxnr2+RmQ{*vAy;eA;P~ zkAknuPyge;7}6MoKUMxKRdVuA|6sRnz+T8a)s=kXfGvLMvA_OtN9>M|tg1jW{fE%H z0OW;%R`d-3cZ63g!nQcZ9FGC|qRf!8@V}(w77UT6?YpT`uy`aCpWw$Ha(uoSr3>|k zL{C}E=_@V#?ENiuK`32xY{WHt#Qo$97ko;gijo8H8j! z425YX@NxubWHDyK4^YL#VOK)p7fkvBNpO1*AF2t|6Zt{{BH!i%gcHNk|LFX`bAm?{>ieBQL}ON+%bS3m19fV2LF(*aKpz z`Cb^KkS0+H;@)ROUviFSBjpUOT7D`tY2}1P)x;*EMBeX=yU`s|87~58F$#M_Y%|w` ztm-%gBq_TkBAKbNAAtbI-Kl6M7n-;|CUAxf>;1QH{~*jiFfk5f4Y6dvZDitoD4qHZ9Mj6W zrtyFb?p|xwYl*6y++A`YN>(59KXk>$bdz4YVwH!89nmDcs$ohy(b8kfNpfdq+Do@z zd0|s&Jy)q&NPu|A1IK{bc4w{0iN-?mtKkF(cEyK5xDdL&gLpQ^kkff33_F*0fzz!i zoo<u!Jh2hPsIG#+1bJyD zByDUp+T2#W?dQmx!AO4fPsqjl($s*kzI& z^g>|cQJi^8`Ue<6Ozp-M%ra4YFwrdmn*&kk$Q_5wDIc~{AqqCsjM|MP(Vz#}K`Qu+ zely%!rn({l_JAF$Ib!k~-5PPGRfWMcR`A#p`HL`>`eQRHEdo5>*a7iqorE%{9I8{%0Y+<^09$7k zyBvWwvd9bt;=()s>O+soFinV^$dCOr9*%DtCH;$Ld zCkr%l%5E@c#{21ea4{l6#gxjH&o7#RVjkQLo*Cc`o)_c|UV9)*wrw#Y8m!RJYZ2Qd z9u6h-lVMxtTOkf-vxw_QAxcqINz=@ELc?IyOlsgm7kY4vD)BHXN%YpCS@?G8>k`D- zFLviszwORvl7E0_X33mT<1wmu$qgse7-lBpeLPM~0da8{8h9Y58%*LW4*(7`mGK3w zG8g?uahVkK)pxLk!&G8%`#?yWbF5jZGu=YM!(v=t)SKcory>I~r8@WDj^35(CK76x z<(0`C6a_%$XN5!LfZrk%ECA815TjZgKE;dnQ*6rsAZe&ES<$lm9Jkb*e`P`q&)D}Y z`FR;wlET(_Z<3KjZH(@;h@l^Fo^BZ-g-Jgrt%fMHLg>!jeks79&-jph z@mxD9u!1jwbOcqaP!cYt;L-ymP^%CZLZ{CfuCiOC%)?t7uiPjk$n2AYQhd8;=?TX} z7sDp0PJpxoR;H!RfisH%nJ5+J7^4jvw&<0Y1b5 zt%4Iku{U;5`Zsf_*ORKeWSDG(ObGrh!ZYZUVQPiEtEwxL(TZ$g&e6^%gbLm>_NUvM zqQ&09^QbWcbLs6RwM#NI)TkO?x^WkqJq~M6Bpg^4U(5~kWyGEDDVuN0;wOzIXAY#) zG^y@VHnk;4Y3s15n-k9&mV%e$Rg)p$mRX1;FjwJhup;qXJZ8~wr3jq(o^JIl)pF{_ z@m%#PUsRlm(R5J~N8|j}U>v@oVwH?QGb#CsDc9Ozp7RNL+%pDymJ`{AE&i+f3NB3SV7~7Y)Xs{pzSN zhCEx?*~+GuYvN&mz}WjEXrZ+^1kdXb4sU~2ik+j_EDC(LaOCLY*xruEbU;> zGA|&wpY&a`W3(ncCxK(nu`T#r3f?e)Z*^vBpj0VURa#FSFrQ<)1oC*dEYc*K$Poe< zM)XLYjl7T%wt#{+9O_$ejzwlQ{taH>#vNi$zq~XPB$CBt_aQs`N>xWuC~_?Ev_QJ0 zt0;COCxjj%5p@gD2u-qZ;&3m2;4sP7;!4AI4ly zoC^(o)nEWc9tPiu#<(!6kWq1Co`ur*$RznQ!=)5~@)u3g9Z{4d8JEcxw|(`N^_H;TS5=TRw`?kcX+j*$&`R_*3?RD> zTt?JmxFY~PJ(6rBmTsF#Gp#Q4ufn8JWCbYH4AEcGEvl|rOr{@e&3Yx*qky1du~Ws9 zDe@@RuJgB4l-Y-r#^N-;c;u<421O!eOuh)A#UtR6rO}$l5K3!m?xd;6rOciGiKkxD zGaW$3k?#v9^6}>e225dC3rp4Uh5)aM$ENKemLn&1$9=KQ{UauLHxgAp63ETYgLxq54 z@-;x&R!-t!BhM>dd?WT6hLECASFN7qv6H@xN~X`a{7FyN3rT=@t_hXe6;%EtS#~cC zP1~tjt)?nxg<@w`@g18jy``Ba+33{Ck@k9*jk4%ueHByB|D8ptZUG`pMTs2zTZB?# zKd)vGBS?Rl46vYmddC(@OeYOYr)DMNR=Q`8^u^gZU{B4Z;e5US((x_?s|*8qivQt)ps(M8=*`<27Xk1PQ9NK7hNNrd@ z;KNnH)|vV1i7*uG)%U8PgI(;vz*!umL(UUijz|!HR8KUdV6V0Z-jINg(1IRtkjgM6 zsoz3Kc^Z|9KzT=&(j*$ZxEaj1OR;(TqF;)g$W&Zum?fmZ9=n;VpeL_H$(o4G#PAfq z@f}KcmRckuQnLlER*vo|)+^~T*lTo8X*;G+f4z33>*>JsrBSi7x5m%nu#NmeWyTU0 zD>^ONb8yHW5Q;+*EPzIV94LsV6*-WJw!)fI1&#B&_W9XK_q_25T*xosv;b603%lu( zQ>hSDS>Gid>w&yKR!VzN{mjD7&$hJxUMKl zG*J~`^fqCf`8B43+nuBS?UEpTYd4H2CN(M~GfQ`j>b9gIi63)fS#10C5;0l3%6=hK z#X`smb5xbgknF-?Jov-*`AOsEyz1K9B*)0JeS$r`3?*5##$DB(RSygc+u10D*rBQQ z2#HS|GG640_y&mjNmR_JzzSQT?TgXjq>Ka|P87nD8OIV}s2Mc(ni2CtOn;0mBOL=* zAn^mPYVsvT<$M&lSVS-BVSSCn@ZA?;+k!xRl#4|MSm?s0P0kr5z0){E**&6qWr?{T zph{dMXrz-#nFJ~3EKS>$YrE2ii?=j{%_U8D!av9M2$AL2aTfY@I;A2RjzzJaKw4n^ z0MD?4#=PJ$_QnQD{*n}fae?Hl;qHe0m1K|6t0>#L?ef~>+}GyWx>+_LjjaYirBdN4 z**9O9ykt9X!2ro|5MF#ez*Y$66QU|L7hlM1_Q}rRq(k_1N+^d65|bT-jHTrerr=@3 ziwz}SHd~dgo^c~7D_h=)Fmn4)_ZtLs;X2rx9>n#lMuhD=k)Z>7dg^w0mI4GFaXW5n zXKnq~3rkszxHX0`_@5P7lMa09s?o*L-rg(4jDb38i+2mA7R6>43-6M-RXlLnIqO^k zX-gU{||WC&{l{gWu1G%)2ka?KgP6$q&~Qc?I^S}XN*vue>K zth3K2cK}8Vi=nKlx@Ar)!9hnv! zVG)#rX0$eJRax*gA_@ zKCUMd*2Ct^IpU58Phocp-}rjVD-H+SJ@M^o&Rg%|PIN!Ji#sX$7~hbBSQ{UVbZ4Fx zY4rlob+oGxw3pvAbxQD-+z~v`YIdYaA*FlQ(>AX2 zM0l=B*c%mM=sVdbQe_-6$`^(-UQ$zw4}Z2>vj#%ID>0Wd%m{4hnh^91<;IqY^@j2n z!@NFI8I;Mcu`l{5ev+M2K?DPK<*~~SQ9blXvYFb&uWyHL)qqox^W4^T<>wU;HlxJ3 zAjCgAs+gX3(tDVV{$EpmKK8NHQMT}l%7<3@GnA8EGv95{ z=T!4gp*%q;fK+iA(uLYE)6F(BzLr}P@ZIj4__`V7>kyQFKzBKEbqFt`KhURP@!s1S zg_@9%c+ZIR%>$5ie!AmtoQaruM@M5A0~0Yvv8kHz;ED$zo-$ffJyujNH26Ej;{Hpe zhI$DT;I>JMZD3xYx;S=f!xk8qmZ>?Es+vs0}TB@0Bjba9b zy;J<@EU{F*gu#!ShM?oH9Y8#jYN;|w*#Qs*I$h{fQH;bUb8ij<8=Tw~*_(_)D#gLk zE#Z(2s!aOwq-xwxhW#f&%9T8=C)e?o=O_pe_g;sik=X5=d&N{yMH#K&;_-x` zUzbR-z3y;dd(6oUt<9smR_J%W_9DOywnUG^bQSirY-gCRpC?=>#6mU4Wskj(@|iDBhq zXu4Nbi<2p+l!;V|1+uD{aXl)aPO_@SYY~r&vGQ@LlH!*uc>)-nKsNgbRX8w&nPQU^ z4id*wb_*F-f)j?{m67p``P?Cx$!{g54pmLyl;i6JTRc380hf@CS6(;~sjZYr_drn? z`Fa6!*~Zd3bSn8pi8Hldt?r9Z zubjjgM(|2i`^=D^8|YI}fs~2SynZtQdTF!Ljn76hRM5x*kb?1y>Xap`V6UrzE%6{v zYne){&nl(r8rG9jEo%tkyjnULcL|7KNuJ4(RZ2nSOpna=SX~iTN`c&hfV12-3OuDC zt_Vp>0#GTS8-=DVKwJ`{Ntd63axGw;9i5W?stnGCWw@sQ#^t9w&E~B{gg*2&+0a z1Jv;ZCn;FJFD=`p(6TX6S1EfN$z=NaLAFWL%9HfWIV{a$Wynp&P8c{?t_&$#6iJwz z5=JE{wqy)h`2}(U_#G7i{Ck>#Zp$ruJGIqq4?4(U*F#AWQYl{*NPIES`*|#QGbW6 zsW!g(aob2$XwTul*aOT+U{z;#Cb7-=TuO2c$y zv$3qCnsCCEu5i_)@&F^FQsG%{s|Oh^=l*`Ry1%b-WJa2i2+NI~=WtZ{1t8BNwlGDo zxd$}l!e6JNq1_&bypFn&lzA#I33AG3VR}nLf=UHnr(vbP}EB0wvDM& zIf?=jXLzB9sPC18oozusJQ@6P{*-~RJ2UgS>2U;ljb7j*tNO(1XI{`r5E9B@XS#a>t;K}9V6 zClCfD#VEBL+o3xNoA#^=4y1J{KZrm)PwnxH>AxbaM|o57Yc~s*_?QU!DQVvlouBPK zF2Vf1tXjVx-*K5RaOXI_a~yw`c_`j3iIAt5wLMN6*A}{QcDKc=X zT+*+tK;r4{6MdTj9%Id1F4*s@e1nmVk!Px(&)`OZNEZU~Y-6of3`SD5kYS?=PC$Sx z>|^AG=K41%pol#$Q(G+@uEEShP4nR*+Kd$O~Uh!4PD6!on$t)4@5W2+#?M z92*3vgt|V3#cpbJY5P_Qh$#fffkPjg5Yl3KM-a?j?2^jTrxTTx# zL}Tm;L6U!gar@2!1SC{(6ml}A1I|vpn;Izp7-xu0cW|)aDVj-oc!EgaQEAj-3W#H? z5+lFVfR6%8P%M7$hS(UZAps7a@r3Z{fn`5s2=nM2n2;!-)pW6?I)5hAv*tcuOn?f3 zgCGq-y#`$DMT~hgf|3$=KfEhJLd->7b0K%Fc4X~GbxL3#E3Wm(sh36OA; z-QtDhJ5XhF>CR9_GiD(TJLn5>+JJwH$Z!#wCEJyKvRQWT<->Ggm%=IW%&@D4U6Q&k z1rSWQ$#Fm;t<-0kx$<60pQ9|9mW3#%N|Hiptu;5P33%E|{oPX1=4FwUE2=d)mA+25 zwu%ymD@fT zA@ZQ7<*kyf7stB+GWS$Pb}%$o zAv+FwAdOcdwW&(dFBsl!V>F^A$_TMeMKn~q$`VBZo>@q--3<1&CpptfK)*6gIW?Rz zxAVI#_N~#IBlG}t7};FJd4;nJ&Q{ple#K?|G}fBOyP|hcw0V_aXqM-CKN#9s`rL*# zq2SaZ))X`lmt6T}Rfxz`p}Nh5=!}YvDt$JR)$yy-U${nFp6kP4XdkxEPZ~GpRoC8T z$)b{_2KG1C8!^xzD1L#VazP?6hg^b|^-4e&`=7wMN237g+hX&E#7JUZ^^&9jwI7Fd!Xd!=cD8Ewr7`z4)yTrpG3Cxq9 z@2j4ItFVaU$UNj^1kR8@i9wgH;r2rKc^$RneL?`BKwrPi%SG?AUfHA0pNNxgDDwxy z{Ib5UVOzdXLDrWlwf`!K?8}$+-_O+bPlsw77vzs)Cz#9~likaakU(u@12RKFfNez8 zwP2*G;RD3Z_uTNN24xeM7F}l+gIft`GH5U0#_|FVEat8&rD(mjg8X^z7^QR@`&_w^ zxh(jTQkMm^UF^Nm>%ySwKjVuF-%^arwzLD(f)2X8HPR5sK3OF}M?Op{ENUu@)>aPu zHQtoKBX+UjaaTFita7N~Dbp@CXhf{WFhp}`&P&OD=^E>*vbu>zMeW*?yGw8(KyJVK zX+T0Del&;+v6h?Ka^<-UfaS8+rjxyk;Q)dDleMq3$SOi;UlU%;$V4E5~%sZLlbX{WxKh`L?Abf z5>0pkeobTi%C^BYKA1eY%@4D}OTnS=y_jh#ep6>t=?mmqsbca}ol8zt;+ZtNGg_#j z_V*)4_)W*lm8(`Uv5|^#Y|{+?oO;&#=@hl;8~}#-RX5~N-c_}JiK^BqnXmTY-MdVk zYc04-wXlopTlPocvIiIr*WIj89s) zS(_CqKhKlqmRrgNRg~RHTMX68>6FdVq-Rsk&*Zc*HT7Gc9e(ouma*H)TNCI`H|ql+wA8G*tj*8I;U}W{t8XZ97L& ziQpWwd`JaZkV<8kFQ_Gv%41{zRFnNNfVf&WVjUA?05m^SQ7$WF0ChvXhivTz1DIMF zhD;O8t<5V`x=zE!>I^AP$N=Ofo+-l*8Nf8>oJ1>^`=?A8q*(}LVRj#tsmB0EYjXOm z=I1dvZ<$O!YqRngK$Q7=ww#N{ECY`***A;F)X%YF5ViSY0hnfaRt&PM=-Wt_bE=dn z##zR&S4si6pY+XDd+N(7>HvwjjHJ+BNEns>PFf&fb{_O~YGO2`kP*z&qu+Lx99`na znkv?vf6I^YZ+VHRlGo=AVeh;l3fmfQ2%4!_p%mtv;Az_%$xzmh73zbSHk{mD0xLi~ zpAK|r73gy8OT4-vy&uDrAdJRp<@tA2Ix3sF6NnLp4gUR^VYqbWWEg?1SF6a z>h#owHzXcULKFzWJ23EP>!46>L%!8R0-z@X&)L6Kpa`FXZQy`AL=!l}Bnqnh3n2k} zvODKd79@%-S`pPnM7$z2XZ>5rk6aaF>m`(viuVfoifOotTXlh{f`>myBA8L1@j892 zlm*%2m+qOB3}zkv({tqlnFmc|B2fXouSqu8$ptSi7sNhX4z?DTjq*NVqQAOvl^>LN zt~LErNRbV0pa;i7S@x!LcY5=d?KrOByKJPqeY7p{=?h#8rnUXl97|{{#kH(JctKRY zKz0(vZs-=g&*3!gmJ{L$M=+HsRFApNl14Cd?df(Ws_y`n%xXKAiO!cRMa-?%w~F+r zn@3VfiiPH{*~T$!_%Y1AO(b{n2?X<;-%`75AWZfi4IvLqm?NQa9g$!T0~>?^9F4FA zLh|PoK*)=7+(avR->iUOm4R8i!SYdA0hSZdaLEo+Nd~|4+#e4~%rZw`6ZUYmp9BDr`q18P0f5Kky?T~puhP7v@ScPR1& z`^2WHB&N@Lo zO7381d4rVIorVi=r=XTxIv9nM`v`4Hnz%9~)(8B?I_Yd5y>S371>bYF641Z73%6A6 zSjufH?O_$(#RV^jeCgUGLcG2s5#N(U2%LAXJ7#Otz3%K5={qgb+8=X&Sa~SepHy*c zDX*oUM8mkCxIzX`ZIEDw3HWW~JJ^Dhi%_7-9#vNvKEbLjzsn!4ye-)}@ZbOQhf1aL zhs3Jz2|ypCuOae8zF(EKqW*^|_UupKETSQC)oL^tzlV7a8yAJph9P7lhn`15uCSD| zVr+jv90vuJG4iU@Xo!Xpc5D=I;Of(}TJ>X9uwoPBxK%niROqSrT*&)->{I)h9F@2Z;XWR4vaRS26hm!y_A?NH7g@-jMo9 zF$sZyjskqj0rOuROv7LEe!a$0d*nM&0G-ugiCuubapb^Y<>x;Dp-lgjXhInqEAhpL zRRPepvG6;&3mCf^oH6NAVZH*sP~yqWpw_6mf<3t{1ny4a@I0}nZ77pTXMpitD20(~ zO12a*&N5QU$~nwJ5_{BvG*tNO;w5<3kcJ?I@|CfP*JgErQEP%+s16bFk#}-;*+1@N z9xqXurKL;a7FnM-J;Cwl*MI2$!qBvmUk}y`qMTC}4_p*-jh4I9uQh}ab z5u|QkQwJhw%w0_;(oTcMP1QW;|? z#u%RmTK%tK01p2IDttI>P~sy=0MnZEqDug!69srf8Rr=rLL!!tTeFBsT)tOC^{V4m07_;0w;@1sutj1rg&{7i%2^gktflZKzSsM|@A#=g)uw@W>QlW*)jgv|_LYxJ}yCOqgR{}E%VmXnGC{K+a^QlZ~ zN)RzSR;CU#IcYu~p1e*Tr+ zx{PP~dy@~`O;$X{Vh)#CD0<-DIr>|wT8>(u;eU9@h>A|?I)4WXRjLtf}C zva0!ruDc_-$IH@Gc=<>-37-%(b{Owb1$Q!dKQ^8#OL$wAlF7{k`|7S;CWxF(kTqpe zh{h2T>@u&ymXQ%wdMb+pLsuoYO45eCxhx(PZPFwQ7MM?v$8Sl&+$Up&F@<8k(umjg z7)4I5UqUSUtPH8a7#CV1Os6G2z%ai+^wAZDh{J?dTMHN;9?wyIZzu)>jxbtCj-FRL@68fCF|Y$ z#I;ed7<`TMmqA{G`r}*$3?{^}1yp_qaFE65FEWL%5~nqT;8ZF-H`X&&Qt|B#+L42b zioElhs)?gHgR;)$HeVqqT7`dX&5wnKZx@EvT6f$f-2r`@dV?V;qQ-hXg3^|!C7!O#tzbeqJ97(jEA}xj@G#f#FE8>g_XA7<9Io|W%%1Z* z`Su#prGOPwr+NliQ(xFj+BW6YQRSqyCfrfAr}K!K{ILoyMbaTDWUiey^cKJ(?ht#i z2qpzE35iJ|ha^}g9f>VqEoe2AEs!!b7Byq&fyk#}fS@aQ1c^YI4ejfuAeqF;|G5-x z6GxFViH&?k0kTBf#3qPVQGg2G%C7OYDB=r{ca41}n%W{HSejgw>+Wql64pg5_PNZ- zRsfU@CY+OOtg#de_;PZ?^uNrFk}~kEN9Q&s>qAOE6B>R-&@L+Jm5oBlbd0B+PUD{| z+b=f;155-EOjQ7oh`eM#V(MbL|El0LPLy)6G*2!t1d$dBi<6Tuv0^jkptra!NLo@c zNcvXM50YDo916nB24y1`y1vy7R}_@UgY#uJy%m0z?R=Yq-wY;`m;!rYg#;BbtCTS( zzXgc;#G|Mwc1&Se-mG}L(mBS%QxpH=He3&%of7(p-yrX>;V@$4wl{s2ke1L$;pS8lqk}o9jwhK z*g?P|{zB<28prb5Fs#${gXp*IHkuFynAzdhmR1!GPD~&j~3sDDp@8ODiZNTOL5Y^5elMXA)~06iNlNEE2Ka}$NoHOe%(ps>=g`NgZd9wD}- z1sUd+oO^kX?EV&yD3S@D3pKy#R#Gvi1n|S3#Mdk8>zhf0{yk_BGQ}D>Au`xGpRnOvm|TxHPt*tLMhg(M*NSP~v*g7Q}=wh=hFyQBx=)_}UX z*RJ3UcKBHJvdEZa3pB}Tw^<^VtFN1?!#JB8g)ZvgJU`dMvF>+d-|XJx*|FGD5yYjN znK06l;_D_HpKiA6k5R8P|c{RUT2l^@=YW;#!^v!R_c zOP8Ap0~n&Q$%WIAU9!qk0&Osa4)iRZ*h#*lc{7J`)Gn=pHiM7+^iX}0H$z= zfWk|`C2pZ4rn!6P2#+Tw?9qUC$Y4pp;0%cLbJ0k7I7FF}DaaFaE@gXz%L-?${E}~Y zf_)-uxmcK@13*0K>x$eVvKeGC3uKFBDFDe=tzh5lX-j^*4Q0~^DqQiL`vbQY=lr4( zKAks`&?$85=w5d+n~eRP6>)6q z7CulQl>BfeyvW4U&2B1dK;}BHn4*-wa|kUL9sZP>MI|0t{!Lpzn?yxVot!EAqIP(` z#Y=(_Cx3IgPgOz&QyOK~qr62w-eqza`Iy*f>&i@3R!J8wFi=iTY$Kk`u5;2_o8nrB zy)UW?zf?^LXMH94U{Yh+L@c##CJNVWfSlp5xn~*9NXGFw+;Ng?+r;QL5^-)I*)(*G z>QkEcZgD*d%@i=}K*$m{I)~_1R=dfV$+HUd?sZ4Jb+D;|U^We~4+H2Tb_f)qlQdlN zo>h_ESMd^S%fqpr|B#BOeff*bE|1o_H}KW@f&5%V3#c?-k>yC{N;AF0e4G(B?ue%aZ4Y$}J|w_D)>5Koz}N zVr+noLWrF;)U^OzG$iXJ>m?bE1ZX`OlO%}0wULgg1krJ2ISx0=7Th@qQl9Ku$`)Ll zi|N!F$m;V-eZ>jb>!Lh-d_RQna5Vp}>5jnN>&4K^P@T0ut_y8Wg&=K&vD&{9$1$WH zF_QC#wSWr3Gn3G1QA-iot>u8Ly*>ViilgFxTEr94?DP}(%isPWX_VbpK~n7Dj}Dsq z7i#O`KSRskS_tUo_|K!`_w^6U@t+@#YPOy{5 zjFE=|Y^|uT1!gx0@2@+WMK26 z2veWi945iT3%3|V_)6mD{$*&%3wbv0qOE>Jv=u*WcL52BMGB&amWgSqV+I{}?c0Y( z2AKa;F#qj%A|=k{d_EQR@oo8*Yn8TH!BL*(Lm(%{TTuz1q)CUR!Z-EzzorXlhyqu} zt~ZbaOFS!g?0IusU6i=Q%nEl?EF0~xJFJWjlDNR=}LJ1qzW6kwH|y8ti_ zc}8K&Aym{j=J8P28v_gaaEKkoE@Z! z$OYJnYv@*8ak=4|JJrU{%Y~wY)MP2=WtXAWcTmZD^Tj=3D_~=c)C)VxzCwRkKs*3} z0~aU&@4z9*7sN#twr#l1=1BuP=h>a}?9O?%U@$x9+2_q}=REuG=sdeUO=+<*@dZ51 zw(4l6trh)YZm2$_G@Jw^8n3aRtR(M|Z?A+w^5Y}bo#G-=GR4}|m#c?m!xYwsDDGTo zcdoRnh}qGhxV?Hhv~x`TS8+^T=l>bm-^>5A_Vb6@&#V5Q?|1&6-=qER{XZl7#r!{e zjZOZay~bw$Pc|??eRBOjBm0N>fA$)8LP1>Q{mEY3d4KM_KX=}rufY4W*U<3(gv(ua z{+~PlPt9?z0%r6-@&9ChZOQ+0drnJiP%q%L#K7h`Eu}uUb6Q$yJEx_c)6$P{TG|=- zGwlZ(_)D4UcZ#DQ)6)7MhA+n%R)lGCdlg_e>VN7V-si;s9{s$l|N33p>rwsuT&-!S zexPkL@x~{_p;ftItC%cnds4sTD0xlX#MePWsbJik;L?Ym_=dA(1FZ z;zXKYfQA!7ggs*}{;h~u(y5JR7|l~8V^3*>_71?_tUg2`tnd9z_2a_z8Ryayg7}k= z$GP-BgATTVk6c;B`yfdZ&Tm8LW07D})&Up#4*`bArl3IRJL>r zo<^SSpikhsQwy&<^|N-*zUt!BM!SF2>-3(k?rY6noBvh|8~1*z({nBcPP=hmJD=aU z_NiTS&h7{HRloQCqCKcTSlyfBo4)_6eK8GgT&HvYZCW3={%OB{^Y!W2KJWFNUpq%1 zVP`NodaS)a?e+RMjeGyB*J~d427a@9UO$C3`}C&YZ{E9;)_vW+csib3^v|2Ud)L10 zPp?iNYxVPX|B4RW`o+!Q>asVm+c)lf{?u^w{wXxjW$jc?FzpAIi3Pu>1i->&tK2fg;7 z*Kc07&ztYseg9$LPNx0i@x0UP-&z;#OL#nCzfBk(o@(z0_tWOA+w0AH?pHYMJ$`+h zPTEiP^Tq8$`%Am_RDbHX&bov4=iY{nO*t z;^RB`?P`u3CxTAv+l@2*HmpBAcHH;0?cTh5{L*(C_r42{o}TW#$D^TVQ)^J4qQU#S z>mz?MXr97*w|(E~{Bi`F_HD0mI<@-~XrG6JUafW3>-mePZ|95Ki`K*NxLLcoXmwl1 z{`Iil_Z#>A%<9#{``Z1i{m?%}&1UQA%cT9(XdYSh@vQGS)2EtG`rW6~_QTcn)46{M zAN=NR?<(v~Thngi^x|evzwHm+zi&@}IqG@saL|0}HST?EPruS`qyLDy)=|6Gg!lc^ z>)Yn(JJ@#`u+|EP4f|`W*7v%D7QTIOt_O~N_UJla?~nV_?!)=}?#0!0%e8-PeQSPr zoIZJ-hyJ_9J*i*U{fA$Vt^(LSJ!(6?GnjsSx^48n4(mR(rp;dK+tuu*arv(Gxz!yE zK1QvY|M{u^G<`g7k)Ahs->&!lPSfvnzu8mx@YL@%`dx&P~U)8;@U3y?Zyj>(*{+1F!#XIG7y4^Y*X(`uVqkcXie|_HXW; zR`2PdRcj5L>sH^HTMz9)zdt?der_+?gO5$*^t->-9oo3}=L64vcs%Og4?a7e(dV1@ zPrWv6A3LqSdmq3-{r%%{tJ|yhW_^zw-MC*r+;~rCouhiI`*1pabnM3cU=rE2Hf?wN zzx9sn#m$#?yK(Q=&_(OvdO?p`$M*YQzfGch=kmDsVE@+dHZQxL-EV(6{f5rl1N(d) zJk?vD`{!-1bKZaIIFl#jJkGkc_up<7AK!JSKIu1Gcb)0iR^#3$=%LlO7hwo5Y-mmG z$*^ZXSfBfs{a(G%!{MwuxcYX}wd%d872JQh@_NnY=l&wR>#~1$+l$+W*3q!`blUoS zdV25v^3|@}*NuC>{rIIlc|7)A)bCU4+&R7NH%Z5B(x>ys|7a{Dp&Ern5ecJ0a&)B)R>D7<>{r2h8`IXmoo-TXc zcC+o;?f&3nt>?5Zd+x`}LHB&oZa%$h*IH-x`NSXA$45_Yzj^;)U)pu&yzgAj;q>b4 z>Day))|!0=*KS^QJI$+Er#bz4Gi?vhx!t(;+Lv(f@v-GTIqhEaxc%9FYB!%cH%&I4 z@$7!u>@&L3?p@B%w0V2)+JQBg1h8klx4)gT@t*b`S{L`d=G}d*>9u>!&T#6}!Jz%+ zrrZ2%*ZN-v-sD5O(L8D&pElY@exr5NA9S7jW7vPJ+sBuS;e)dnezxx(@kiJjG|yq} z>mwU)zZ1gSe*d9c?>n7`tFHa6x3C+wd*AbC{r<_kwlldwz3}$>sP!IB z>uuC%U&Ak_mp9FEZ8*64F#OhkYW2czgF*P%@6~3v=gm8N@N{FH+qF);b#Ry@$5f`fS(2$ERkqHt;4jIGw=Wm;P_R9`}x)F2eiU?$v3x_P*Y3 zw&1YyOEBp7-wlt#(_d>JuZG|3PW$+D-uc{mV07oHYquV2&2Imp9S-Zw+xCO~!R|Ln ze|iPmgZujJMfmIEmtN4X^#{X?);H)m4=u0V9ez6xo{rv!-9hWOcKwvz48~vEN0a{W z3!`U#^Rea(+TQ8q;Nj-|*V%xE3_}1JKL@ITIc@b@ZogcnO+_>?#a8MYkzL{ov8n%7xcQ1^Fj0K==OZl z>0J2r{>8_$_UHZtp0|U3^y+r)W3zqKe>a>y`8N+wkAvRV>%QX*hV}l@ z%|rWF2G{P}y>{K7w;ZR@>0ddvbNbux+xY#{A{=y`s}AfpAA8-&m0hzJ!-w-~$?v~>;7?Nijfx`gMGdEc`Z z-HRrFrtgoBg@<1l=oWd+ql(ZoM;bnzdf< z>09I8@Ac~aUhhl$eAsIr4g3AOcE9bSPUyEk+uwdYYEK6b{Z`kzx9qOt-ISs^IN}r)$JX(j~n;oYyaEH0`wd& z>`jh)-yD4JHJ#1{dEYv}so#7V*B&2yYIjdv*t7kvTfgm{-@LP?SJ!QKa(Z`P`&IIU z&F=Jmd|&H#`sdCC;~o0vJX9 z8zU-8sLUtWnt&Td(5_E;{3VRSiO9W>qhEd`5jQq)sIjtL0>mEMp4b~Z2rvS4z^1zp z$_3~+fKKx3mM7J8P{=kit%7rCO$1nF+dx=)PM=*i+Q1Lc2!A~QBmlW?&giS}U`y#L zD#)`XG>!=q%WO#tGK@lULMa~SgwWW^n4N1{$*x}v28n~`L%@>Zx0gtyO-Zk>Z;f7pEav6`0 zbWG`8b~`7qD-H(^U>c<|Mh7@(Lp8z$iNOE+zyIHWI1Y&X|M!3YfBXO)9v@MG90(j3 zj8PyD$vV52P(E^-*V+lV*u!q*eggH4)~HQpvlVpqKNKRge)NkDMn%*QbPnPQjyz`i z=ocC2?2+`>->yX{7C}dG<(}tYtQaBcUfbYwkeMah>#08F{46vK)kX1V?D#r&0a|N7 zUm5lF?b*ro-|yPzO#nl2gClw2$Ve?PT<|xCs~la@7}pM~F54p5QUN z6Zpv3W@li1ZUPTviLkXmi6^5Z9WqaYc*(Ud8At7}%?Oh9Do}YWQlTR}I0ZS3;bT;m z3kWH)30Am64wZO0#`64X{1p+Ky^4_vyDrvDGG`mEGeO6E&eHSTj3(bhQ}_rvR6dG^v4Ei<%ZY;j{-0-vv)r1sUYb2%5*o!e3P41Y zRlK}gw(BX0m&4nNz?+CHl6}dtwMfQwD_c^pdfKxTR&eeNe+>y z?(93z;zTP2Gc)s@w7rwIv)JEB+dFA{Cv7ix*h$-|32jH(ZUlISC};D8%)L(FR%Tu?J$bTOR)0a)_SY3)uIFVu9NB(AM%Y2+os3VLjXME@KTLd#lOI-Gj8oqgs}_40 zC%+g)jXzKGk&HC0_z>0i1>df`fQKU+P(-=DKxsfyJAH^GzXKg-v2vq9PSR!fo%&*@ zzQ|&Kr@r_O>Wk#47i%w)cXgE)He%Dh5!wTsm!vc^m@^gmtp*T^bYn{YfJM$x_B?R0 zhky^QDavCA9YSf93uFOuc^WJxak^MgDt-uO(20|2#qc?!nX?&L6B{}6{cHwi{?*i| zL+qwAXsEWCLv-O+A&?!tf4};plGaxHZQ?1BH6fRB&Sp!%KL{NTfss0dXKQeotL=fI zIHAI84)ADEpNEK$5tu;Fb{IKWN>g1`5%+nE5EAgd=C1ytiPR6ZTCKJot@YL4itu_v z?3{S!3{KB^R15_q05+!L-<(`Aq-K!m5*t-{SZ&VK*^k^nAYkyVD#c=Pk8lw;@_iDp zD^?vFFd;r=7kA|6C{Z@4fh1bGVbP}9Z;~MSn7Yv^PdoQ1$>)&lsK^EAtIrd)=S;NQ zy%wq~w!19ivORLzY$$F|p8A|r4B98_-G(h-v;%xdDV`yXO|X9hgK5kwL8`ib0#N-k z{*{v@kK_?H7>3C8MK;3_2H`RZV*7x1pF~a3c zSzvFRgX~Q^M^Xw+n$t~fi-a`YL}{l#6zG_ow?Fa5kK=`W9DS>9jz{d-FNOJnC&oH;+f@sRj-zr3SB zUdu}KN*^VzMnrbjJAr~3=JNi5(jlzL%6)oq2Tt-8**nF+PBE}k3~X3}tttkVsDXxh zV5x_;heNSBc9S9YSteMpAW;tMVq$#F@;OIUFd)H{GTtT!@a5g?U1F;+W;@FXDOv{F zji%Y}gyZ_rFFHuBAN?Y+oF~kXfMNMVc`R>2t##-f?nfQ8tU?32@*LISG>Zy(^ym7NKAvT*4sZ#e_7yv5vIRqteLXFY{7e z*9;bwTuNw7&cCwTSg3tqfWS$s!LG{_4|V2T!kePukdj{>N`fBE(*p-1%%HgQue9!SxN_+gbz3R#}y%u`m^Ql zDCZYq+_p5a!TB^-JbSk5>2sV;0rB#Vj-I<|c_G##HqsTeTIqLF8es>!STIEln%E#x zh6OP17 zTGMv2)7ok5WG4+I?PRB&?6lN&veQm>`j?WOe1rQ%YyVuzBg~qiAmw~;!X@RDXjIPLB8@$>T>M=Q2#`IC%)6?>ZJR>eOjRx0gHBhK)ZSN?&#p2S*OfJYbreb>$Px*OFU?}VdJTqEuU_m%RG%@&YGjpS^he3gTY)jVft=gcsXsO+< zb?DL6&w^N4qIKS4d`Ih$dF)*Od|<>dERYeSQ2q=%O0q;Uj)*xmVdXk;MF7#v< zda?^WiGSUNp6o(TeqW&{zdNiMXJ2M3n3jcMc2ZQl^#5n?{lDY3kv-A* z*?$E#bI-=Q*DcGAlfC0TbMh2_ndrq%^du!S@8#z1KqR^wBa+|%prp=v@8A9o0g_F2 z6F`AvOD!4rVa8E|g>QvIq424y{`+5fEm9Zs>YP_qYYAD>Tjd0OaaCLro)Jlu+2Rrl z8qLa9zUT{CP_mJ7ZdeCIQyB{zz!Ab)(Wo;i#w1VJO2-Sk=sk0qb)lki?`SCN9#<60 zJ@7?c`HO9ivujSuYT3)BU5Ea1FjSx-qyH>)YAcn^aXmiCkcv`3lrO)5@2j5IH<14A z;SgbK3>U21x_fPFjs8nD1|79wJ*|eGD_*O4M9;#2-di?yc%s^iC#pJ}<^TATy?5dL zsww;PeudCAcZP6jY=}2R1+G`lO+@)ERh~+n-9 z;&oz95WdDVQ9&PQ)rDwDqN^T?_2Yi^1x>1~0ws$H#+zf(&|2SJYSj$rnU*B&Y(Y9S zrjU(tqE_XwJ+i)WcZayd*JLdK*R4fMMwL-W&pF3g%+evoG{t!qAOSMksMY~9`yZ3V zI^DX(NTo7W{$(tAK!y+)&KI)-w3u7A!PT7t=5RyMSQtfderNR+?3I*&#RvCtU)@ zG9WOX0YNYgXc(@+NfXt`2Pd`x`8?i2F%Db9nh58B24NilM60KIKfD9-n>q;Y0S&=E z0LIsYPO#!103^2&5>^ZZfT9T{Va7o~_JI*8F$4>Npm+%6#~UzQ1Oj0rkP{z)U>FGm z!%0AU55P+xZ_EUO&+|a+gth4!SK*DHun(w>t$<=EtQ33j6+j$?m8>0O0aGWyNE}NQ zJNq??vX@G~R^>aYIjf(YEB)Ni<=O--C61P+39w2MCs*4CU0;s?Lq4r9qRowTL9a>H zzJ-)yF0Yk&>*8+cH&d3a>XL5hc>hZ%S{oUBE@I~!pO`Scu3K2ubbSZwtaQDmjiW|q zHo{FS+_c&y+_ZY>hMQKnX@#3sxM_u(R)4p`P0LWiO>6IOTE>q}FuCRp^9g{A6Z+Q0 z5hyFLwuc zxsC1ZM$Bz|0L9ETsChVOZv9CoHE6loT4DL{9XdHxD2*P?;*zwIdMah7W)neLq??;h z<2hJII_aT#Ls~*lqrR#HNv*yztwJtY-yL*nq+2IBFEnDs@!FnK!*(`+G1^RdqXgZ8 z$n~iE@zbMhKx{ zC?SM~aTpu5P$*i8FF5k&4z>Uq&`eN!>)YwXUzJFY$FL zVNt(t)A|C4#k!qvF9`R7a4#^Fa4#?pBisuBlN9a+;a;#&!o48e3m(zEU?`ek^Q8rX zC$K)YJd)Tt4-GI-Klf2G94qjqelk>lTcZS;zi;6KTCM6eYoGy9i`HF%0-AnmSr(Pk z8!6v=Hb*$2SP*@kYfl#XSr9Hz)QJJ0`CoM_ZoX`V6{zG}9fj-7+1mgV2ta}E><6I0 z9RLNIE$@a1G*zMCfR>cl*0=^|dNfBfb)-^JVyLl3Mg61MoKK4?s2CgElkfg=x^A=D z6cOW`h@9!bES1<$K2=8DsNZ4;>hYbbMQgr-C`1Oh8RBap`9UXo1>XrKcqobql|G#+k@|zdm{Ncr`ufBfy%~wZXy*&EE(Ti8# zeDl>G(9u*Ku$4kc%>QsSx~|z+WR+$F9F(nn^7glWKORRt7|AbEX1Z7-&dta zpa0lU-B9S)KWu6At)6UX^l6(KT&2fJz8s;`f4S~!ZLNKC_7>4J*LDNk==bPC&q`}_ zZE@VA1jQ_BW}C9-)jywKzdZa?TXZ}x>py4LgkMu~^Zd)8=?6`}Gy6f)zXMHwy{p}- zJ~qezNBGQB6+zPR!u;iNT~Q^?6BP_JuHsL&#ALbi=5$eTqvO0X#J4`stEx%nST6Ng zDi%POWL_@sobemX<9;QX%3db$l5{wZ^;n*Nxz&RGc9R<>aBC8)39JNqwf__#A+Cq1 zc1FQD$)uVK!=<6J#PBAe;Lm3t4$+CMr60|rq=*T^C?QzgQ$&Kr5Fl}-Km3`y5 zkV_Z;d{44>nZr7?vCos_H-ck zrI!<&q>$M-D=RjDmr{OkCN)r}IX2fZOM2sxpeA%`j=5A?urhVFpN1={Du0cN9`g(l z94%F(Pty*S0+k%Mnf|8KLC7I`yN-OTr+45yrRt(?Y-?{! z-e$h^M@@zw#_8{RgcU1piS4$)GLvoZ+tw_pNV?WJ>W^rPn$$L+Ff(=jBDrCNYVzmA z=!YixP*vYBmgS0W3Ks>cL(i z&Z_f`{!TRXs@CPI=>0tuFB?wLP9&E&x*}QJuUz{{rFw+V|Cr+2sxOx;UR|!_rb>;R z!aBvbRTAItSiJhKBmvoXAGbg2sB%@_87;_q{d&|Sv3R9twKj*=I?_{`AvK ziQGnn#HMFkZDCc7D$36gm9^hhXF)VLNNvmJ{n*6$O0h=^q98f1UVMd~R)a_HGD+nM zT`-0|V7?#+NLx}xYp)xq9-*fht0(HfAPQQ^lfKzb--7_rsni1NF8QzU#&-jjxSoz` znd^&FHS_)JTzxU&LhBW*VsQ6e)9O;K@z+O3=;=v)bJn*&^p11J*9(kjCM3b}-Yhgp z2kqqT&pOL2mz)TdR(!oyhJmWpT_-uKH*6i~S_>}aFNtC*uIdTY-k1iODM=Y$wGPe~ zN3Z_<>;Lf$divrc-SK1&*)=`iO*Wks-vQ>+e95|}`796A)f)N(Q|&sRbY@YJYdw6F zH$~H!6|R>pXoM3KvGkH=jjeHBWJ(9FBHXVLlE**3MNj|xe>bg6d0hN-hMs=Yd61+TQer`^(1bh^e^xkD$<1M^aG3 zNVZdhuJf60jmbI?k2L{~$py02k3c4F+(`%~gd)nLg39kW!B>5@fbKJYr*d0<=^xN# z^^4;sXlG)To#d2o$_!J5v(-;MNg(&SX*{EuoH0JrqcUVhQfZyw z%0Wvlpv^&5byT~4aJpC!Ug=z%=DBfKsc{TS4?M?7Qr_#|R{XRVO!0oBQ}qPJ^?$De z1-BO5bV0A!K&hNJm^P0WlCLULKPQoLOna&$mei9yHG5RetoCZI&o(+W-CURIZF_RD zK!ULhVNqRkX;%Memg|!)flXAiGzTQ){qjv!ucKd9e;Q-0tBDZNT#`i1sG>?YCYL0w ztO0$JUD*VlRhfzwztg-STJ~YQl35Y+)-%bidiILnuuPInUaWGE!uhV}vySpntDljs zU^&~B%3k&#SC4rW%~?sbwvAV(2hAdumNQseNGR=?DJzWg%;wq>pcL@xmalB1%Hd1r5mOI34X3-UPA`sLzOueAm;|A9qc`m2Qpnad zySGWjI%N~1c0AGkbdpu~%8EMYBr1=nCBCMNqau?uL0F=M;NB-14LVTMh*;L-ql}g~ zTWIe9jOK+bcmwG1RT*(1*;^t>1bMDGZYtLq28lp7OQN!4N`?}mfhK=%Z^6GC)?e?; zXNbXq_MREuTpsa~9tP(~B| z455$r1*_DnOMuF=hNYsyUl>i_fpb<#?${=4C@PLkT5CJ%`m9_^gz(%miXo z7YE%siJR2qbM*bi#VM*Bav~NR5XW8uM-98|sQ(p91=j&E)c>P`@U(UNpU*xtzy&?; zYO0T@v4)lBU|JH6l{|8-TPW6LGD{)hO+?SI{GeNlVuBHH(&79VN%Ae0Z z46t#oe7JysTy6@~*4DVvpjM#~zNM}?~*;Hkj=f-~s-X3ZOxSB#p+7~dF--a|1} zPvNCRR!3`X{kF$}kvB|*46g24jXStnE~T-U7X>(1j)$V1JriwjxSpvSGq@ZJ@jVmL zrf_VH@U-*Mw%XC4b5L2!GQ3LNpkf>9Q{+N&g43QUusxG~w_2ZR-LWYZf)~!|GV3gA zz8E)}YOHo^1hicvnEe`Utx0)RY%`p?J1U0-zZq0|M4d-+^8nBh7)sJ+5(8cZPzz!9 zzEL`X+<3P2VKWa)cGI|_RUBrMP91noV+*lxqS+E%mkP0FtO1LpHctw%JgMFUJ>qPA z`M&*Ohdt^S#%BsmM3aOH60s~6u54;_EtXZci0Gp8s+^q>%UA1*gPv0d;29VSrFdaHiT&%^{kmB&JxBWQFitTDFlc`c}uOB-<#$lG8iL7%C85WQ;rB?h#V2 zsAuGwa6wKvyIrmQ`8wubTsgE6oVt^Q)nENjrH+asTCUCO&-55{)HglxrL1&NY%NP` z-a4?cqqGNX+@S%HMS$pA`koBj)XE99dxGlk%S9~27ShonJ&$2fh z+nLy&I1}5pZQHgr;f|e5Y}=XGwr!hFe&^hC-{*bq{i8p7?b^N8?p6J*THRH(ssw1* z=;X^>Q_LQ6gz>WGJ$_gJJ_3)Z7o4@e>1c}O{mQrXP;Iu}+^s?VX?Px~nWv~lFLnUw zlaMFTTii!MV8x-vXA)tjxOhcRCp$LvsJdTaOWfsRtH8Zaxaf zBC}(UjbCrTr(9B`R4rGyS>>^VcXqVaNzbySiG|}Tz~xNBb>Y>wxAe$kj5gemao&=M zBYCTaM-WI-?L8iNiLF2Wq#Og4$^Y`xRk_+_z>JwGj1;Z%PA}(7{%n@UIorF8Leuab zq_Y4OP&`xU1Y3;9qfstzo=LQU3|!Afqh{MgYEu_Pi|#HP&BB`5I-^kjc+{#*E_||r zjZv&g)V8F{HN;aa_!V+2jwt6~sc|q_p&-?6kf*Ru@0@ zvRHjy4t12dx=RgX8mCB)f>{zMUwr`Q`SsZR@ge8a`FcFF4cqQD?Pup>XkKx3j4qGY z!|qnjg778wvGGpA=s2)PpI>*?s;7S$RFq$Ttc0TOentw|hkMJ7ds&4fx{A-akN``% zz|^x!wm#IZ*wQ&v&xD%cg}3?)?tQY7VuklRl@1t$=<0I`27gOv3+9GOYTZf2g(1#V zZ|7d+?Hg9CF0qtH!ESDfFk@1{A9C#nF%53VifKo;j;T|QC05KWi7W2~uCoWIXxGfk zsHgh*)kWprBxZe$jJfDRRhEINGV?pCN$;jv_l{e>(TVJ7@sIY?ecka7EDa=a{tS9A zReqoLn>LM45k|b3b%yW(>D=rb*=23>fQDP`2;BTE^8@rG|{{W9ljl==IerIzJq z?faIevWl59Q_wc;><`UuoSpl>9%gxMqM9a9fQq)CE4ZH-R*^d555AYIoWjo(3wjw6 z_>Nf-*RA02^(-8AF+9J1sgk7qneQ7YdHZtU&|6~9`;}baA|jx`LE;qhtG=6vlDKk} zYN@AkUmdu09>0y4`ra)q{4dm3CpY*f{?6aY|*V?&{kL37gBS%D7 zFistuhsCVbtA3eHbjL3HiOCu6v3y|mo}&u$9x(tML+jpTkhLT1ZV)>FqyRV71( zEoJ3tv0NgFPPD{qQaXf3I`N^@L94}U!^NtBAVRy&eOX#%OVCtO&1V?(0ks%5-6t1h z-^%EvBLh~RM|oGuXppq1t9%pJfjAYSXMLJ9h9S0mYX;-%b--5!Qx?3~HUE2u` zUz3fh&P{++W9;*zJFoycft}w%bfNIvC~53czH_DxrRtP2a!fM0ioJIO3GPt0eiul& z|Io#2r>5P@9rlBH9al5n^Qdgxvj>{KCSOzqN0}d2hVm;Q4ZazSE)%`upK|tT^{IZx(S=e^8OW#` znJqUQc94rLO|`TW&PU)f2l%?!=Jj+xW8!=#&>u_tJK8?RdgV=1m(pu~(r@lg19g#I zPQl5Iic5(sZXbrS*zMk<~m`@?_>VUv3vJ@AIX6~#j@ z*7pm2GKUSXx$%8=8_C9*lmaOGIo|4SoEH&9`DmiPK|>ZN!>R@$OUl?yi=_S|@7YF{oEI#@PKhxR z+)Bx(;D3=>-!h#ceRg`f<2L}~oDcT|-AUYL+L8ThPS|)Uv7V;VQL&i0P@x^T5sf(c z5ISD?hFo!#egeJ7H#^6VKeInEg{dQZcy#iu0$N-Uyzfus37@&!L5AWFfVYX%ZIheY znHu6l>nLS)?Tg?`w0W?vhgJnW^F!V*xM%=I3UstDVJ^|4%NZN%N3AD_GI9P00r~V( zF<)kS6PpkRePO#WfgBw#F%4Nv6_x%{<_&lR*OX|`U}5$<`_A?Q*O~XUM#pQh<-z$7 zy77VKiejby9-BpaO&enH(mPSwqr^-@*h}JX;jG1jMVvpDnJQehb(|pca8kI?@#{Kl z)=ay+if+Yez8=1xz|P!OU~&%CaTz!2lU!W+N6`h3H1qO>1C=Vd4;8^bx)vn zn8)^b2VXjCAFW1UvR0MdnsNfLbeVy0jl?Q7<7RowG2O(bRt;-LX$%{JVttrv#PQNQ z)#!1|_H*b;21eQ}VQmHKHSR!^I|HMDbQ@5JRm|UAB@3h!B~LQzM^h@d(iO-yW7HRe zi*XQn3)1k(D89Z+eV1Qn#zDfU)bb(6e3trxs(kBl;&^tF3I>Vz%ElR}YFp`cZHIQw zV3qR%HTth$x>V@5H)JzvXH|MAmA3%YkkCPB3U=KE9UD~{9@IK;ioW@&;*=K0e4V#x z%A8HMOv%0lA)A8^WA{kBuZpG_!k?@&q6A9-B&i=Peno#E!mvZDQCOSpMgMpXEmje$ z99w18b)1@#NmfA*MFg0$7&JIeF8Tbn(xYJ+0u)j4s2uPr75na_Vk=yT3mq|a?gkFq z8p}{w$~`BK6ex#8Gf*-kP%UgG`^`JeNxx4oOEL33Id#3=?l;_YYrzgC%!OLCJ5G!L zu;6XgX6ZVj%8Q_(U&FEpVwIDnh%npKQiX-Lmg z>mq%Gu1lB3QIv-?X@_pq89H?tTf36x>-!s@W#elWC1c9cl&c9Qu8IevB`_t{TdW1L z;-oKqpAH~NhQ>xUpGFmdP|LoJ*=HoVnPp94`?8{Zey#P+2<$9fO*)T0#x1TIh^^4v$m z<6`r^m*rBow#wrI8-?A}sD$#HSI+yK6HWg>*d3dsa|e-6ZAIIkbLYFDWMS$EO0(W% z3Kgl-r~7sbnmR^R~l2&MuJ3dYZa+qn({i646QVCVPy?ZKZW+ zUqS`e>l3*YE14=x@)My5^sO+@Jx%-lBE+ViE@lU}lgekT zOr+bol)}IeMM)Kgh< z%lb}6MO2?EGGfVlr|o24NK z&vFemZ_v{kxkNeS!?qLD2d2rN)aMeE$yrltCUjnr+1L@r5`E6U!nN^Td6jUOEiu;@ zD{lmcD(5VRs(*Lbf$pP}^;NDW!x!SV^D)IS&3OMnK-2FYN#)MQ$s%ex+#V`xvw7!Z zjEKQQ_E`h9YpBz+7u-|C-d{#f#b$hr8o5%wMSX5@_F3w2uJpo9>nVDAs1(TB>tcIA z2Wg%TSc*ZFa4#}s(Sj)Y5w$tqfk|s#j<8y!$pID_@z^64BQA&T%&;)e*{~XE zE^h@{*0}J_BirdZ+spG~z;#yOD$kVbPW}=t3OTdu0VYnp9n(4 z#;tC1Kl7*gdd0AE@@(3uAQ{|?9qai<841ovF%D?sWzpLQs;$-HkGIw5 zauBx0cNNr46^{o)*uKXMLr+n^jRkplDeXNI;8k}@*(1a~f_ltjDD8TmPg6F{AbuDf zSm%KV)m!ee)JY@%LEUGe39Ar2k2UWg$Nk%9eVpF-TL#{YCc`(BPR(jxeQ|u)$*3vk zRiX58L~Gh=Hn87it`L{!yFhWdGS6U!i`9-r(=?ET?f^u8{JgFui)Yn2LuV0HmJ$mi z=*}1#Cs}6QGg21Qfn@P}cM$_1uu=FGk>@Gx5TR+Q|)v(C9 zcuycc1st-q)?00HO?wX?$gb00^e5?|cEF~VxcoSM>3-^*afona0@#5k@v=4%CKs$7 zU=gl!c>(ui6SKo=ymX1sVhMp@pn7F0z zd_K0dSC793xgzGzjRb7IBN_(;KVkDUVHknM0Y|@j*NGDOt0c+JSrYd>o!FlB%uB3oZ9B%XM>l z8X%3)+3xn3=M@=4KUAq$6{1u1wbDeoviVUGx#8uxvH}FtyFANg|8QB;WG9ubn#VNry-W+| zpaEYZLM<~R?o${KNBC5j{5nO#gC)frOZU=D%B4qT3x4YQZOuIZJ>r-bCR0C94>0-_ zi%Q)8N?76;a8i-l-Z~`Sb?c`L02FZ00Nhj>^LdKdwHBmiR#iErVo%aU>!DaQWOYJG z(-kBf903x2)iRXLm(OV11#88&1x_YXZN18;Ku?Q%G3%DnC<76@R;)SH<3PwNxbdex z{)@B<0mPZYB8CxrDvXct(G7&_sk|nH^mXKWm-P=t?RgO+rd_&1!gGoJKcp0G3xAX2 zb7a^x?eD{c07pmxG#*Uz0P|(swVbQ!+Ha+*fhf>|=@$S!S_F)92J)q;F^|tZ%EQ2p z#>1p1-}jnf$)t*_!~_nPGL)mUGTPQssFDsy=L!!plcj>a8j;;d1`C}YsgOV1uC7Ee z&ZmM41884hX zV@0j<9--nBk<^RX=T!y7y=2qWD($MFu@Kl6>zGHfgbLnm<_^1U3e zY;1nTjrw*eY&EPD$*(MFRn7EqaZTomGJDyN;x$83c^Y9c6Szq3RjLA2rEY=lJ$%+= zt@?y25<5hZ*?yEJcFRQtJ1;jZYLJjB5fXf)xTL$`H3s(c?KbFkP^S-6&tT}4d<`cA z?iIXF-R>(R`s}j2J~UILQ$_d@X*2u1|INbqp!wq7tu<$=j=KGeCYvC!%FfBj`FglO z{qQ9wCYJH_^`J(t_whe`>($-geZGC`q?KHfM5Kp)?ARNNhuiq#9*h|i+1r__*3Z~G znE)*b#(~5zwJ$nJEVqx{2-9=&kw8xtFD*%&4|g3q#zxvY&N_ic%ChTW=$(4-5d^7= z%eq_%=@w#LHXk47=ZT#$$8!5Wyxl*m8BmH}tP;^A&nE08b(@7dq8w+S_NXeUzuoo; zj$tX$Nebyj`Vl&uzc{vVKfzp=P(eMthIPb5^zoeov%#dj^+ z?p1QA#>grD;9m_=D#h@Y%lZpBSJA-BD6WN@ECoyTOZ1~-eRSs0TH2N00-6iUOUv~` zQGIS^1um4d%PK~1%7-=YorRBdO^gIgI-#W$bc~g&vdce&>0w7&+^dKm`7oS+{pHqF zlpxlyzr{UrE^5mzjdo8R^xI!(+8EBXWdD9f)Ku`dQaj5EeptBtwI**HVR^oM2U(CQ zA6U-xxqw;n{<$b6FN-;Gcp4wpbSX~y+X)S0<@lN+QVNZ)v6WS-NKq_VEkY`=%-bgH zm{iElUJ}5j9+ySW&oO7HDobMxy(;KZf150-EXDoT(}lFxL-x;PS470m1#%N;5>0Gp z-eXH2)96NoKX0KXJW&1cd*f}E#q?PO+iaIS(cJBmb|g)PlcLb5XFpzLurpPEY9ySL z;OI9kgmPlKCOJ9)9kWdAK77hla>%ch{Q4=}H2cGlZYbCP@LtV!eH~;L3e!mt znI8DbxdJzAeCc+1znmTquw^`TSI72!T*;35>U@2IwSDdc+o$cq(L*f_1+hzOh>}s8 z>>2d48|*R|o*dHFbSoa=V;V@HN3k7^z%{yxc+Bf-MIKG|XZ83aQ*=(;3*gETHl(iM4C}*QdGxtt1 zrY-AF_(iXt(H18&P}Hp~TDWvf{q|UDIVZi89Z)9J`RS~X9fDXkjz4|2Cq%+b1kNC4~7^VfQ zD2-}^zFNr}4BN^bAwizCgAib)g2Fu@xXy4n?Y1rWJepYP&HsgTjJ_ukcfh%bnOO2x z1=4Cl=rY$r{OAwhAJME@&>1s*hVUj zo`c*Auv+2_pe#xqD`dfh35-<(tVKYP30jdW;r&2%wZkAFlHdE{+r?E}NnsBh!_w*K z52LH8w-pAxuCHE$+J~!vRkl0MhTxz3(VxJPf*F!dufr+T0>;e4twm8YABXRN zA;34wrM5d~I*wKqWroil&V+_0I2`VDZ)pR52ne>5dxFjjDf$8&?hedb_CS*#qGkHQ4x%^+$P z@Y=eiQz5oCKB)k>&? zh}7J6@Q}#VrI`{|!?}q{OYP5)rCdhspSM#gFyM#2Ww&Fa;Ix) z0QDmNiS8498E2IQ>gAH$E&>X)O9Bc+Bz#70P;f`WpOJS@ghlMbA-m3|LJWNRKJ^tM z&=Z^gns62vY)cOWir0Ue!W;}dt9VU)+M^8R{^FZYLR$!g?$2fh1SPkGj{JUq0I zMBUwg<7dE=vIkNJ2LI6<8`At75GQ0jLhjus3jYzXGp_*2&tvY5!N5tSq+C15O)tz> zSD>uFe6Vl)NszUOfp7>NPyELAKv|G~BTLU~4GshXCX1swcpZA2M|6fKApH&3B)m`H zgh%mo(?^Z}@GqQ4vfJAOn_5-+3^A-(#MMSl4j5}IL-m1buSq*!J)46VH;CKsJI1Dg zp-1OC)?KZFi|IUY{4@xu*2GeZS0thvrhTS6s(h&}&jO_2_jeNThTad+jzTCsDcG4= zngXG9I0#17v2%uFp=~|hnnATL?4mT7lPzkq7$Rl z&~*tKu~%y{wSJL@G$oCRe1v(8jQ!OnS>FR9QOw8#A;vezJikVPw>}yL_XC&AUdjI6 zDrx%|1NTF8S`_%6^-mrUH%xAGG>W@i5@fGe?~L8Q0Ezp-Ul5e9=La3*`%MZIm7n%# zi~dF>mB7|FqZ#fmwvQpdXwE@Z@cVh87}>8kLF0RSXXr6irA=btsS!tKVnu1ZQtJGs zCE`@cSdPeWB&i2r8PRHkP1Oz}*_&t*t(1Jxwu~tdjxmNu!E}96RVa`8qXCdjt)LVG zWP7(fK=v?X>?`UAb>j5JyG_tMKcyrI%vs^*F+%Ntku&;+s8QW^cffnDL5~onMovtK zbPSEd)7F&`*ulMkI&G74Lx4x~XZk>nUH(7hE&L04R^Q080_u$U2YJ)sp@GP}+(0&o zJzizpP@Ay1OD8x`rxrk+f#Q(UR({aAOF*7kxyV19vu%w8j!Gq`n?bL5;C#6Jb$4&*RR5;I4 z8WeBHTVVfYC3a5Uh$Fg)h!xmb8xTyxE=z#v`wkfS9fvX^=u7}QN?*(EVP$7M=^lAt zCCv0PLCv4foM0@_QfMj--X%R8D?Q5*%|Ivy?+g;8*JBEep~COMjIpqd!4Upm529ZB zo_~1M?XL>Gbn;CPWQDQYC&7lfO5BO|{x4Oodkve~6_A?^(G7(3-Dg@aP>=tc^uI9a z8NBEJ70+u}s8BSe6{EkSM`sxRt%L*`=eeSF#4bcDyoSDL^%>_WDLs)fmRow>?+gP- z#jYx;K$xB~BqQu&S5$R1sF!#>nTxA#aEJXIF4!0WOekoAbw5zXaE>G=?s(;zu6Oxwcf5(>9ob{Gv4q!n8|r9`r~lir3wWo3ZQzhNQ(@(mM0 zP<^-mhKc^tKP>36EeGqd1v>u+CVLCt3JO%vy<_!13JR$G-wJ9OJRZS+;}Zp_9k_<; ze^XHBeg7{9fX*TQOFQ;>+VlHz01e2{b4y|IAqth2G{AgI@p9<5G#z;{vSB z_C0N(hsf~YMtTg)cK?C)_P4Y7A80QHh(p@z_(5;C0aa!EFSF){Il#2E=QI*rqLUh zNRtNAbq4OUVWQ$J;;Yq1QfkGuE2jGczqh-TMHs)PuU9>U(=U^JgjM~jAawIA@Wz3W z!1Yz^AZQ*lQEz@TZLxX-h z=n?nQlH=}i(|QW_;%+3mpJTctnM#h--`l4Y_KsIK2l17=GYq*ZbM$UeI~XDj%`z15 z*kLWk;xx}ePXJ1U5lvDfo*7mG%(Tvgna84iGHLJ>Iw==T@$LU@XDR-hBKN~q%SYF- zJdS-rFTX+@K#{b}&rYOW#QqnyZ(xVB;ORdb}*hXNaf6fMZ!iko?_P~_3$`ZNbqcb34|Tr1UerNr~|TPC1_wBQuhSo zTJAn9-sCunqm)`Tb6D0W0zc0+)sSWY1ruW^|CgyJL-u{q_H5-!t4`_{PJy8pEa!k! zC(q(QMRtRF#C;jB=!^y0kZE4{k!00@=<6 z2x3Sb!2)rY@aK#!>k*EzS!ES3T6$tmp79Q!tv9i{6c3%^F!U;wi64;?#T&l|+AraQ z+05m-s!PUo3B0nBmEfVWpL%O`3~zTrW_u`Hamw~y z)TzrPv#xbC1%JAPc1E07^+`PqYo+x6dl9(Dq;5HnOiKOsG3t z@00Z{;fe-7PkZNEbo#6y3w)6TxXzT21lGvHbFWtosvc`}xoG&Bgu0IjU-;UlezYHl zX5r-Lr*X)FP74Z>@`lH0m4UVp40~N$0ZKVCxLqanDcV=xjuOjx0rMP2Ld_vL!t0yD z23I}MA)TNXTSv8SFt)=>Hb>_oeRMMMZ|hzl0B_t>9fE9UTwm~8Nml&27+YjNAPuph zv`3YN6K5;^?f~e&J8;l)Kk!q%e?RA&IlAv&_26ms6L7fklO^k+*s&7?xDOkp8FcIk zAWbsa`v%-ZX2|t$GbZwND0&JFAxa!vV)4yG7n-^xl1D+2!8e;Y<2mH1}cCQB>72*@qNSvO7h; zUha?Q=8C`VL7(?)-FOuUT{fRSbFXgeuTOOkR}Bw#GoS73&yU-BxOzaaeBn=?N?p#4|LfM{oNMs^?L-|@@G)#u`dL40~fxisB+p0l*>9&bHdUFab z5@SOt>TwATY_(k`lz$440M~oZZTmz5F?*?~Gk+y*vHc7L<)ub%K7$N`r`_C65|M1V zYcBKoLevjM0Oup53u2;Ej&fP0%w@UzAG70|5)l@MDY6S>sK4|u3k&yDKnNGL>5-77 zlseMNAL+RG>&^nAL7j>@Vj;J8w#P}Y#7=n3VlWNy5n&$=Ujiy7hq<+n`$BBnOT3@B zwh@#}t(9)Hr50?Gu)IA_d97CNjr>#-)v!LcuFOp`_7F_L`9FW-%vn+8#_X_beSl$- z%vO(5a5+`3oZ;bg|&ztrq^(VoqQhH1l+>j^7WVO|aClL~lQuP;)c# zd(7^F4ZBlKvfo6of=FCJDmHC`Yyg?=wkbO%<#f;g&Y%bDozD%0`!#v<#6jWY$u&|b zEY(mW7|LiJLcW~auobiTxykTA^=p{ihb4joMINWS0N@7e*G z*gH%cp`E$ybje9WbWw+RgVP(;p2+z1`z>k7tSnjDe;P?Qi2m(`r`Ms{#isq7nRs!M z2o=a^wglaK2St@OUrWVhBk0KuMT80x8?1wz&J2k(eMn^f3;Wau8qa44bq3Irx{+^o z4ODZGDMxl zSK>IWf>Ka?d$cDr&_sS96J72EgInx85uXsee0H?MlR?W_6d8hkh3tiAB5dE-=|&$h z!(Vsrbsl6Atp!}}2RnL%63>5UVuxqucCm$Q0fF5>Jn-e^$O02o0JOytNryU2aU{?f zA_R*_AGV0^TRGnxI(wHRAt{FmjAz(!FB=N2k|~RWKeiB4lR*A$W3wX1Sg*OXj=bBX zXYc(5ZwmBd90=zj5KF(lQXis3k^xkiEETwE6tv3}jEP@wtrxCFgE|%X)e4fS=g0t} zWTQkB+)ct<@*@88!w3k}eJ!k>=h;(E=ULR6wdM#J*#L{+o{_V>1jtdjYV-RoA+0@V z(3J;viRB5(;-znkz^$w>y92plkjIWN`%nsV9^GRg{y6)l7A%3bD+|GXNpVB?YTz>>`Z}W1fS-ly;pGP0oT<&G=6+&e;JRgK974v}d8FzuJ*eFM~y>t~1EZPCPCj z*?^|5SuMnu5nFyKF^SCMOjpK||CH0D-5@_dC5=q!*GBhnPlKjsy71gFF|Dt>W>iZ0 zcdJ*yuQ_1r7{71C(=}za3Q0-(T-`A_ymL=OW-JobDtqHC;QgXxvU0aYseE`55AK0A zgl#+7pTu|E13{8Fd0u2~u}c0y=^-Ua=H4v7sNT2}qXx6SiAuypggNFiMVsV`7cEPl z$Ov=gnl)P&F_J8yv_~@pdsIHGQ~j~Zi9mGN)E2($_+4egyt91*&vj~~r9f=D-sq_kkIgM@U9yiU^Zu}?@!o0DU3k;vnUToOxi27=hV?M$*sNVK zflKx$x{sHKea{ELl0)nX(5ZK8@Y-ZVP*%zV7BACK*xj3u<|btNWmf)CFnG&P!xptdN0XgXO-6A|?6fI~fi40TrpW|dDq>m`dfHH2` zq<)R>e>ql#kBMv3wGUpmre+sZCHr@?O@cf(N5dt0TSbV8%V-QFG4{LIhI;W}7Yvm~ zJM<({8fg0-&G!cb_RmycTzE(({;+L)%DrB=Z^Ho=VJa}|sIM+lAXaYmg+9b`1=={! zM`IAy_8kN0_i0)t-x4HP6j>9s7XU(}B;xmd!{d$L1lEnX(mp?+@5{;?5-Ejr?&|1X znG7o!bq8;P=xj)W&O+vB=ck zIGoRo$P@u;Q)=-VPj;RkRMSLpa+=iguF#iIpqihdqlPv8DBO(or01u1(2Fa*S-AaV zQzN+4l~Q^ZGHwPviL1{*QK2yn`9JIBbJzj65MXtW#XfHiI$;9pHFs*W8?k>J@0*{~ zzChbFMkrcvx4bow&5MR9=+IrHBl!1!z31U{RR&GE6~5C)93@hA2nL2+f2JpJ=OJf1 zTd5-{xw6*h6?m&IdNv1dPztz>bb?O9was%bug7@8j5*Se8NS4$O4RxKwA~1J-Q1dM zrC7IWuN`k>H|YEVvE^< z%FZCnOzkGzIG?{S?650o2sjZ7uLge3E}Ej}ut304t;MU5gy5-kdh$Q~Nui*?e+>fn z%Iz6v9Sp%JJK~B|48PNR8Ll|FH7}$@J(&vDFp2zQ6l;)pSvPHSmf?_aYGqtKU(ZYf zq&}vl0SQ(A&h1V>JQ$dj9=Jh=_6Y&&;=9~mf?$oEDWQMHD=M%LZl2^e7f_=0vc5 z#Dtq``%_c0y&3EVMsp{*D^ias4 z+4lVA+td|ubb^~)>Lgz^*{Q7BW)kR~mF*4V1g4wPgPsGf<*tlA=(abpOHrXnLlOc@ zB-oN!yf{DtIuwVCi(jhYg4GiPmDJgnONqA<$9U)tx9Q|7c0Vo_QvF-c7umdRxy`oo zXAdHGVa=8M!sW9*FrszxufR1ga5pk5QB&*1M-tek+-|GffTflJcMM~SOIq_mB6ZIA z1mrY1JhUEi)Mm^fj*k#~g8>r|(pydytAR#WZ_w2Aoc>cb)-IQc$j^N1}`_1Z00p~(KJv6E)Xo_^ACJa5HHMO z5G`+BYhY&AUJVe-ee5!%E2Y=^&L-`sCQWy3xNXsjn)6uGl{~o&LQpjAo@bn*9#K@i zpv16Wqi+aTR>8NnJyXy77Vg;k&bLfG&zKpxq2%-=b3iz-#@4!_g?W9>-$?+SZ}nTM zcFp)f5Kt`HZ;9Cyt_a;UB20d*V!2h@)w4^e2a`oi>9?K6={Rg5lRl~zViw8*kqHJn z;VL+}1MBqF@iv&4r0LdD8b`)jChLP=camcK2=y=Bx%icAOiuapqH_sL^YJ)vPrBq~ zIm5P)lVNzD3Y0><#gGAx@Qm{e0?^213r7qiXI(V}2H?n5!l)>2mEG`;7*L*}2m8p% z1Vy*QE;Rp{skk06iedT5WtKs-FB2*Mt`BgQaH zw@W0u(}a{$?34Sk=Zk#1Jp>UJ0&2eY{RV8@CMYe|rzMYlHn0$|@=dc!#n49(nOSL2 zIgpWabpT~vY2#h`E zT7~;E(ETvvqx%VfF`pTT6xHDmz4VV{yu@>b3M$p(k4l!v&8=on_6=xn8xRx?2rEQO zw&z^e&>E*IQfBL{48Ea#47ZTtIk1Wy`U|3yOdg=%Je;AiXU=g(=z>R_g{NZk&!vQ#6Eyp3CEs$0grw9{8d}gAuM58dFnZ&I3VnUCNSsA>y z8zZx$aMyA?QjA@5)_TYD0EpI0dLZe{2UPm_s6JuFncUC};~YxZmPNfrW5r!`( zD{8m>DLMBiQdfp;_o=>2!gZFq;iY$8hVfN3mra$To9Qv92&vwrScs^^cW6jG#Vn9^ zU}u%dV|hMx@82xjf%GS9FW_}bnbClrU~EmomcbLcG4t!OPU`YiQm@Lx-QKrw)7sVy zw-QyEiRK)vdLGOHI>VJrI$lE(ckDVwl^>!hhHRDSm)vlVtEriR-u>RQ{sKob7~+qA zbaH31Aa>W$6Y*rMaI;BqamE^V+$##!Be2*}oaYA*?>+BJIabmVYg04PQ=rkt?xt?! z(^fC-X~>FGLY#ANFK;Zs?15EqIh~~j&dJ+*xp{e6uz~tsir-`J;^!!vb-0N( z%GNHq$%0DWf(b2Ofw>*8dXPWkEeNeB>Ylg^7s5?Y=HQY|mfN4iSBR@i{W-PV!Dg{g zM9uh-vN{LSP8kJ&veE}GHPYudmN5)K7Cx_Jo83_A!W_WUY4Gy2^A_3N*wuP$!>$~z zCpX7Fxa~38vHI}W(FT!qfpvF|5NU?Xhg{ttJs-GmI|DmCTW>t@1?Bm1ZsA@}uaZtM zD(Ad%d6Bswk;23-?#VAtn4lvzpkp>qJcwhIYC8Y+LXc-fJ)89#;|CaiV2x9#pSN5) zX2%PJ4MN~y;yKGD<=Li@3YM@vy+XvoTiDl$edEWZDp z@{|pbgIX0RaGSQ;hT(V3B*DF4M$mA|zu8AX)|9v*B)USm1CRInIE(cPzVB$wGo{~Y zzl_OvLveijy&4${x!P-e^6A_vhb!14#A-5p(`a8VZkD?lkL2ek@#2 zRSFBk3~lMTanvgn_d^hcck(F2*kST@&(+#>p!Mi+SZ#pkYoccYrymZ@zA9R>(kcyU zcvhM*&#{9YJRE?`Br+iGZ{N`W;y{#QR~o*|5-<#u;;Wp%z4X|614hBQXf8@N0N~is zW3c?fr9LQI;2M$q6?_r9{N|Q7j+L@(E7Z2er7wS7&N$vxSp86Jsp3X=d(0yh>Hf#6L=3%Oo#`geL@JfnS%-fDlbUH)7%KssK3cP>+17GmR z@))qn6I(6y_>HN~yS6~iCTrIW&y6#KoX zn)uxK?S8*R@FYTUPgqqs9IL?u<5p?EtzSTSE=fLgWtN zNNFfpmlZ6^AHIJ0BXPD+ix67(^%Z<;=o;^w#V|)7DVGQ8kXe5KTEF6pX8B#NL$WUBH+e%0n~b_6i74crR%r3qa5ReNp%VpaEX(fb24TPm_0Uo+todcH5xV{S2wq-Li z%PdTM!3jA%%K>3qqlJ!%nD7TeWkw$R7AB4en9FfM8La$iA{wzruLHT`U8sK0EdM1!?x#$2B*VnY;7xj3J zSP_XQ1n!Y5S%eEHi5#_u3qKIxQ?E<5m-fHon0H9)+srnSf;))IognM~Vs4D=^ZPn8 zvBe=pmF7*uV=%2@VfFV5VX_Z2%jO{Tco#Bf1WH%2ziD&mbOTd@T%I(`eMsx5!|}0n zT=*q0ewsfEh|~Ozc1VAM|4#1Ln*z;2;vq<~&Lr@N0lfw*90NPUrqfh<$aO3hf8m@e zf^Q_Tdm{0~v~KM+!|J~7L`OCv^3MwWrPbH|4+4{&nEk-p3NA<^o ztU8Eq|5b~LNu)YChZIVm87u%VS@7on@4j+0Ad#Iv!eAy7+-3HQt|OMnRyKnk)zB6a zMJV^1wsye$C7a3~rT$tV>zR1iDC|$6G!HR77}^)h4%E;=0B} z&Yxf9rpK=#MJTiqtJ+EGvUPiN33^?eSMMvNOVXPmp+-hrF5!8Gey$`5n46>8#>jn& zyXG%5soWz~kH&*;CU5bk94?=|bSlTz3CEW_o(Z?GLcR=KJuBqeXbS)v-Z*Qbl=i$Y zSlLJ&mbe8PKihFMeLcNQta*);!9Rkz&8{b=wN#I?cwQ!@M$_8pK-wdu`wyqtRTDrtIJzgMb-8F0MIiOF#)mlRRpZ8g7Rw7zwl zzp|RYXxDtvA-C~T186zi`Bl!&F%{V%(`lpTcNjAJ2Y4U^gs2#vtW5U*#+>{>41x`s zg3a=`)Imz%F8|o6Ms_?ZzgyBV2_IxKc|u8Ne&9tLkDb!Ad{w@%RI+J{owAI;(vOS4 z(Jzd^(?3Jy?foFX2)X$Ivux=Lv_yS}^XuA7fj8GQp}tju&1OFX{3;R-uupnDK}#YJ ziOM?@sY{L)$64F~Mw~8!l>hDk{`&z7P&^Dx3wi%LHA?=Y6a1zDHsrag{yD@oOWy@x!C1+kVQ0q~Nx$SOi9gZP zG=2mDE_WX!b2UW>;o(4G76q{3UtZk{Z8hFNJB}1xeH2=`9we!9hJ>186kPl_aC{~r3Hi$i9QSX~m<3_Th42aoAXU0pM+vK)C{RZU_1=2rKng&GEp! zd@-sJSfQw)uUTef*W|;S3um`rVUkxqU2u$4&+KAF=ZmbBo88q}ftBky6dR`3OU*#H zpzR$1XG%TOS0H(9A0C-_yh}?qY90M2&reqFK9-b%WA}T+nQh$t zz7=mB9Q<{Kp&0o{LD{wB`WvlC9bT{X`1yBJ;?>b}BiZKAjLS^925@r28_ypEAtad? z^@B;3FeqsI5sVt>ao3<28~Z*Nkd#DLc5Km-`1?FRz-0t^)_J_w3ASt$zS&Acu}6mC z4h|vi96{aN1-&j7+a6CC_`TnK2JCI%RRQdM5LiC+w%b8hz+?n7P+yFBdPz{t-1T`vVz9k;iU#9% z9UTMtu;);dFk(#Lj}D|*XW;rySA?A?Zd${w@VE;X1fZ(W=>G7`%1GZy3aTR*IWVWRw?|uH0U33kYyNiW?&e2yh?$b7jh#vjaSbLU)`7 zG=*LPGbHIk$YJa*!ggV|EZ+tC&RyrP-Ri7!=Pe9w!i!V!Npu5w{*5NbxL`3d`$>Od zEJ44^4O;7ARMB28{GqLfFT@S&rVN`yaL=Bp=Ea(`Slrn4vrxX4_2PXGT8~USm0`9{ zyJgxo9s6|`(ZlTf5K_@}R@x8Y+6$ENLn|lsskwiQhM-5tKSm?cwR!{oTN@6%G{RPs*SSMyn=Y+Q%IzZPI=>l{2UhOozN|j~7u*qe)lB+ueDS$? z(Y_yK|B7VhrfAC>7|i>E7xT=!k$N|VPb>4fDZ`nwa5-J907CS_%_{deWNq1d+ax=^ zfJE=%1Edc0J`s8j#iuqi+dJ8DaMU)Z=UF_K#q+iDQuXes6F32NOyZ-Jq^y}8;Sdj) zTGWrI-ygfSkWgL7mn3%0p5evQ{2ofY7tDVFHgLN2bANFXMJHepLzhQ^x(gbGwFQGu zn;kR~gM1!^6e)l~kt%=zQ&3(8>$7wM4zyZZH26n*WG9foNAXJ%``=!&J_p|N{y>O@ z@De^TJRJaO%!SkI0&~VrC;~-Za`MjBtT;7LFPC{>&~^2w><0eHQxx&*eN!9pYArAk zR6lU7E>bMup=o&o;S_rzW)vGL%C4pjKgyTf60(pxZuzw8=bS_H_M?{b)SkHczB)pA z<~=1Vyor}f2NnWx3`9B0h#uOjwA%so;jDr`yU1Fs`Gne80bzo#$oGdl(1ABJK}{mi zYYxQ7w}=3!7`%(SW(whyde*z!R`d;x!2{dL< zT9rPj8@t$7#~Ww;zt9`IS}t9#kz&VsxmQib&&5!pI+BsCwf_z+qD&k4ydd$PtboA1 z%E3Bsu_qG*&;YOtf`D`Y^-=O8oeIrw*h^q}ejftZ8n;-e-xeg#p+}2JJyf$8-%_7 zXn!!B!nwV~m^qESiuo-E&n~E&St{E7JP2eZC6^C%=MvxG`*9e1SP@Gp*hOZaOM>(j zTSJk=eAo%Dt$-d}+6mRD+a!Kdh#7^1(vG64iBF61CWblz8vBeHtlF!z zY#q$O4*jf>L$%}Q_nKEiKa;l-^?X%~tZ*}_e zE3&&xjf69myW;xq#(^t~{ThEEN?Sj@aPzrHk`2v zPPDxchjA=0u}wWOTCm+GOqhz6nu_DK)pNDjuNZDqW+&bgFToi6TC-n+o@zOyd zI3tVPc<}1^Ko$>#MeO29PsAXrJ9}Qd;=vAQw^|7PU%sIj;{Rif=DO+&{L`l86#{7i zupn!OB^vqff((q4w%o7msV-lLY}JAj`~gaz7S1)syUVe+GIKu)nQdO*J#Xc$VUlR% zpG|koRt~;664IXGs74*YQ}2ZVE%*8$33gKO+FXY;&4^?KIB-Uhd`NJ?sR% z^7Fq~9(1HtX;GOvJuQ2$G?|b6)KJtVUGVKG_+t~pJwjbgm;GN{tlPb|1y9R z*)h?SIR1WVk#As?dOh{UDfj(2|JwqYa|TEY3@nlN{oLKxqm$eI6hq+qOh-Na^Hn1+ z?@M~^1B%Sa@v;=+tDEvy{noim<06|~Z!`LH)pLytX-Z3_&z-vxQ=yNX*${jITHw36 zEI;vNC)($1gXSjsjsVu4n?2!3PM-V*$2=TObwt6%bj`^|Va*QN!q+;D_wmspo}`2( zFaB2BVNUWSQ>0?V`ZDN7bSj7^Wd;5_lnJAaG(Pg@$HtG!*Op5=v%>6gx=M_D9HlN8@L*SMW%KYm1SNxU-G}KzjFn9 zt@gCPx}AabL_TZswo+zhU3psc>~(lNAjB)Q5EnOHfUQXiJ~Bns5CoRILo!|PX@JX< z9e>lMq5cABaQ~4Z#>Oy$q!#nAkil&LOhh+8O6kvVSpr7|$wRuaNSN{zo%pJe_8T+@ z5WI|hTg{7iZc&<1I!dNC4JVRxvN|MabQ#<_5KOjwJ#-vyXQcTK7P$CkY*24-uo!xa zt>jEP=!3$^fv_=CY8~%`+)no0JiF_Y!bzUd)dekPp_-7h6oNN$xwO!O#La<#G02I? zGxubd+?`?xhm6_=_oy&46{Xx(0$9zIoG#f8-U4n6}x&6h5T zH}P)%Yg=K-KIQZ>j-S4}97H9cZXX$H`<$|&!=3+sMngzdq|BuzpMY2>{$TpGcyp`= z);uo++YOk4dg37=CEp6t7c@jby9ytk!Htu&v1T*m{;~uZeaUfl6+>ynxf1n-GoxZn zz>xQGb{9f9*P%b?58ZBQ5+Fvj;aYg)bb;oZP@~n#F>^y1GvR?470;Ud@+E#o7!Ys z*9^11DmTdqlX!p<9-x)4MhDOz>(KPfDga32U(h-P*7E5em(g4Q2aKq?rJdFQ01>{} z6ih-R%f_PiYvHr|9HxelW3pMzoLG?`odnIf8FE(_gzR)c@kuduHh~?clJN;Gg}(w^ zVN9Y`u&>;TdM|mA>VF2*X+Li$SuD?oNFwHy3eZzmz&uD z$6_zsXf;!(*9V}o7P0WFJR1C;(*^Qxd9QlDydRf4>t~a%rwBQGK5yeCk@DAkS$H#c z2;HAo`tNnCOmpqn_&21Iu->)js%(?R!k^-q2?!)wBZs!@uSK1A*R6T@=On%5qVr=~ zW*;~u?uMFAx4fOb0CSRugBk~=()n|e#2~%r!BuM>{%)={Inj+ieSj<^?+MP1P|(Yjgq;*{$c)oU6x`(%kb34~O$`-xJfugvuBbmB#Ad z{xFBW0fPahesL1&sOcqUda0?Oj!E+BiB#(%ghgpvr2uh2UUX|f>^eF1F%9W&N$9_k zLDmgcIyLptYK~UbDGe(+p$*bT$^{6{%C^6)ydM0A`PxV=vUm92o4wTvUz&Ly-j)Zw zQ(Cr*X#)vcif;afBd_!F2Ij8SQ4`kpMU;&dL4t?0P*Se>$2(hej79RlrVN@y_sh_B{Irn(H!TLl=wA9Ay2jC z-jd!s$K}15G{L=R{Ci{SBfu>~Bhd6$H`Hh^*|mTKgeesv=88feA*ZA~AgNgjkU~p{ znObmB1|y{-#KhqFFC!7o)VjfBkgI8&^iruXR>ePvR)!Tk`g%`@R{1rTfRhH*FxFW;?t%0d9z$6`djO0M=1M!@0PypF z&*&KI|CiBWs{JpcgQ@NdXa|7NVX6f%IEKWJcvYJagtQqIOoiFze2# z*=R|P91=wgGp?!|N^7n9IHO0OX^b|K#s-JXaY6no1AZn+*cW=Rp*Ux!`H~=ssT)|w zUyCKoG?6hJZ}3BS>8k=PFjNgwA3Cl=Uwg5~v<{(9!Q`}7mAuqw2APx~QIYyOtyMR{ z^3ymB`2(l^)}wB4i^vO&4VbDF04>SZn4xDpPC9q4@9|HkOJaHmH$2Nbgi5;Qac_z* z;d|$=RI|&kFxv|mObfg}b3DVQeA>+>!yjcbfzM0VA_8#5l=acxK2r|Wpz6snf14wtn>!eJHB<4TDzx0b9r_l%95jfhT(FgUEE%=L6X*4tYO zE1k`NM{#AW9e=hiU$mg-A87B^WKlXgdnaeKl5ZEdBfLnI-QNB6r8}9%#VG{O6&dGU zw1X{N*d6}lLoEtjginb*DM=^hLD3?N{gBOW+c3*b3Wp>n37JS6{j2>Ad1${!IX(eo z6$mF+0mK*=)D2o(BFu*&f}ov$xM1R*K#r?^7?5W%Ey0PUx>VLu-&4bdDL+nPDOEJ_ z9?mr>8VeWQM2%_g1*du#_D~h|&lUHA3tn#Y{9nZv%owW91sAX7?T5gBGjCvAL~(NQ z$2XeIR}OL$r{-dep6)@ih16r9Rfna(_YNrr3G@C5L&H|dZu25p#=SvfTE=!%9W`h@PLqfl6ZhDg`~3`$s53&^$RZAxcm@D_cCW? zvJGP{(UiV(v31c@QiSaX?miiBiAba`kIZaMl9EjEC7R>Lmrn*;tuogOwa+19pgmx) zsTT{d$_WlLH>+tH_L?n`adP6rQiTq$JGB23ZGBITHI~a+e=zsv~1KsV<51^YZ z5;_vn7VAC2_zZzOAQb4}a-l_4s9qlZV6ImX4v@ny|g#V1!tUwVGKE#Et4%j|KV# zARq8I@Q{;e&L4A#u8D>BP0H60i7dLI+;1(V9jA6E_k>yDV#{FS`r8|9I66PYet$)b zxI4+N0KM#}IXlUo^wab|wAuMS(g?rVN4Xr3<#vX1d`Dg2+gj4|Mts9_@psIDJPD%mLf7}d zQT=3Q@r7SbAy0G?gW0r8P?ZQjoWeO+twpRF=g6(l!=@^2A=n7i;?9J%H3Rx)^%Fx1 z@@n(L<{#;2Ne@nF;T^7jQ4W1R?%-w*nA|RsqYMFC_b6wSMC=|;O5#HRnjC^j~ZQJaDYgE)!3_bawE#%qoP;qx@b(4`g>?+98zi`mRdfEK`* zYKrxFs|Rs2)x<-Hp-&)ZDyHdyzUj6R;6m-mN$Y%*XqfZG(&4g-gEO(Apur9r8Xp4{!FB_9~{DW#-5!aZ8S+B`2*z93e zNlHl&R7__Q)#Ey3iJU%2K*|vrFXe`&Ouwr!;VWQ^^hm&5^`tfKA&H~4_^z)qolq7s zARjOQ5IUQV*Q+#0d*i&ZgxSzjW2hDC&23H;1YE*5~0 z?GTD5YJ_I|$R=Wvlnj-jK_+<{;eSgywDbc1cQMKA|Mk=x4{<~r6H4lOI7Sgw(@K6>Z2 z4rsXsGnQLSiQfS;N+9Ph_4Nd0;CVeHICQh9P>8|lACt-1v*Vdb<;s#M` zdc=p8-TR=;k3=b0G8GNmOL^3A&~PN{V{eVdGgD%P8sPVj0M{OG3oOiQpAGu_N(qe^ zfs^Ib^NZx*zTE-weA}%CKW9j|I<#a=5UwSiBqd;onJ~pjf)HSvaB@EtjZbJ}66AXZ z(rJoJZ82HQHmZp7jx9yZoElh5AAsW;r|MCG`pYKcj^i1+XWHa7Czx;bYl)()cGY*+ zJ%=8c;^t(X(#uF>brGf@H@4d>oB|hP1{2QFm0XLOP*j6Bxa7pDN0ik?an7)KgK1BrF6z-96X?9 z^>3$cX8rXP;21v}@0Y{2XyPt;a)!;;a|zAY_hKet*#$Rw9O!rj?`9$VC$5Xzof}$i*z$j77ixW=!rGFej4v8q%~P8 zoDD{6tXim_4QggOiA$i4FQ;mp3dFczWe9RHSvj2zTKIVC9})GL4eBx|3?6lvD=z0U zmZOW)U2y3Zgp}#NG1wlXc2euk%U4T1iXQ_TPds?kMWrwHE`sZ6dt3uu^sZ=5wz{*+ z7B2PXPBEP+Xi=+I$V^z{485p{q&;~T4_=(wNudEvP+^a^6f25wEU0_kM*uK~T4S&U zm|;l2lGk?2#R5?~50i{bMp?#WP40q*EfRsnAR zA)#@Dyxm&9;EwEGcG#ynI^HPE))A}2z%1cr|)q;}(nZ{n>ugimeU-inq9+bMBR;Q?HvW6WIo_i?V4VgQWKS^W zLz-KoX}r1?nSMhAhP=+uN;E=uFNjpUcC?+5?z~@16}b!*n`GoqKQOw$tEvf|-r`zj zXqtQ_0%y9t^={OjTL^SiHAPfvW^9!pwMZ1J$HP;QG?H<#dK7MN`c!+2zR971|61sT zic$R@r)o)cQ>H1G^FFF^f0zgg;|F@W2F(_OkfNHe7d-ZF26KfyY7C_3FvM3z7qNAr z{H@pi$=%<{Hh7*c|GqO~j7eN=gfVU~eKl z<1%2q|5QqBNDXo&)XAp79(8ZhYdh$^@y_JWy=@ZEtpjQNs(D(8mC<6hkm{F}m5cza zLDzRwl9NKG%8j)2{&B;?)Vp;{FF2km8zQI7<}W02XRN zURD02hNZ>1GwR|UCCpO(u{_|j^ctN=ltCI=bBm8hXuHb|3AW%*fK3!edRSijnA4-_ zXhd?Xf|?=n$ok7Wxj1Ir$grxFQb{YVWubCrtys@dH+f~UUvINnk4eQc)BtP>KT}%N zVj-RvT5#xAXfqwJs*x}ix*C0D5?^L>_K_%JGf~t+Nruw99*C!rrx79|37ayLbUp>W zL$J#mOmi!Z0vq>~a2g=Ysh`y6{z!R+?Ko+jJf_ytG^B%B?Gz$|x!*N-pZ_OUb|4B3 z=Aem+KB}S2AZw_ZOi%s3i#sPC^G;#`1zq-!f#H*-Y<{uhn01#e(GNL8291X4g3vAj|XAPZMERxFUyUr}pMwGV6e? zf(9KYCCom9CE*hAKXa7WsZqQkGLA56>2uhz zr(!hmv}a~fQnL6^N9W(ZLxg~4_fF(=a0SK(eb>JPzlG`UB7Tw?jq;NOXPTC4)|g=V zy`8I@wGFy~Gb1-&E{=EVu&U7+8O^JVdrdNF*F|BdYgfJ5*i1T?KT<6^^iUaMCrs_o zdZG#p)jbOfbe?09H#*nZ7%zc$Ftw6tN#ZaT;$)yeut8$ia&7eHN&z=X+39Y*%JQ9; zR)|1+OHp`)uR7l!f>~ zne?Q#3@_{HAx^8cmY540|J(XejtwuU{}f)p?3%~>sqHVzQA7myH8IZXrTJEYIxEYj zkI}%BJ{WfabNl32A*F?Ez-Fyd>n+2I<)()@>iE3N(AefW?*kjItx1@$7##E2_`Zvy z5oU>?(_vt0n9WC^4aZ@Y`5LYMU^L%jByoM7Z;!a~<>Ex}4#pm2^GKcq&hhN2s}O^Z5^i&(o06f%sXWh@J5#7 zjDUcxjG8Uv<)p#R+1~RuZRhatMbLSmzg@n<6Wk$$iElRVWM^cvdz(% z#cVaQ*2=(%T+%?pl^^f{X?9$jiXVXh{enYE6Bd$p1#y%-Tcw9fHG&wf=EUJPb=Xic zDAj}*Jvfo+s+QyvXL=F2`Xq;i@7*63(<6)wPC z1acXbv))8VT@59;sTANM0lnt$*b%$I$!f0WvTY!HoxuF~XK7uW+0@)G7SMuBU68NPc=0R>PM9su$`|^)KXmIWXDFVY*U6tEF%Qmt z`2qcJeplr23pqnf@hpTP? zfdS5}kDac=o;@>~aem`!B z1i%S)A$h*jB{AmVoH6HpdDGWCqW@O8&OF@pZJhiPQE)hKVM@@^Fs;Er zSLAm$sE~W5G5<*6*&(BZ*Fk5Vx|Zuf%hu|e5(eJ!-xU3w$vwRnVUKLH&AZSO`ka!V zICU>Z(L?G4WU{ry`{vDXt!E@P(DFpr{PYW&?nxfl zu-TuH-^%;9jQIHM+3=aBWGiwWrB!oE=i&%07B*tfn%=b`dHtQ8OD^9#hE{*FuA=FB z_cLv9eLSB>JI3(azFv<%x8G(Bx7BN-ciamW!xVi)RnM99IT~vCouRkbpo!(n>wTM2 zI}49@k7-T2h~(5;V4OUT2>n9dkE&i+#5)${!|g!nX8J4*n-`aUu=#}Wgf;>82m3D!(fDa3ze>YmZu&!vZ^vE@4FT5I6%m0mwy_=lk{I4qU4M=z&s;Gu^@q97eKQ4!r$JkZ%hE z2e|>-qG^LT?sKc?R2#2a=J4?xajpB?1WAX`j5ya}Aa3HF#DL;}*@$#0<8CEYGLH1G zn-|nzq)4bqPYkf9635`?m4=?w?QT#%BJV;CK?QE^5a{bsn!ZT3(`6f=8cNt}q{kEr zrcrKYf5buQO7_kb_?zzuQ}ov=Pe0KX4xqteF3amN8X%0fuw7&wgRNx22?kiaS|9E$ z;a>&w&0AM&x+8j5T!v<0PC({%evRyW@Xn*PY}C%Ix@&HNQC6RrOKdcZ(#N?gWSe^O2DKxA-{BERp@6T2 z#3qxlgPC3B<3TPX@Pbp&YKyRlg^Z)5jSTV%UVkmf~C+adL?)g23v!Kg{+gI48?-dco+7dJXWV_Un)(^yiR#{yUk9C_AoY zv^+$r!zfM7Y`ejerpGo|9v7^Eb_I5S5UXr-jKeJV%Az%R8GmBpMx!{loi&WAabUYU zPuy=6xecoqo!fw^Q-5<}hOWBL8Y0(l%!Cg;J2H_QyfdSAyE2{KENW2k+SPMO^<5g5$I z7?Id9%maNCBzS41OmQMPNkjrJjeK*eQoHP(Uh!Wb)9u}yseCyRCQlRrtNxQ5u>0r) zQUN=P9)FRKg~DE-Nu$Vs4d)lKeu|HmiBk|+pT*xOCI`xK-Uc2?K^upVADBy;`)tWb z@yb$-A}?5LAL!913QRVy$nmp#c}1pa)^SKsz_JbHCR>V@KFE|k$TP3NijR}{HEz8i z0ZkAGF#WCp5$r$hlu}Q0I-Y`ORcw`eIqO zk{MKcIaMF8U#p`Y2gXpiL8uPjWzmy`J$<6fxMloegz+JX6e&3{lM|&Z*jhyeODrPk zZ&L*~hQkdG1KU{4Nll|H;e0fwStqQDXw_6uWQgD$0atTHyS38MS?cP>zrBz2)`ue9 ziyYodG&#;jLoAAy2VqiMgr2Q|N^V~K*Z|(=(PTj$n+HWPMFHux#?XepdQ1q-cFMeV z;Xa1`)7lg|))o4tSLqWcvT~9 z^0BB1gn6Tw_*KnI5Mj>jOJGTIdcF$p)!AaL1Oxmwbcy~%kLc$u0BgpFDR^rtNfWeP zY=g#00;@y>x!!QX=(lvx1*~3fC4W6h`_@SLh8Fc`yt+2OKW{dtx}p_3$kn-q9~|O~ zk8`W?Xt*tx*cs|c$nvv*l{L6q>w}ts&{bLL5dUf!Td4T3uHI8NEWex6HUVFyBI(Xs zl8>v}!n7Ja+-~GptQe(zo>G?;YQQK2Gh&W! zuRPO;AS1j@%-x(6MtzS{Z`PEJNIsb-cpGxk3z5Ko8~Fl8kH`~EcGNOgdNfXaTci4I z=m7BnPwtx~`*l9eKgSPGHvRpvzbzvujr*sxn8SmLH3nxBs9{kH0UF33O0Ovb&81D9 zA>t)N@G5m_6hS-SNCTqR$-cQcHt+;&ffORY3%$iVl{+IhX{md|n}~7^+yvKR=e!8G zf)3@F@wGd)JubTbusu$w$`_b&A?H?)O{cAK(ppiUU#?p5!QT>!bYNBsh4%Ffoa3Uz zrEb){*cen8JUX(6<*20KtlTxc>DPgn;PYeYu%W_bF>u2@ti`i1BYW||yr!_Rsd$Fs zIin@7Sk*8@r{Z~?qF9x9SCnQfa3kKFWN`;vv^&bs33O-}$>mc6Z8IMVX1Z1pQI>dd z7Jcy_bW`$gY2h#&>8?Ly`2(eOSWTz}LzVzHl&q=>#~r}dCA#>#R>r!-yD<}1fYdbf zd@sbOVB(O@p!`+V7++BodWf)Lujr+~9aAJ3GZqT#q$+lb5jCbEr-skZX6`O9kR9KV z&O?_t`W?;Bgu(nV;gdcSABiIvrB;-J{~IwU2$ z=^3G{9BSf2ZT}MMTVCFP@9RNt7^3YP|1(>;n@~5mWi={>tC?A{W@(8rgxzYubXjxi zeF(=rL@ZJ$Bj_4jYJsrk&Kqqg?uprUJ>q@O6oCus%7onAedL1p)fI-zcCsQOu)#qH zXZF5RCJC!=wC5Yl6=SGiI2D@2QMlW%Nw$i>aY8W%Q_tKUF)ccA8Bu5Tx&kyJK9uCA6wP6mmL8B9Jw}j-RIWGrU;QV+cj#um0u|h)} ziLIf{{~?CPUf=3z<{+$>j(a?6vdI}PDUf`g1Nl7C?CL8w=@S4|fu_Vr5KtHfyBa^yL`)UmrRibg_N42`8ew=;@nBpw_y)Jk#` z{@$P?8=n2g_|~O}d52a%L493t5%Hc|qf68h{5VrN$UGp3tLQ`ht&vCNsOMN`s&D;z ziKekNb|`2PR(AcDFNW$!%W)N}3OCy17i&!U(9u~zxkCfs{){(bn0Dq&F|}zH1Xv-({HdApygLJHj+-nAIn^U&l)=HD4Q91Mm}dzdway)=m)%0E>esz3-|J~j3{&IWG-}8QZwzr7y_I!V>h^$-T>+SQw z?eQ2&8n?OGlX0h0Hb;rB*z`}Dz^)fE^mM`d$Hp;;KoBM}KQj~G5wF=P|twY1r3Of8q*;M8p zTSAva)Q$u4tU8WBlJi3!(ek{+w6H!QB8!^lz#&^jfBS{twSkMqU?ntWf}I&y3FSKI z{;^+sTB{m_xeL7f7ly}IXvS`#+9sKswPj6ODmRq!0p8P|Rmrj_%2Fk~9pINOJX|S- z*5_yO;lOGANJ`|R=)xz~nHSWh_walPJY5R+Eggy@A4(jmO|h9Zo&*Iio4Zg_?lFqyTg zN-yZU4|)LCP(5&iNN^4$_Y+?dd7*S%Gj76C$6RP)QvHNPP(8<8CYgkr{#X4%{m+waxE>7su@AfvpNZ6!Z*#1irQoC)w{I1%?L4qA@_dz}P$c%=V~Z zlb1sKH`;Z7O`);cqU#S8H4L+AwkXx&dL(-NuHsf531P6c7DRfuErkFoz{*v%`vto2 zjePnp3n;Wz2Oo$FJg6?$ z27SyW_ng+dZ`r6pqlZVxT6+kxD{6=e)*Wil%Ug~phOa4`fvp1%0=TU!_XPsdJY1I% z0YU-aeC`P~2GWRQ7?>?SU z0-?}%3Wd5Ja-ZHlP#x>O1h#HJyl}dR*@d_i@?}08HTMYLcA`X-NiLF?zQp^G&k8WZ z1Dg0~iQa)#mx0h^KDM#fqgfX|g@y0n5v+_V4z#+VIyt1iYDOC2G_iq~;AlQ$rn+LK zT7(-zoGBu+Oz12u*K{)Q#gc;^<@tZKe4tlBCL=qXqI?k?A%AJudf02TcV%bT4EQhp zq(x8+EN;UWPo8gPcEE+55d@%zCXwHor(x1EA9@s+6mKn?r%8_gH>^@1sNZvInx?C27bwG!{^@h=kjpzUtTj=Z zp$OldGe>Q^ZlZ78XX~BNL{FZ8%xFPbs*tY}yynFCbA0{<9{!O$V}(Pjx3?sS9a4d9 zPW`4iu&yXJ8=!#jdfi}5&ZISDI*pYS-&#KEeM`0%w#6cPGwwZxkW(8SOL~6w_jrP$ zqk|5%v7@D^=W}kmVs6{u)K2v)>+;Lnbv~v7dxo4|!t0=?n8d5-h+IV0v~o%kIGHO$ znNN){oPiwV@BdhuHCqQ$NNK_u{v?+e>RLH(0+^oM*hXrefzpNZxr{L3a0BE#yw}!URLRF^Fyv z)>P8SF60C*Urlg$feO!BSFK?o4zli&+5@AXd%ML;A6;#6Zp+#M;=GSVYm>BNz))q^ zX1K}I&B_eu{O^&rdM{5no~80t)WuE(Sy?rQCiq{qP^F94sFA) zYSPMi@_Y7>g_Y!EBRdSX+b-Lmn*Jgk9UGwy{YAoPU}*ls2xFwyYouBl!enZ&L1Ba@ zW`o(lfHjuf{W(6C8my={L=y!HjQ8)aBuWFL<1eUDOiv@=h*h9PKNw;q7f{dOK65p16v>HN@put6vG_t*M;?l` zaf*Z!Kqx#sN0E$D0aUbDZWM>FVh4Mtd~F4Lmzc~rBCk0_zz-O2AdxTwKUf}lAzsUt zu>eQQc!3{Y*n&QQn=T&#ktm?iG5^{J7_fS000UPk&<2r#7hq^gQG{bC2evffuE7M1 zR%O?Ua0)f7<-qAyv6g;z!f*`#o?7cI$Zn#KgU-lT+#m2h907$jFJm<@B<}*s+=K+= zxq!Bw=qs&p%USm1Gc~|zU~oa}1XO!iUSJ}&hz;na-D2Z1n*R+GV(z`^+p|pb3(w|h zfacONPd15(|C$L3D12!=HMkCQB{kS#qEDR?II|$vfO=Ikv`Kh&2StBK z@gdnw_V&xE5i9P{%Gt?|#Y(Q49hjRNjvvCf?FYM=CCFE3{N!gIrl~-(T?QP6+{=r3 zw)NBwzyqfsmQQ!E)6a1zfusakO3^^?umWkY&nM|PUAZ|)ae&$b7JOu1mN54^y>}s& zS&l+G-p{)XmZCWwU%tbSvV&A z8{XkWcq`6bv8R?H;zuY}MRcTHlt$wsKBW!LOZV-GL=#r&p6;r3+iX0@pa@qJSX>=^ zRRe5!ilpC4#iUnz#tv7BOP-{kQ!?d#gfUQ~g@q>+j0VD5tc|25cLd6}1fotX&hr&V zb>@y*JpRuOw^&P3^T_Cp#$1#^;HRD3KK~?r1A?_cOHWs7I47Wb8nZd%9fE0S5} z9NZ6I#rySM@&6NcNsRCL;^kWH6tUCl_L4%5;W~J)&h)x;Md2lfCVVcm1!Y{Kld@dY zU>l5jd@Sk9lFUgQ#>&zDu~ zFts;LlUm{YZoLh*#WgyAMqFN@`;1}U;r95un?#E)-Yv>nag33CP$QMoIS!7yDNFSp zpHzRhn3%wbC8xMCGJ-=`LUARiDrIx|bI(;ee4CQ;OBI@Wkx9VNOPs4IvQ;?=z)e8a z+m}vgPEtMY4OL!D&^_+OomETMa~Gr)>vF{vWMP`c#Y~uHdpM*6%-`F>ZZsUE4@%gv zZI)P5eH2MQsDTA^C4l(QagW64r#mSTm>%5Q=g@NZkQ;KKo0v*4)&UV~ym(}ahC3w@;A zcm#7%h>JG9y^ISksvplLvHqj21HNZ7#@xA>9=W9n6B_B?g>0q$RAahoBb%WLP2~x( zU!7X7n%+uPh?Ar^+@m;o{*x@ufu{#%L3d8Te9YErUp;ZK@N z?IFT2Li;$CEi}ov;2Kp-W-nY&)}&6daP~utN5f)^1_szbAkJ%wOTA@^&TWx!lTDSx ztaN7W!4JIuV25sHOmyeM{{=zcvdFmvqe&CDd`54JQ+E_$VQtkel#Y*ez-$;6$u;4L zf9Z$`T8|dFC32fNKteG7NK^dd?U=+cQ)qaHf($wiqV;Kc+C{*x;HZC3p^0Cq>H!D- zVpg|h*RZ^0!OTk|*41j?U(m>)tfH0&#k#g-L8dkGH2L0|5har9sy)bb7%wK-XoVeJ zaWOhprFeyNpm@$4o)Yn|)|1pm*#E2dS7WOLX#KT!D`QeIlwxER+e0Vq41NM;48JrK zD;|zarZpIP*rvJ8Jiz*UkRx;rT{g`Ic~7eB8(AzatCBZ|FV+fcS|A<(Dt&C#yJA$FvnbT)yc=cg@UC6&t!6Zoe|*QPlDVzYfc=Mr;MC(c(17 z-Y<}DuaY6tb)7sEuNJ*RcZ4Luoai&K-DmhLb7ru6-HI9Q>Gpy(QVNv8qtI5-VB@DZ z++`7TwnUrK@eZ=rGAi!8k8tF-qj`^F)zEbNjS<^}5$rs9y?6&(oq=suCJiEM66}VR z!i|T)Rx49Ot2a+B`D1P8O%LN2cZC=%OsqHYd321l=X1PL7A=k$VphyT39Cq<9qd`i@A| zBN2x?dG5hc_LGY%t*85Ro|qK6NKBm*A)U!lgMzy6hV3vSYN%Eft2UWsr!M&eZD~40R-v zZ<0)$s@sQ0b!TbaLZmv!Qs@#U)j3dVheKDDF2Pbecjg{2wNuE{&iJ`q8?xdWIMpq5 zYKP#d9XPl9$elx|_GR}S*7PnpQ(tM#J)ElJ6u5*`?F9M`u(n(Qn;mBeuR6?wq(!Up z=+m!qD}Ft$9YmLoPL(g|hcNm> z=B3N=ch_zli-367{oH1K$RQiZwLgXR;X`l#Pvgj!9=br3Va8F!`@YY4xG%C|e~^W{ zzjreV;m)g$`6Y@;FM7vR-mv?pPp2p*3=ahA2Af=g2JxCMaPGVWLBcqq{ocHw$d5^L z+=@CX#yz)1Z&l3mpAWo!gS5K}7}rLoe$`Bf&C(1qp}apkwO}PZW(u>O4#M6F#%Bp% zy~NBTH^_zunB=1jK4Q}xTv4JuvMqL%1nL_ zZz?qh+$6=J>te?F-RalDbF0^RC;&XLyGV|6=UH44PNMC*hx+&M{!(<(dEN-+w}cL$ z%-gz0zYpg9YfOpw*51X|zW=fC`Wf^EknyE(7oe6{cBs0&iAwDr-W0{{2~Hh3SHBm# zXF2s=oTlJzQ;r%R85G6YUhZZszoS&{c2AD$z)c*xTKhh7|C`@l7Ukh`6#Ivh{rUkN z9#a;jv*(QC1Iyk$x_jNYJ-@6Y=;TZTdb@{Y<(oevx;*DBA=q&Pb$H@gl+Js|>Dgyd z935d*>FN$!ZQWsz55hH8m4O^&RdIVVT9kX`kJb-L>-c>U_UJA@Zi`Il09>yOJ7dbASlr*M-Z<(T7OxORTjK(l z3lIVJ*1i4rYVZbJAd}0%fX;;)zX8MY>Qg(m1QXN3Y~#f(jhb?=w-Xb*fjAIC?Inr> z?7;?V(;uU{V>5;cYnlliSEF};M-tuXFq7Da9Qnh8Zl!_%X~H2&UjXVVs1Q zDbsj~WIAe0qDSS>$}oxuhowLy9*H<5L4fFFiK3~HOy>y>d_*Pitm~VD>FHGPa*ra} z{0fJNaTvxgK$HZ*qg0Rvn}o_KL<@X9O&!n3G+~dj;LOUp1)8cTfGL)0gfj*EDuXRQ z1(@-l8$Z9rOjU`4guH@`mufO$ml?p#(Dr%XC2617P>?3+Uv#4C8H zAbKkl=8>#PjH0uPH@_awDnA3@Bj!;oZCBOngcGQ_K<%1s?e`anKd zP!h^6gnWj*^l3$+EZk+t?+8TzM+@=-tT>O^i~W6{csbQzvY-CBe{(c_zE4TQakSh| z&HZfuyZWmAdH8(}zF81#^C7M-h*&dKON<;xNUcY@`p8e0S*!+MVI~9)ideQtHL*u5 zS(J(Z(`@YkTahI2#oXK=$^k_lSw{G;95w@-$W8;u5vz;J`8vqpgL?o*J_z9&P$YT* zNmPQT;uB7rW_yWw#!JMBlSG)W_a$4v^Mn)1_I-4Nf_;XU6G*)k=E&m-Mf)(u6N!2x z`N=f&zsp6I?;FIXjho75R7m@B)mY`t-A89%9b&(6E4$DL9u5R_-7rMoz(-2%N(Z1?P~V zJ6`}X(`+Ip)@})!!|u0TwKhWPSJtb}k!CUSDqF`#OvuTSB_J~w)7|4d@$&+EVqd64 zX$|*~3U=q4Epp_bJVgXXO0^{A@#b5#B85u-;=TjItGBc1M*UW;vi9!Yu8s6D6E~Ni zuC6YQ4C8%Ss+zT9K>Tz6NMh`fC{p$|25vE5fjRW9QDc?#e0Bh3(JQxW!CWJhhj<6~Z6s3bFIral| zPNHa=X7x=Kr)*|J_z8ze2x3Gr@g?cquCTWPt?FqpIJwQhHA3+O2KWY*=UPfw6on8+ zQZxi}v=C>47ZBF2$itkWU@_PV#Kk7tirK#?@X2OA-R=M`ILann{H{2dnWi&IR?I8% z0T!nXMJy%}lRHFAf#^#d*A#gO-wa6M6hU85)HcoWWfdpgJVUTTFlbc?dn@E!gG7+4 zn#Ki%Au47ZQi_oeWGC__qP|NRSxs~cV8M#=B`z)Ifa{_N;3ouqM7L{o8ZguI_m)W% zJPM{<{Cif={7OP*=|V4(AXtN2igPJCJyKhsKE{z3B);4jP!{g*CcP?sHBr*X( z&Lj|D5~f5h89p7rCB#u9HOPu_l8?*k4C zV{JFd?xRDQQVQ!J^gI-EB!iMxw2C`B6(ynkr$-_ciJ83szyI+_K}G(rndVRYc<1`x zvi_e3ER7#Mkm5fr2L1oxljFmh{{Q63(}Pj}e;?&R>ih0{8IM=Ec8vp$F z4OM@EMoq_`f4EoWevYU~tAC{?M2rlm7JFsIbr6tSd1#Vcp^g9}Ap$WJGBy_io>WL9 z38ExImo$$hh&C#BSx0c7{qK0dCh5G6O7>C7UY-3>$$k$?_MDU0XxH<~wrX`4#L)#M zoOq-uaBXexzP)&#SFWIvYtxfBCX^!|z*u_IG;CT?0x|XS0f>SnuCN&kTfxX@D|n6e z0FD5mKB5A2Owj^S6nW`#H>nw|jfy1>CuU%hWAgo-3-2C|SBTCM%$u~&)d@c@)iunw z0t=X|+pHv)vzr}vAc+MV6h9qKj~aK7Wv8ny6vv4Eoh4d71UEx6s#cBqP`ImDAoLN9ITu5H7IIJ z^gaRaiNfO?(PjnF1Y9Z(ZB-9bbQZ0RRh8nVsP<;@Bfde+Lo5OI>+KpF7}RrxkA90o za_wfF*RCv)lw>o3EazB0_&L{%wXD~yVu!5gMtsB}4jRl@!1Rp8sFBn?gV1Q_yoBDM zi+p%yK31z=RVvBf#X*LGKs50b{HB@0kq}#yON*z@hF+{o^fM_=mV01dA^g-D&aOIX z@A8_J>B{tlC1wuz3i9kG(SWMd(<^nz6kHI-@H{|S21}53a`kq0c(7Og*J0&fM|%yB zOW%*D;HB~xdI8>(2u(NVQZr>Cj%=qTuUVZI9BuuyltH>pk0MbeU7tG$5Em`&@~OLB zA-+PibTT%bVJkwI)RUH_3;;tCErF2l$!!F1#5jV!ltbl*;>7y?`$p#VMw&a2dU7gG zH4;K`s!2P=3PmNN0ECuyj`V9o4cc!2UW&_z;F^BrCa_B8Q;&rEOA^3nxxXa)n6U)0 z{gWpr#|Ldo(QE@?5uS01J(K2tmet#s?Cj1jZ}+V1m(e7+iMx}U$4XU2-9C}_OvMt{ zxf$qBsoTwUM=nN=QFHsnN=^SO2Qskw*P#DBc=~ix|9f&Y`hVX`d8qo|lu!p%|IT=J z$FFFA<6s;{FW%DnVuFM{HCpeNRVy*XRBFlm+9fkdCK6f|ZCNo}UDZsXE$;w1r`aUa=7lnc-s1QMmGNrjR~GT2?1G>g;tm;uZ!i+H<|nNC7t5;63?Tg` z<^9x+y9MXWK~O5poJh(-L*6jZZ&?3S(f_C`QugX~FfEW?|MTSF^x&kX|9SG{ zgMCEVe(8mXNB#Zp#7a-9%Q0$vMvYH(_D7A+eQ10t{KQJ{Q)ywV{Rt&^X$6~KFH$*$!F1Rik%gbZv~61hTLCM@Mckb!wdwFE)m_cc!-!j*;RBSwq$z$ zNcjn7U~;&ZzGId44v<6v4l!?ibt;C^yj=%>ychmnl-w6 zrQXD%mUfux8M#=@jX*0&%s53bY?un&zybJSovBs#Y9o|4BAQrCoGEB@jHrk735ROV za;ibqITcc#kwtbP;zT<(#T}<$miy*sE`0_+r=fe0;?`9O)G zbx)h-!iho%;4nl!h8zX!G(LwkVc$~BQ59GH-T?XjC<|kPiQ;7>#AW44dx^w#8C_8F zXVmUFD*?h@mBdytjQ(1TI4vH^fXcnRlD;C|c&hWiUiD+@2)170d5uY0D~w3EY|ZRXu36!MAzGp&JwklADI)FB}ALO6YPQ zMUxLRu^ZX`Z)mCK2bBZpP^~Rx_2cX36eD z%*BO{+#m{I1W@GBbu3+i@`pKAKp*2Nn##>LYYC=SEiQY&DFc>CzTp&dw6s4MW@&?} zR+B&<u?)9#PsN{60Y(gOk4YIWrl`7k+_3Zqn zOtIy;Nv*R&EJ*E%DZy#SQmECWz$W=u>3MD4He-_{`>{ZQ6G7@RMIL5o50D5c7a
?O}UZ;<{3r$>C9h_W8`%}%kotT|A%vBGTiWP?2_pll; z+k3xR>ot(R%Tjk^r{n6P-D->dS1$Li*Rq`z3tg7G7E3ZW!;CoSuN-t!cGPKkL2p0P zwK}NI+9$(#;-q)7*DV<+MW;{dtVt?#11)29(IGYIiCVz+(jMvWm%5jujk+QYjoqe5 z8T^rR+{<&`G@!oEeAPK^DU#uOG`-A&v_Xo5k-y*Sw_96mPRcJt(4I;drlzW|TWQuu zo_--J1ZbH@i4{o1;*QhKT5^x9(fzc!jP9qS`)Qv+j_#*z6K8Zk9X&Kh56#g-GcTiu z=IEh0dT5Rwnxlv2Mj1UcD`oW196dBg56#g-bM(+0Jv2uT&7ypx9-5s^>={d`i#_5_ zlV+V5*vQ@<=SbopuwoM!`IBn&rO^aGn&3wh{AhyTQWN|bs`H*o8vk>Jf^d?Cd<*@7 z`_RV!JUlo#eDbsw|MU3x;B<`tc^~DwJhatMf&_k*B=G3b6;06j3Q{gZ;Kvk)kYXW$ zCOD7+p^&bFH4ydQpUuGR{Os*3a2CgG`sgQei*69z1GfmkfaP^z5Xc(hBxD>$KBT_t zRrMqT-^rMIKJk)JYUB}sI28TmKk-s{Y(=m#Wotsgxg=#EflVJN{kQmAj37zRW(Wcz z4NjtgL`E6>g$M;0j8LH&6_Rg2me`vz5LvEF~m^VTp7s#pYgPQ`@ec!=4EmH+|) zY?4A#NJ*oklmNj32Z%`xu^GYFgn}@W`uBjhLf$nX2?xIm>J&oCACHANqizB+81Dq~ z$%=$XW|kufok+$lXN>JD%qJ=4lXSxNzbhfU+dL~%NS9)1q$kg3@bUMZ$pj{RwX?Sq zkqGVlkx^u6B1La?DX3xX2B;+8K#rIFMHxRSlB zSSGO+9xM-2kiF!hDND^`|JGXK5H6MRNpNmO#~I6Q9>5aww*9SAgv&gO(sYvT7YKgD zGR`Vtm=n4dOge^)iFJ~hS7VBAAV**}`$_DY_MWFciUYD%+_}V1B{#ioMT#n59H+50Q?Vl5&ml=79>Z0(OBa|jUg88dBuGN^ zPSh%oCPJL82-(<_9S*%5RB_^QN)kcX^5+O~F%2qZ1Cy?sa{FEo-|{qUz}tzZ=NOt8 zdI@?rcAocC=jCO{199@aFGoI}x3lEpF(n~~I2eFba!@5w$>pPfELp18#<9RORDQqL z*quzWjy9y1TwKXfX%3xo1<*BaI1&Y@50`HRptrI{(ex&ctVzChG06%3*NgZ0S+Z4v z|1G9ynLz4KZsKUSHteZF@HGxll_Gc29kBC4oThs_E5i5%-`jfL!k`)xORO&-t+RqdL%+W&7 z1gFZqkf`3%kg$9;mBd-{@~Q4YvD-+j!ur?IZDu;|j6tlABTo=}!;&4Om=46m?jBbm z-8Ha};>Lp_0Wn3^t5J3{u&KBzODDBWE_P1E^?+j-WPWFn=rtX$=qfYpK9+k$KA)Mu zT_7!7iM&#YtJN)`zRH46lI5z7h_qH6ia3=_DhD=DJII8Lp;7uVTkG>M5niHMK( zzsvfPc3Bv4Jjs4ZnRF222)&V{*g{>Zik7$vAk#Prf(vO$tIqeE#e2dp)Kza|&d*dA zYDWkNsWEN?dg=CFfxcXMRN1W)l%7||C#sPJMx}B zd3LPFM)oc+YLYR3xj~eQV@zJ&M2+m8ndjoncZCF!aKbzosFCCg`@b?0{!hW`d>=sY z6QTGo(KZlQC~%fGOyLyQR4tK|)j;ipQUlhFSjyMiW{RnI<3Kef;1(S>b+$=EC)1

c?5`4YEjEkSK82_kCmaL_Q3bm;(yy%jIn3G-|n(32U)h}v#=v;6$Upay- z9&2Un-qvm?RNGS2Fh7>#-K9Lk^{A_|-ivS2pid0|?612v<^8F}j0qTihlx4NSF8le zpO3?k#JWGn7GwqNYm+oG(;+;%uD2F+V0; zz%&iKZ31!8!R~|q$-FJlGudv8VOssX_ey(bsvaeY z0)7LWGNDc_mTm)nUTm=1T$#<#RI7DvhXP86gaKHll`9FIBfq2#{-^@2I5%o2^a{W% zlLc$Od2Q4!sJ-1E>x8MmSWaCv^2dkln!yBB`6G89{7>d>6Ms}c-;qD6fbPQ|RcOB( ze^gN^_@f5RmHDFrV`=^VrbG=dOsg<6-8)*F1*}${_h8D272jE?cWawUeJuD^m=xY zF$9wXO1NMU6TMDv{P>^h@G%g-KfxP!}2ZM}Ghb99nPt2x^Z+gf#3F-U99y4u3SBK2u4O+L#x3RRU1 zbZMoqhVcqaaxV6b%GB?4?e?l0tNQQ-`YdaA86pW{incZyKm&KwwJA8cb4Z%bs$M*I zDLcyq3WIBvC(G=%l~+%GPT;jl&}8w^+sX-#E1c#`AAI2;p~|M=d8UXXTTD!kMwEFe zi92A;l>mR{8{Q|NPdMmfMYYYNA_&)*8ZM1)eS%{zFS4amm@N29nAf-|rEz06nNfl-Qm2W0AC*lmT30CRwIrujn>Kve$1D2E45RE9a$K#B%M>`;w)g#tZ=x&+0 zR*`&OM9Q3aKUYbb_-9az^)9{J(01QpE@+0>M12}TdrYgUV^oiW))C{F3q)cRo_A9r zF{-$e&E_XZ0nO$e-dxjfeglGDD9J3XTMeah1k%%QrS58|2KS&!(eGD_a_9tm2wufC zh2yeB$$`(a% zLZuC&?hunMA4m3gJGOuRW-J&}0{rc7KOCLD`N6zJ@tA^WKNoZY1&(2w&Ol5VL$Q#I z=n=Tn=|rJ}<2zspXP+(K4<*;888HD(U?kBj`qs@kQ=}pzzWq62SGSnJI0bD8;xWA? zpnVE<1}{MSt^Owl-DyU;w%eecm0tYzn?ddk#F7#mi3OysczLW*xB;GzvxzbdOOyYu zbolZ`f$V4*uTNL3M2xozgcjFdzk)WC6fqW039@8qZezhDot7zfPwE|=zG(>FD$D%& zgl#uuxd*@@zE?}kaK@<5JRgQ1&5Hs+rNq3|$9Fg#Ew!c@(QQ|070i)xr{?ZxPawlE z8M>|%ay7xc@^(VWHLWQfr#QYD)10HqCr(pVd6`izt{LLLq*YKPyRKWACBybD#G+O) z<-?qae1T%}3oWgfb_OqsSLP~v_pbI-!=5qE+eg{>8=5 zr{{;?qIvVJ%_tS^403);Su#fg)K7&H&CZVwk1y^;F$I1Fdg&JLOQ_~n)t8VyrKV5M z%jazdTe~l#B}iG8A7utSJ$ZY2Uk21otiph%)x-VE{nz^!N2R`bBE+I^{yl^O4x#cg zEYtZKAzAAG!Mo#wpME_3aB*~Xc6{>ot|TZLs;2@b*Gr%q2<{T17pL#e?=?yi_zFX$ z+B-NsuN<5521ns5|8qc@lAlo(#L>zA>vu<2`yVcUJUY2NKG?rJK0R3iqRrfqgsmYAHF|6x%zN%bbhk`ehwcx_)$Dn zsUuEyeTBI+4Q8PI!8cMoB#J-10R-)_z9LHF;yKq73V4c81~yyv1wr#xIEy828S5WU z-ygl|nl;>i{g@9GR>aBzzvLK+zt(i}udDa6Y&3d9D?i=g-kWOu>g_J>QzZY2$~9}4inrOVUvX6) zQvJ-i3N^SJzud8*jM5ab_BY_qdXuz_=w!x!NntX<1hjK$z=8HSdj7??SieS~oq6v9 zd-7|f)E@X>2l2oD>mh)00Y%Oqh>L3tO#uG+PtYbHdL9~n5%|}?)J#>oW7;%3cz3LH z+p9`pi;XG$?)c-;E9GGOt50qaJ(pji0(aLjhImE^N3Wi*d3pcV%jljRa zZ@<-ie0REkczp5}oJ({8=IWARdk0qn1>{HoOuz(9D4Rv#Uw@Tfh}XKJr(5?KQY#T! zG*$Ven>$zE6O?R7-jJz>X7YR7AJ1PB#obY<(EP6u2_ z4wlW0C&twWBt@OE z?O3_lbk+Q;?8!1yY68YNOF_G>Hlf>XCD5biUuulauhCxk!4q=!gBFN;FJ8Xb>Pm#W z_Jgv_zeZgpOS_Vu!5~<2UC@+)`5ae24CR3chr;LjYOlX<uh}r!TP?RCHDX6 z@Sa(~7v=x%RnLD8ww}&^KFXuxztk9;>!9TVKc&|=UVgV;pIUeO>KVfm$Y%Dk0~7FG z4)&@G0#5O;lM9^MLLCFj-E`x_KQobEQE-1+xphAn&8ugE@Wa9;hHN>^R9vLPZ%v<- z_wIwP&xks=hdNUVkIHzhuh$0kJXe%g7g|d)s92=7JppTWvs9526DlYF4#F7pxcdPN zx=z>IS)=%lj7RNvGcdcWBnf=VE7IUWj>l8}_f zJQ!&|$ghl&+Oi4@_}(zTRJ8x$@-(Ux_Isg5;#JUk5#&|ZN+}ceJcx6#4YY3QWwr0c zeg3YA%60wW7x|$c&1ft{_7;h~sBX~8rL7ksQ(Jz@1EG5+U(}^rYy!aJF`6JBghI9v zLL;$NA4Hs8(D-J4FXocecEh{Ozqa2ha8V+?X12uqiebDDSYM($p1f1s=EXxUg+^25 zg)OfRJzEU7j*Bf+m6rgfhbV%L|{>2J4Exj_uER=@pNW8chUA}-Y2Xyt~ z|7t*&24~IlHG+H)Q9Cj*v0)UNimLM?>J;4IyojclpKY+zgCGXYk5DV+)^6|=dXQ|? zkuG3=`H3c$fug&^Xa=wCW_HU)lofB6!mvsEm5sjYHu?NJLOk%L2{4U=aB@9u4pN9G zmsSwhjianrjwTF7ajh^R&48|#`z=jI38ry8t6%S6Fg*GA{vgki`u|(r|Gm>63@Yb; zwx8~QeUwM}{}${2WqpC}=zi%SjTL;prf)U?+^V{GJ?E(79HCc8?6R`=L2I3_KLlQ_ zX>8*zmbu*MdBxrcJMbBEfyuQJ^S)qJ7qH*L83!3dBeh`)!oqmu&R20HY`)G4p0DOL zIQIs&?q9&E7$bIzIRY99bxj}wXCDvrvCUGW<=&CHo9RH9{9;YHmYOOld zx-xCaL1}Dqy_&$9ln)zMyhaa%Q^`PWYQ9Y75oOxDJP)UZHR_DjBGs;~EIt-yiT3Bl z^3Nb~pKJAb>Da1upq8c?h|nYxvqQ|nsb=2>hx9_L&j&R@3C=67Rbc|%Q9?)Ii z)a<03%Vh7^+AE;WdLw-f)EC%lH79xBGIh{+0idyElkePn^BhzbZgV?r12oNV&8@`= z9S?Htc7i62uBHDzSyVSPg{%By)XjUExO(2Jx@E~yU?r{H$qMyj&tuNH$1DcTw)@-( zTP&DW1^ZLCo7q)EaR-818XJBoDO>k>Za-})<<>VPB|469jg(v5Au_VT%VfmuptC7r zrH<&A4c#yw4F)x2$eKxzx$ZAUR&Sa`jfZK1D%$$G$WS~dA5LBR{MySXE6C{EC~Hio z<=nvLC#GWiD^UUs7oom$ukg5`w@tAPV%Vk_FAtk z|Na95SS=mpnzWNZ0ewu|!INkm{04@D?F7Y6Oa@nC6tLuAsPvNmKYQ=qAGeJpiq7Bq z6gWMZU!)v$tKTi@Oy*uib~4&=Y^~)ayF0r#Mw3uCMr?usK*^d(?q@$gJV*j0!IvI( z65@}2F4Tns7RV*LMZ>MeGH%i z-s$mVIvZ5N6OMWrelnNf^ysJvPv$h{kFq52Vj6%PybRLmpKkx(5_o^Q6)2W4QufdE zTuVZIyZ6d(jbn8R$A9>1uQ=v``1#b^mXBHEm>=_SINXB~)^~%Sg4@a74G#TNpjdQo zhd30hCJY;SHMw!Zy(}L|zA`AgM{5PYl2CpMxkfl_>vxvI|Zhr zulcs(8^MR>ck(1h!kdooaJV@IxhB68JXrosOoPHF@*BZt<)6rDEc--Gd)YU8wkug= zCbb~4zb_M60roTUN^l1$lU0Bl3FHToi~}3Z{e+@ujy)%zyEtO zoy~ju?>Sm!{V$lS{sn^o2yOr>D8f`!8d3y2iXcb+o-m!#8)F1#fdH>5r1zB@2)6kb zMjKhwx!mZ>os;}mrxTKe59^OcmZ)CiJgh_ulcQ7{>pM9tb(|?w`}kyLbE=E7_N~Dx z4V}Ac>!3WjSSxek`d?GB`%kzF4zy9KZGrkYQCT?-7>0yr1$e6wHePOowefyA>J5Th zMWk7TJb|mMKNot)zCJ_ESMta}a|-lk|C$iaI8B0yIKhZ5{9X2>6C$}vtT+~^eW=+;Y88nQ@b*&@|nCI3%v92$UqeGi=xcN*Ae z>Tkec6Oc6wyed$mfGSu`sTU z;%04U{Gd#o8{d0`BErOiGiNP@*AJs^bL=dC%vN$u) zDZJThI_4~lzAV}djBv97M|WKXC$%7}fLYHa1GGR)C!^-OsR2`tS4}A0wsVu+jh~Go z%vP{{Ikj##PN`*EH3E_E7^0Ug;1x$&9YA%ECqb#~qrwLHXN>zY;REa&;yID@M&$f- zF`rFkD7xsZBxu@-s@xk&_{2oaq-RJN3tD0H|1cKph>yP1rAeO}!z7rPNAgchVl>Eg zQUk3VQcEB*$d>~mW6^oSrIYv|LP*z6Gn?QaB_+kg={mS_4z++!V)aRsKC8Ht{hs}% zBIs$z{Fh($ltz9N!JlH}ii8TZrBnrjY~k;NT!0)@1yc343OLcXvEDM1Gnua5L6My_lQb1yP6b~Y-B6r! z6R!~s5l2jzBx}g9H-s_YHpag!I8(aE)Kqde8AX!;JZ?#q2JwGg;H>)=KwbX-V!Fu3 z|5uZ7AOC-jRucdJxY-{`IlW@)N8=io8bp@mQC+R?xm^mY!t+DC3KLL`V?hbwPvKf5 z6{+jIi?shHz^wAtB@pwS*0={{I9hP5{u%-+;MhKMr%0O8mr6%l?IO4bmi1QaC&)wy zNsF}VhGmEkbuXv0*?4KW2+11L|8JN{ll$sLl|7mum|34qv2?o)&xCa@m&HO|iZh9+ zTc%aQb-`>8F15&Wt_Axk(8s)3d)cgO@Ub{NBivRFYDmp9YJzV`q+mJ$i>(PSXCT zA@bXyue{VkB;*Oil^GFvR9Ebyv?l(aD!~49{@;9(&;OsSrhWa#XKA0F|EJ6SKg9o2 zAjo^m5A9AV;-=N zgR#pOG?6ajgvaTh2_!vH5GxzUl@(MF5K1Oz-2~GdA3T#Q| zHLjZj-2$|H=PkgN;oaFWOlem7ifjBer?2bA**J}`=pL4)>kW-x3%P{V7fM#!A*J6o z^1g;4DQqhxAUx5Mb^vCfOn?Q7VzB!_ov&!QUtbucx0W(L| z(ZwtS7In*tG{)P`$IMSpx1O4Mnvc_)%imN9!cW$v%jtZYZp%H-PfqxE9+y-P<%9dR z4$a|cKdBV!eePdHYvBLOJ8&OT0HntMpUuXr{QmEJ(%1ifmiEc{|LO|q2e|$cK&jVX zxSjgB9e#z2dirH{ynZ~$(L?^%tXTFq!2xx1c7+3Pzfj|37ol}= zt4q49a+hoTT?x%J3DghE+3Liy1`IOS*Z}E-)p|H$3`akK7vAe~bk53G2U& zr?XZ5{+G#gHRDYRDBk%|7X1$>qxh3s|SeC&#m+ zm|(O=@;ijESjd)P@U3OjDFDFAQAu+7|R?o$XKi6<WE;A~}-XMLq zY0^j}3@SoT!9{5NtVViTxJg~znKx38ZAhXYc~7dPJnYYnON8za-fa0Pm{?LTH=A2X z{fEw`fbrzBsX7r~CD-gUpG*PaN>?y@hiGzd((um! z7enjoboC8ovRk9%Z*w^^GGH1PDkWD~NycdjSbbyx*0isf2PqjN;wN))B>o+8+-Yti z;^*X~M|KejQOMJIK_57U-)6=5GE+7GMBbOi(FdO1RM~9K3@lP-EXBhLEf2sbdyu|c zz{B`tUsZ)J;@VwgXS5f~JXwm;KfAIj80M=O$|-hN)gJ9EB5PV682;X5Y_HvanKxhV zB7Ses?I8bZYSqFh8rijf(vMEnEqfV_3*A{4X4}H&vm11O2tJeRSWH22Uh)`yrlg*} z6k2{)Dx(S=hl#st2~#2DG}THR+X7@xA`+0z{ojNPwh1C!0ntZG75Avi(o%RIZCPd- z@%ffzd)+%MUw)6e_>N7UY`pRwzV1p^UB@-oc*W(qEUvbeYpuyjt5{o)xvZYe5K)~y zjvZns$VW9pj1^vIg>?7-D*S)EgPRBY{(oo?|6eY0=l>_m`MA&jc$U`8|2J1W-y#rE z;Q#^2AwUa=GH%u^B>$IPPayw%O9(eI<{;mWI2rLRQg7#PD5zN0b|ZS04csGcG3puNA(FQY4@AYO9kg6B#`zWHwgB@ z=82-vNAxld0`(!2@QHX(9HAq(s6B zfLu(bj;X+G1Cvz~t3c#OCz)x`HzHFBN{^@Et6PQs*QWQA>;Lg$o{#@8=i_Ow|DU6^ z(Eoo+T?4>441M8KD;}w0am_`^7sjP-RlDe=qC)#joJi?OLg1q)Aon8{AurW&rmHB^ z71*t3ztI3&%iXL+IEDPmh5yH%Wp}Gs|2r7sYsC0aWp#AR{rN+K`d{POESLW?o{#(c zAD^W;mH}Rm1QU!B9vCSeD7}&~d50D5WxS4qpzXbk`NW*HSc=*0HUCD|h2rTls-ZS& ziouTD?LsL^zx*;x5ij0w2*6;Ag58L1kG6!|3{F8r(NNwX6a*R>-SO;{=rhsHfd01O*YD{0bxvC8G&#B1d7KpJnRasJCMr>?hznQaA> z8S-L^`Te=FqwMW88i!{xk@*xXmdC|M-%t`qCC?D_--N-v@aw+D0b=)zqur^zMyUwo zH3`Lwg~x(%Vd$Uc_U{HqYaAZ2?I8dA(98eyv-LLs`b+TVKY#x6&DWpjo+58cz(BK| zuy(VxHX03bFKeO#7)8N77!Fn8%OS%)0>j}op&lA~B)kr=#~B#jfGy_{J3TtuV7`sl z@|GwuUYW1Qj?%7<)GbxT<<2SNW!lI;@v1n;OC$9 zsK3>3$njuLE(354ae#a=`0Pq3n+h-Ad~I&Xk|5rpZ^epW`B|%B^PyO3Ip8}1=o0en zDLCTkQ;LKR;g@nfpMuxu7STPk|2C^D->r;azrgeq{HrJ&=^ABqAXb|RB>u1_ayil(om3e?YZoH$n&jm7v;IpKEa|c5IG&FZp zuhUmkPjr~thjx;A5sA;#m3S7!L=xJ6rG|&+c2h)M4Acuc3AGt3LkoEUiZV>q+mR2B2n_dTpTJY^)R#oQk?3dE!tJ z2?w{-6e)gBt1ygVxe#ceJ`yM;TI9^0k&muS(qZ*F<>R#q`LEgL$B0n=pfu1r`9GWI z>wk{N{r!*6(_HdjOggwG6hN@Swzwetuh2UTc-OYuUj{FgWhsehYPA*My4 zDBo%<;#J431-m-dH3s_u3T;>i=J~E`hy$>n95Z-LfWjD31QG-Vi4)8JzXyL}|2_C$ z1CS8zHQb>CU?I^~xg<2R2VA8{RELJyT61vFkT4g`X_ zV>L;a`u`HU*RtoKSsKuQZoO)s3*JXRfx&R#e*M4_U+K;1xxP=qe-HlK64c27VJUq@ zCs*fZuU-!S>+7qE&Op=N{=^1AAJ(#uZjJDV^DU%YXV(^pl*h0|cMS+?onF=iXo98z z;;F`*J8+WwqZyZdEDn1phF7zDmy$1k|#+y9n-zfiWb|S?2nS# zJ)Ha}+yw{aUw;xA*A?sk4$=^Zn}?qOuZ#bU=hM9Zx9aczeV*20{r{l&0l+nhxh`5l zi8`0Y;ihKcr`)7Jc?UNYQJrBtI0TVA0V4X=0upn8 z8DN}}a1-1EiUj&XDEWXB0B;HQi?n0_%hFnu_^~GszM=3IQxfh_$VYqs8;92T+v<7%x{BORR@|F(*67u?K_TUMhm~v&$b}zkK)OR~N5e{CM^9 z?e`bwFY69|Xp75a8f&lT8h=3kIgHMHSxidS*vX!HG2>+Cd@O-GpZfPg_<7FfN!KqZ ziK_Z`JWo1zJkEMAf5E(l#6H??5o-i}-!bAZI{-*eN4G)27Xxq%yde@c2p1M9$z8*@ z_~FaO-?iv3H&&YoDtjy)VtQ>m#kZGw*XNlRuw-B+ zd1u5S-5@SIJplXiFs*QIa43AGvUjYI5nyO{i|9GoMUWye`16-wGM>(bXO@~xrBDnw z*{HviH4_{YV#SqGpiw2_`e}EZqt4jY{jq24IwufaLP-mSL0+m3%Ap>80X(u>3o$E* zbw@Er00sdt*P5^(lM;GTIP0D>Ip~qlgWQ(AmSo9cX~9UOSssY|-Ifh`8E8({XN4b2 zE_A`Z_q5RwEv92>J{EaLC3w|I{$w%Dct`% zS@ibbvotAb&Vqp40Y-KR$O_e9a1C$J0GQjaB$5RTWWtKv4FKPKcLA7S3w)iFXK7|3 zTJd_xSH=95G%{eIVCi*PQrY~)sNXDMUVeW*C=~>0b?NBVD@tD{yuV)7fZGx#Yr_m| zL>c0ji0-huUPP@U2O#^^LEX0nTPMMwvXcx==lkun;BQbW{(f4u{HOR92WW%*r#$~V zUaV&M{h#He-~V}*CguN2nPLaB=}t?qCHoe4TNDBx34i64Fk>+TF++YsfuFazvW{{! z_+3Vtfmy+qNWL+!Yi|C@M8^~t=?e_od<})>yi7p6WF8EpCM>}ERApu5`qv)nLu|i4 zG+6)hWg-4IUG@7v&(bRGzw{93mN_d^!R|t;O*nC$SUZsWhia`G>7{Jg&)Mfeo z&Mchj^&dx3fOaV4Fi`dNp5*@TY5xAt>14KC_Ur#Snp*!+B-lH-{;4?ay5=_3Yug7K z^>f2DUw}8r&H@~L0T{eRj!vThdT2`mA5m}%DHe8$9qW=oDg8kbd0#A#^Fi#5{e}^x zL$}|!o^7JI_$ z%?cF#6w5(v(y1r`QfU?DV$~&P+JW(NdG_5w=|m;73?^eR9fRro5l15|IP}fsca6r9 zzT9pk8C&U*%;#V-UbPGamoJ#Ia4?IbjE${euKwBLB!kcfrWHnUk>S9gY{?sV^v82P zl~$?$A1D2@KL2x8IRCTi^FN=bNdfaMq8lX7^#sI&0gx5I)0=fdUp`WtqMvC~q0$1l zO-eOl?r`%pNbB^UhWvfH`{^STos;Ok@++Z;OFr2rJ8WESrM?{4dFr3-#OVF(>s`#a zq{y3FM3ubFVP$q_fiiuL?~{uPQ*5lB4qVyk&nptE*T2Uf>ihqpN&Ih`U;nH5w6Fj4 zEUnW2|6W$FKMx?@z0(Zxn6ZG{B6wCC7%2PbId_JBWATBi^)GBwcJ!l1LQY8#AbOS+ zG8YDXQ>jq5{#Wzd`H$&*yy*S^XK8Z%OT7e~^9=4V-b1hV%02=E1Da)5*a#i8 zu_aoqe|5iEo24&Xt^L2qo&T6l`|}^q)JoTXHqZH`ukY1sz3Syfc~$FO0dBd}gAC8= zRc=6Ux4;9qu3X;=14mcxRSgEoRfnakIDqR`i}(Sp!TQ%#=Q}F@Cg;DVdHp||&HDO( z&(e(bUp~)D0u-M$lmW?=1rD`uq&?%%M;{KsXPBd1*;Nn8>++fhj&|m4gKCu(ku1m) zvp)f&%vi`t5eL+Q95Ka+1i^Qax~w|aQ2}Awijd#AdM(3G(93BW7+oA>BscN=_4_b= z>)x8n|Bl9A6aR0Sum3%r&ind*&(ezWKX3e5Kev?nxn2Qk1c&f$v@38V!t6l$v`=2M1X}|yTEUjey z=U0B)HJ^9#aJZ>nnbmSY;$!Wyg!)S9{j?^J=yUidu|707^T>aC^eZP#LUo~|SA3g*o~0S<-#yPt9F#xraOS5f1Y9E%T*rZ2_CYz$^@c)|AaVul)@DQAJuF~f<|9@h z;I<@Oj$*E_hu9Q-`}MST^1qu8SRen(%l}zl|Kpijx%|)jfQ3gLq<$w~@B#Avk$l2( zh!6J*4Y(z~VR^5u{6o8gUY_@@thJQ?onioW^1pch$8_A+e}A6lkpHRVzZ5?z`P)I{ z=R*MzqMbqkdDK4ba6mH3s&GKFaT|vvYKE-d{KN;HaX~Q#Vru#nSXCUvx;((vd(X9b z{u^jb zBH$+0dPMy4Y`)y^%ivdvDeHAxQmHOKsN={OvP&&ST?R=PgA?A<{ss=fp;~n zbFZdt{Hv4zhKDt66no5-k5!-w5yuq1JIW~E$w@YO=Vf(lu@5wUx~+ly*X#7j@_#1d zNk0E?GG6uhf6vkk`ESg#(g2BoZdci<#PVw-y4@PWA-lVZ?q`mRmC5ZUXG=e0^tNcF zCUa6PuT$?+zi!EFMsGh!Q?zd%p%vvnfj*)~Kf)k*_|3nn)%ySQ{Q3XIeA=J?eU>I~ zcKR0L5TKCL`-tFB-TQ8o{0Q)xLVB-Ce~iF|P!B->)YWRT7LmMPD7crm7o~^t*N`C} zkmO!@a*KWB>#8Ev_s2^X9Kj&S^vKZ{;2RVo3OUjxNT94(76~Lm?>?zkVwP(vUP7fI ztCA!mv&K>ioT44X@}4Vo(|tpbFp7fv1m>?uu)5d37|`QLfSUC`n@tM$zm3Pe|Nksa zuKz3KkX4E2hZH1-TBJEM&Dd%#wfVE=dUtec*_OFt`XgqSw$f7jfx* z;vNjpsQ8sweBfsg3L7uvU~H~#UEtUwJ{k&>NQf=pACgd5d=&i@V_GQnmRMZS_esb` z;#>7;ncZ1}r~J zRDTMu@n#33y4i`~U5Mx?eP6(L%t{8GA&(;75VU%^5!_4}RSWS1w54j=6q-6~~ zkHn!9n_Ri8G{RiQLaI=?srJ^WjQ7#IGXPk@KWEU<+CgMglI=XhMIJl zz50+I8HXHQ$AJV?+o|<-Ww#cjYls7|pZJHb30GIzVjtx3+5Zze7`U)K$UA`6@!DY% zCZcQTxmc&_yKMx!e3p8H?LSRVoj8Q7TT%;06$b4-)SZTi-w}EfkpO%5Wmx};46RSJ zIqg4TBR`S@SY!W9my3Dc|69)b{J&>um4=&Ly73VTMLH$9RV#92s!ylKC8N{zFIQhX z)cotpVs*{I%O|9+E5ZeVvd8+4u<#|F+PeTA9APmIr;*e z#hh$XFF%YjA6%Nf$j{lrrIwEh2w*|6FxrfSH=pzMt!^U1xKM3B1t5Zq-4W_{>@I^e z!l6K$(5j9p@-cg8pAtx;?skx3=&v8zp$5~eOA>C#BXp_2H0sg|uy?a1F+&gSHG|Zs zV@3k{&@Kgxd}mK>;W+ib6tB+`|C!8JdHuf}_xT^s(f{VPN~zUZIU1 zD4D0}AseJ+@N0=6() z*fnSu1wwhpN;x}_OvpvetsenlhjDbnsu#JAB+!YZyUGyU_b1`>{18;G zL?UtplKGPBUF7+WZi-d4lD_C{9LpC?6Tdx<-Z=16ll<(i@_}j`qy43i|Z6#lfoJy@I zIjVi>OKzo5hOVF1;w@#{o$xiK4I!Q$62WbOB-0*S&A*k^LhDM^!&c{HY)*cL$(AGD=rEU5GFjCwPIMCL?`YN~|Ex`kMCbW!$ zOzhjt0qKQRG6hq@fLsfi{wnivDBp2`C3IU45xl<+7**18&-Krp%p}S&|hD)b*WmKV$pW3K?FGnK{DyDMA=F3IV^{=!b z%FAKLU=id?jbp)IWH54sb(tG!k6{>84|<)jdwI}0>dVM4^{GFEsBbDjGsV!Db`9mn zPs&=lJ6UjQ3YTj_iy4C3*>w*JSKj~ZY6K6Q#GYIupGTt4v49mEAw!L0}d5t&Jj zf3T>96s;t(;d_4(R4wq<>u9CS$PMwhx?%`VHuZQmPio2SxXc=H{IzV~e`MSM%2`+b z`?j?!NyCorU4I5?K@4ifXkJY1aIrLYT=rgnw^ani#-v-Cu)v+;i*hPb!Z%su?%;#FBql&8f|*xW5Y0bd>uY=HGIx9Nzllb{}#9 znQ|62f8G+j`vEWXSJFrQeC5wx$$@yns>hD7BLH%eh(U_GITM9LZ?^1Jkl+M@W}r>< z9R61Su=llIW}%{&J^c>HK#_dwXxMCvJ^l2&+aMj_k*)hpmDQ-24`9h-cz6c5u-x1L ze9|q{OqK2dB0J)mG+#9e5Eu#w-9Lf?AURS26CB?4-6CvR1-JF0*B4{qmx{Zo6M#=t ziNqKK84|}|tq{HOvoaIx05+>5Y=gH8kN{YT`U`9)WS{63_gN z-LoUzUPjZB`T0HAQ?ixFODqqrV%%IHAG6ODQhPOoYe%RvmX$KEVmHlWRl~e{FCwV{bg+J6 z&=P`WX0FQ!D8vgqLDN zf{0mjXviKxi|HpDjGZ20%RoRP8=$h4Ay{%j9Nwt%+5vhNzudaDib)GToDcC& zM^)&tBEL1SF;9vOWGA&bRqW5rKmOsp$tv`oJ)J5!omUm@vnMjjD6|NvTTNcpH?f)S zy^3|wa;_uiobCJ?txg71Pp_uj02Iq>M7}D-3jiN{bzq4FFC8#nG?to0it#&(+0%^75~{B_SVWnYy1+T@EGa$&S(0 zB;G3ZB#){U#X;f(Ng#ef)lx!Bwz19Ad+n2?+JkZKqv%vb8)DdI1nuhBIH3lPZuUCg z3GLKtd-77$KA!?MhX5~@sV#s&79%iDziJ5_jTwoqVxp90srw*K9pWTfV_dh+zd=zS z9d@Cb=C_G{)nfeFm(nMhZKsAApd<$J76>D9M1_<=xckJ3gZ*qjkwgP;5{Sj{yvy+~ zB{B35kjFKRivaG-V2*!w2@{n9Xq3QEi-`wFaIfMF^uD}CV8wj{Ax^6E$6rn~2gXvb z;(lflO#o;gUnDL97s%dr4kNCPfvAMHl&x?{oI;LAhkY2m1CXX(CW%YNe;+2T;hesP zv9AiBIZ8e2ANzov53*N66*&_qMuQ$R-;zi)lI>@SHOX74UWEz4XNit!G69}T_a^LtK4!?qvWzqf>K$)opzSgaJ0uYxl>fs0juYpY=JLmhJ^So7OM_P4pC7|5Vn9O5<`HtE&s>aO=`x z$A!0`m$;Pb33O^aAzhmmZ`8I7mUo57$%4q~pvnY)sDgj6ww$Koo~|g%yy)b8_&RLP zjv?5T+R(;2>5u3Znp0;pYwpa}m|h;{*q1&*O>ia4SBuNsk%ZV~?k$cejyyH~IYf+i zTxybOy2?DJAK{&hcl0WZUlrcNWzBgwGBGIZ=^*I*w-g7Bf}Fcu+Qmf0EH~$ch*(2? z*(tIU_sebF;c>Cd_fG9* zty3{Rl%}}VH?ZwAvGi$r{IMI?F8o)LH+%Cy+1PViN$1= zC5j_t{8Cf_hPxAKxue&kG*r;mVl&!;{&K7Dp(n}akXvx=d~~~d$C!+I4&&ljW9d&_ zh!!5ymmxrbz9ACr7epo>ZgEdRHZ(0B-V}mx;9$l@D6i2zO}OEfd9?DT>1de$b+!M* zDI~5i&|$JH>kApyF{CSnL(F2iCK;p`vjZZU4+qpUU~lbI6_Fb~3RUvTP!i!km4h2v zRZFb4BH6t31VFC9MBq6|O84dKFY znk|l`(TUqQ>%ChmdRZFKYdt5YKgvkKuVZ!QCQwM|j+~m1<`pO3ZoqcU>QO`HN$}3a zdl<%lARQwjEW+^CV-7<@Hj>4ji$UVPHfIZ=BY1H!V7X?6Eh2Qoe`#i3HFe#52(Cql z^i<{1YQj{jvU}5-P}zfmTZGt0u@=y3cX1y6Q1GGG_iMbIhMvMFqPG{wJU(+C&D8pL z^9?`XmZKK#v1DY)KoxkL|5;{xpOHruX#6e-m(0B;J*aT&4`QkShQA%DoFXL^sE}Mu zWi!2~@r(Yh&viORg-L?{lE8eSJS~P#D}zHwr8yQy~G}(F=fP22W(^K~=~u9WOmn z$@x9_7?iVV2e;T@}?;R9x$Th1@f^6 zwO1hHD1x&11HnNNJI4OPq=*;KhLKhw@G{khvfO9CUZQpm)Z&@ zbM#SL_E_%C+3o)z&~G%EV@0chmM3fDq)Zim724(gw`-Bv41EQ8q;`EPy&fih>PKOy z6+Y}i4kYF=89-D#`I@sV6n=MIPL=JvJTFt1wZpvpmAGc1v6ytIl@k-TKs?C%01duK zmvoBjQ=u;F?Ai>M>Z(bWhXMWKrb*Vn81rm&5P`cTDB2xT;!zmz#H}Tg%MgZCUwGo+ zR1$Cf#9fxBc=GXPV>Dfn#G_#Xhny~rh1Lg|Yz!DyMyklByl>yZ&#>EM{D zhCL+s(Z<)pqio#n4)nZ-#^o zNQd;X>w%dy^XYhAyq1Gp7T)&Q^?Fl-x_@!rZPnNi&{5Dq!&Im$dyH}$YucDAhJnWaf;DpThThtIgW_ZM>H-eja|h}NdAZ_K1b@SP zq16z!#pmLo1}Cg|=H^|E7g}j^V35Ml5PMutm$eI@lrW7Eg#!(P&IFIbEt+n)H}GcLd=aVPucXU zC_A|F2o+wFjK-+iX|u}eYjLW$fjQKFJhh?$UU7iWPf5w&r41M3QNjA3e}l0DV>kpj zx^oXl?R4N$9FjgpO7p~jXL2!!{3|i2}D(p3EftV((o3VxXDi}#EeC?6bxn6`>{16&!VPE zbKHKOQF5m^m}I*h^kg1C5)QM@A%TUHsvA)N0sg7ONx4Eq;?$4Ir(56(BuIJSF6*`_ zv(Nv?EgR(1%fMX}^E2DtoV&$21?zR(7|E)Oj&y&H=c013#8G?tC_5z9co<*2P2#i* z&TNhqU4|QI+r3??Sr`7Ht4o5>Lo7wOn0F_5JCXyPh4*%Zz0P_M3HpZ{Ymepd^QQz2YHOi8dC-PzOh@|k>#7D@L2IcB z%gU#d4UlDgR30`nMjQ0VsjHZ+3OjT-JoL`+Uc18Z?fUJ?_-B|M6_`MZ%w?rSX~bN} zgZD9Ch2lg?PL50^d~I^xIm;uDp*z>uGg)#dKlge6WxULVSe>O<8plZ{_~ z%5`(#{*rMXAKXnlHxF?(S7dH_X2R(>_M0y})g9rld9Hi=j7$0YAM9QB{u|H`UavW~ za0-lc_DvH1OnIU`lGOpxROFPd9dfzIVyStDMel2Y1LyrUSl+WPR1en4u-;=zn)~`N znXHu+v3(FIt{!29m$@IU=Y%cIcX?T_JY<+Z9cSY=DE`gF=S6u?#q-ys)azzVB?TjD;iFv)EYfT(9nVX3fd+3%C?v~@(43^*D;hAn) z^!Jd>DT8OOH>DVTrXWoXXuS3FBXC6i=BiTDb=cBipzX`qr2-0Ho#>8l@EyPiZ z=cfC;i==;>*h9tr+E~JV)IpkkSpLZR&@-$WEPK7TIfyW$P;QEr^ zNB%>)Xp2{NJqp z;){ExCN5=L#t&_sdOOeJkp*K#hVFl=vK#q2|DM(IIh-o%$|IB8ZqLBHm}my>kdn0Q z$9G7)La2>^sKPw5K+iMg@O1sSqB45~1_smdUjEcYftd7vmU~MAvJp?Mmp1$i_7~RH z+KT8Wu)UigCs)(!>zmfIj07u-%{5P{yoLR(wN#$4#hW0ygmF2Y38S5}o1OwL1-#Dv zt);ia`d+_C@-MfluX1#~J8H0mdSq<@HO-72+b24Qt$YcBt_5SB1Y@qze>bc@wdY2La|E9q^B0}t=kv^F~w~*84|#zHzh$ak<`0R zt7TlpDKXP&-7CtDDLpomWk-MLvD#}|DE1U2Y*kOgbiNQXv4WiIyW^@CoDJ=bitoEH z>~vO&*O!m{S-2l{u(26oBOR$=Gz|5y6%!W2-ccG3fCHfj4S`|xkgUAH740Ow(JLj@ zEHN>rxi8msSXAegHScoKp{-BG$fHv^gj1oX7dKFm-IehkeK{K>B@zei#HxQNGFP=# z)pf|vOGzw2rd7A}*;JsGOP~uC>0G$ct0vW~0zU2w&15{qr7wY-k^}(+f!Pd!rk6<+ z#(KV}P8?4>!b8T`=Q4Jq%SO(Pk%eV$(O6F=!t7{2QFVVTKR%~$>Sk{FF{b|-;A4$G zN*+pkQZYWS^4^IY**&Z3DWJeVb;LSjd+L1rG4XiO7=m3<9r^ZucnpkO*sjyP4mQw= zYpJv8v^DmN+%@(oik~yn!{rlBo6H7W`t9(M3K_FOr_*WI>=&8W!kzOL^Jcu18!mJSSW;F5C)iY-1DnX353roovL9uo=2Z=$&0*O?wfsVzgp5_@H@= z8(HFuWsA;voz2A-c`d~jowb!&SwA@Hf1?`L?e|M&NxRU(OU9;Pa1uG990ZF@E!(;C z8`9deZvM*s$NgiOs-V0jUDigUt#s1=c$LEhSl(a;Y__Ck_f+GRFKLeK;D^?ebJk1OK!JDhzwksqDx22 zmK}QKHGXi*rKICQqPHn4VHRn&9Ff&eEheKdBXI)*AVDP8xp6Kbfh%{}C~rsPoOr6P zKkt3#PsqEVUqcWQtwaOV)}W6dymawjt4sUH;`v;U6lQpi6(*P-;2l*2uH!QE_+qJ>CPcq@rH<~CLtff>_d{$WmpyP}xua0Fj7LkKGg7r$AFL?hDQ?v)yMR zCn*l*Vq>ZKqg~kbG|Vi?SS>~CWumeeJIT$AtXeXm-XkSlHeDC)cQ1zhZ{3e0Lub1r zL|l(rEyxy)+=zCZu|{%QV_y|FQ3EyS>t;DRTqrt#CNtN9jfu0F^t*>B-XBxy#x<_L z>h%2U*2meG53N6eU0Enw)=*nw%w!ksHA8phfd9l@w6Nmh@YZC%_vyjGWei(aHdJ^> zVRZ-&uTfAwVHNMB6<76DIaXkwq$+dWE7aR6tm3C}_)pEZGoO!RRQ@k@f8XKnizkY) z62E!k9Nc<6H%pv?`Xy{#P98$bmq@h(7LPaggV}&Bu9MX`#C`|AVl+R3%G8DoXUhtU zTvwaXa8=b1nYYJS-keR-jYC2_N>2{TBg&iKITJMpXy_X*IF=p_14nC7vYmT8*EYZ7 z?T6fRaq7Y1%FyFnhTJ!ooo1H%aV^7bIdG4T%}(|;4?aujbBdH5pxx_dQt4*cXD^9= zg-_);ElZwj5z-tjcE(NB;xICDFX+dvS;+yftheULz?@Xa#I?*W$3@Jb_8mv9mClzP zefkYlD>L7$CUhILNL%!UOa3)U9=Lviv`tLh^87Fe7tWOu!MluO?}9a1k|S~bJt0j8 zxI7%*%dgY3@m$uvs&}#ROw;VXo)V$Qx+>lJeu%RD@IF#GshK_ZOH)0m>ES8hinrV} zj{eC~+Sdauw~g2?thWPD%?1k4xft(QzfCfYabM0r>Q#cHj&hz~?!06)xc3$ADvl2l zfC<0~p12Gd0SNEFg-npf+xk>?xJy~38_(^QYVAra(l~A4$k2A6BTIG#IwR?kOv69j z+*kt&>bWo`r>bi?>tTO9I>j|kYw5Uiq-(VQYMxw|4%<6pNg7Dfb=dx09$vJ=YeG1p z?Cs}w)aa?9f0dVJe^cx7tT0hp6&JlhJ#BgY`<8(%Rzn}LB+VYX&LuplgstflS2zOR0gOm`U0a-GGmFo`j@0K z4(8!0pIBf4m6RIvs1MbC9z-s$pcm`5X;+^6GS9l)a#!k_s=C0<8$Nw^QRXgbSuQRS583I|(0-Li`mhxhEN08XKWuiSxiwp~J_@l}amtYUvwA*mEgH5ASM9%+&adSR06!L!Pq1-B`m zg#_phnlO=M{>k`ItUX3Yu4lF?W{B9Qci2#ay+&y6Y-`fp;DJ>4Jv&72&ox%jDe>EV ze7<*AQ}eTd(E_6fcV65DQ-FlAgHHfe%=#m8%9|aF{_JSW*(>tFgd1?@2O3)dmgN_N z6Y+?A0R56iwAoPlg{pUIiY9_{edSLOL5s{hU<-HF+iJEwkDYgc(A9-i-^gbH4n_(t z@&{%zzgl-I?0q@V5ZyXTXy6tJIx!f=CEm&l<`uK0HGy}0fM@iV+6=~oC;@MzXuJq@ z*8|LfQQRwmNKtb)h8Ip9T6vbnd+s*)sXYr&Yrz2q0V4i<{~gN_;7V>rgtQZfDD&3evQTpkikTCzkjm#+UxfeR>c4O90290EQWm?x*byROK#-@$1kDs7HVM5 zR}eYwx#daljtTaTlpl#|jAWv<<3#}loDF2qP`MGjfn9s)>~Am8>~>$D*Vhb<*UM@Q zozwSfOUKQ?$PcftV}jS`qxB2V-7UP^Wm%`Y_w%jw8cim{AS^7P`?BBnsi1j`&YjT1 z(GiC62#0^yKFO1e;8#BY!}P|2IvoZ&2m2$^yqY)#KqkT|$%{S8%=Pa1Hj?(buef-} zd7o2qXXbVM!L^CNX28V*vYN>%@DDGTF7(g|sGHF@SWk%b9KOpZdIf1gSQPNw-VlIo z|5NhQ*W>NFL9pjQ&F_&?gd}M9Mn$+y*_@<{_r5)p*{zWiAL(T_7^G(;hr#kstJovv zn-R?RI(>agXdnfy(o|r=`{g)%$&3?gHh#h=Yrw6RzuE-g%#S5&CY}3DkZ6vo_cJga zimVoLiRO3S<<{u#Tllh8G_)tpZnL_>z=-!FnEsS)uC$eL zIwUuT&!3VKau^f>2PJBjALm1oYG8`ce1v(i<@YfRa2{ms{KZ`r#^ep9ypWtQ;=V%m zD@JI2L%hRWo8lG3u_43+d$>NF&chPgtY=aPKA{tYF^N=vlRaK&sJ%r&=YQ8Y2U6@! z5P?me`Omr5~w0Wl(sN@S_}CIrcbXr3zCgEv$uQaj^@ z-PaeHCV7P>+oL$#P-T`G7obHE>&r+sfKhc1st<1P$2D6`uvIiLw#3*HZLJ{TM=(nhsRauiKbcyHx=hV$^)yJ+A>C z=3fXw2}=Pnhr%2cBAxJ%l?L)dl0FuL>qp}6ZC&pP2cd>)Y#OO|w)G8jkUanJ??zNa zsx@a2$5+Xe!tpGEiX%xWdn7uKgO%6=lOU*Je<uO@tmbAkg8&;1q1*@}w~x zq%}U7tXfd5Y!<43(BHw-u>GslmK(?WT(--SsM!t90JFg}vxZmwNCA?H%!zS?PK)YJFA#!J#0klhnkxc<{|#b%aZOZs%|g}4Cj4_M z+GaFFjH~?*5_R3U4Ke0=?=z)N1k<=MQ@OpSo&xFg-n-hcB0QlY=VrS>vXrxg!{k!p} zfvEOIox;mnJ#Ii3;)?_}>_wV0)0Y$MMJxUs*3S1E`{Jg{8-V0?| zFwRp0x2kFx9>E$t`sz+BtD>Fbm{#ST>k+ua;9lW3iX=W7{mDWb?war+hT_aX`3VKq z+4UHx#V-QYJ=hT&OQr!_)wPn8Kej=yY#^Yw;JKUx{>I_p&zJJcs*XL!8<&7hw%&J01c~`n>7wLtd zo7}1}tT!GA6X-F%_#9o>^Ssv)T(jpPR2U-mF+w9l={S+doM5d(R&T^P!SFF2Arqz4)QPu7otMZYPA;!(AceK z2N5lr_FX9HKN0+K1a1Dt6|3I=AZAH0Va&iYORk&#tA+=$EhWW)?MKB{6h=hiYOIE9 z<$}eE#N4kLlMNAo%TIsr0m&+0f*-MAWw;zKu(doFN47aL2G>SP1dV@^m!H&+|3M_CBRkPi=kb$DBF_#Qvj68B*;N z%QiPz1NPUGPlVcozsO3*F|xvGLJa8ZJ1lMl&=v~_qJwQqiQ^d^{gu>7GLK;$5Fa+Z ztP@t|4wlbxw2?9tcr<$9E@b9j(BMb$JH@0b%eaeG47^s8xbjbD5MGn)CL4{4qxw6& z{>zEIavzo0MM`@bXde+lo1`-OvqfIWqq&#FV+NRYX&?VOA~7R0+C*?^3DjR<->%Z8 z!V~3hF+lSi$&H*CsWn8(9E1t6tETPc{>Y@t&aa$Uy5(D;6?5LnHG%;=o{rmw_EWS6 zs*LRti#sCzGe#Jfj-h%H99by#kT{|n_4KAx3{2)1v8};Liz7#POPiCJ0lA>K5k+0^ zp~n6AY#_w1$Bs;(lkb9Zw!zL|^~M7-sbH0HcP3h{5eQ`mSEmSDinl0_Yy5XeX;n!2Sb1HlbY?@Km z>cpiG!~Rx%#ydnD?19eDK;kI7wyCsLelmzZsj+wT&oU%^&=(a8h7JylX*kNW^)Brl zA`%2Tsz-WMQ{=-Kx%4Nt?b@3JmV^6G%f-rWjxG8eN7&MWvt$22kvo^Hd*P|8VYC;O z9{Qxjrxwcy9<#!GhsQK-pBEr49Y?MeM&-BYKKL}qy78>+JxcX7KN5}Px3+%aYeb!Z zX%XTS?|8B!JP|FEa9JP{w@0`!K1>qzc_fOYTZHKAI9D3m8Z*(qZ91?i7U@07G*UO( z-ckNU`|Yg$;S2U3EW$!3q`v~c?(yVnR&00g?yF}?_vxE-06OEf3SFA$iRBu;G>MAz z9sknnn|i9F^(q*>Nqd`h>^sd;J8fUpn@c7xSMG zz?jNic*k5kbI79&vxrj7qIG-qReC}m4ZL1v8QCe{)oYkOI>zQ`6eE@M)dH$8Czt#C z&mSf~dhP`pJ{RZc6ywJ~Y0;+k+Sn;&{E&H9rTRVGFkSe7sz2;VZr;tZ`&cuZ*;>Zs zwo!q{!zGcj>z>t8(HL}c3h5XxXSetc(ad~V+eop*i+I7zFw;?=xv)y{w<^7+Ski`3 zqyTYxEwxBbK_sW&ook`wUvEdyha*Q-kY!?t`H^5@R$b1{b!dPTXf(%xD0FfVU51eOR3`zOqOd?Z4H@ zpI`ZLHcwOB!Ke3#-!Qq_V7k%Aq98bAgp6?rhq~>Wj(6e3?Y`gt5Y^eeo8M(5wkMN+ z+Ccf0_dyGeL~c(Zpf|muXgXy6WUbL~SaGUM&z;YqE%>`AF89`R(jAJt``P*Fts&n&|j%@;8CN0=RueE)hx^&4%2#(IFR@* z;V8^O2F$cy@}yUGPf@X&Vu!vpY(`Gfo9c7Go`jf z?L9-fB#G)>`tS3dp@F6rLqU_JIU^&%SN_jZV?-AXTQ5dK4OL!C3)NpS9eMhz6>1jTq++Bfza%JpUODs^Or zR78_^oZt069}Tsg9S~DH3Yq11R2+CC*NWK*dblDDu?u`pGn>g)4FtT?*7Gi^FmyGh z&}1a;-xRU%ok0QC^;;z6a@g+(5jh}P%&819)7Q8mKd_CVAOyGmfK+`tU{fm84E%Hq z{Fwn{0{%%oD#6#C9@vH2LPmOUsbU!(6z5VRxe7**vFAdAdNCp{K+ImK;~>UoXJ+&YM+&wY&Gtr%`P$4mHF7UH27B!`hLqI7j5*{-Vn^~J(ft?J9`n- z@5Wx$Z4a1m1caq5rv1QKR%##|9G>H}bX9`+1@JT_jLR7;3?yrQO!hWxeoQ{qy`-66 z_#bU+UjL_1(7B;|>2tZE+W@u`-8@O&r{OvGj|`WORXy;liM&YvyhI{5v9N`ScEAVYw<@$<}}i_9I!3qU_wg?316{!~K;yui=H&;qOvvVxOiHk`p~ zMN7N#GF=0Q^BkS5MMA!Mq(lQwo}ts_O)vshRn_}y*Nh7%;le5(|6!1%Kpqcuj89)_ zJ6mp=Il=F!JKF6>1ABIdPt)n-y|2<}r3Z4$rvBnPiz@F$@sy6F3OUv?k~2tW*4FqP z5&pnW?)xt{N6< zWL-5THRP3r3yF6JM|ypKE%g@GvX`(wMCK>YK}D7+fI=>h7;PPJJ6q*reVnhDVOelH zme9)*5kI4HvY5mdOVK>C)?L>A>QzGIW}_iahYI5H+%Tmn;bFrhOI1Y;)TAWAhYOE% z%Zr}Xu?iNDUbMK6TIR?HGj?k#HoGpHtX6kUZU33E?t!O(USrn#YXvQHL&pK3-Tkp- zqgeG7piiHqGf=y>ch+vX=+j@mXdu6_746~6KJ#L! zb3Nl0EyIatKJ}G(?aRV&av}X}ly3w$ns_$Az3Hy}N*x6~3HN1;8+zG_>%i38+F!o* zrLS{EEuchhQb#I&R<`~1b4GCbSq67^o&M$TEL|<6ZjPtcCZ2Vlt46x(YogzuZFE_k zo2cd1ZS)$)UaA#elm96w>RyIj{`VK)o3F(n*)i?XqSs{MFho`WTf>d4k>0s7ZcaO8 zS2M0t6Q+Ibvus|w9DJ2NzoJCZhGHiV=^BI3UNK={o7K5uH;0#c?W<{CSH*CwQ#ix6 zGHrkCL%L*MbHtgAN1p|iWfMl!vmucRu+OG}=+W zA9Q@~gfL!N&Ai4gRsXV#I1(EWn{4}2J!r~EX;Z`^t%qh z|28;tPZwh|hH!}rDe;FU(w9aIrcN7;EFG2xNZX%mds-}w0gTD|20bm+&c7VC{%;~L za!*I_ANOGd;c)NwVTeNt{?bre@5u=M(&5KKz~eI6r7Y_s1rG4Et&VBpZ-yB&%70t3 zTMfmf!~6V<4f`6I4A&~3{%`K`HSByz({1~oX-(vR=Qs22r@s4x-t7z~dTal;KYe~h zHo!yafBOcWHLn0I42D)ag4fl?S{zcM%I%fLTA<21F^0NBf1`XLFGY+;F~bn(26QNp zbbqkcf@G(0*{P2=CO1n*4YdOeLH}Sq>fmrRgyex)$HEXkM8f?^hO$?%STCn6&FYv6 z<}>C_rz{_j*xv7PmVtHU2OmR$lE1*3{~Lnm1w77wZ|bE=2ab#j{-*yeY8-m0G#-3z zqJ97e%~O76_tXD8+v5Mw92-+9XY^&-eQmSmP`g(UCtf_QW+C)C==qEO?9keWQH+hA@^oPhiLIU&W zL6{V>0~(}!g`TY-m5h@y3MBFqE=6$;;%> zC_yXodm4RKFiRP1>w`telwwt8Dcfnp1)f|GL%Iv0V@5`Zz4Ot=vu*)S2~c^Fhw z_sSMR&t%rQ%Ht&Fv~}|$QBs2(Doth>DXE9}lcY(1NR$+5pTk3)Nm-WErQ`0iawk9M z1S^mpNxJ$Z2m$bs+CUz4*P03|xx!^ZO5oRsc{O{KDIEgtiA!H<133Qsnyl%i&2PA5 z;)QyF=(1X-HvZC;2D6{wD2uSIRdK$VS{7+Rs!RmGR>e-7N<^J#!c3oI+!74X(`NLu zh&RS(YoY+USAp)!#&U zUs4{n__XBe9TTORU_Z1d7SZ4D6{EIAqjt>b{$&5+MC2r@uHnWjx?G5Za-G{fQe;7p z*bP&ea#zjnsRzX%HTUGY<(KlODNQ4;3LTH!XG$BOtL+hsHP0=EI|znRiSOkKS~i9T zCPoO=AWU~;_r&QoBuNMjh{^7IW13k{)qz*0e@LsTiu0uIzkPN;GM)K2B?@0=B$=U*lUS-z6I4y{}P>p%KM3T^flRWJ6l4O8F77s|rK? zFVek6a}!+C!oISIXIcp_W{Tm69%d-&b|Ll68s|1WS;POhc^UppncBN%Zq8+1I(uV%KOt3>SnNkE!TWb3+O_l5Z?Xi1&dA{Aj^B zh)*~L04=dCaU>Y$^=fvRuNOH&lABOHxv$z-=2T^!;OeEhTmVJs@dR~TvJzZm)om?O zser|%Kxns&w{Gy9?QdCRR_PFeWtve9E{=`N`kh3=$tLxwPYYj1u1(VDx7E~3a=L2;6vlrlIGA`SpDq_W-mBBQR( z3}_wR$$U;C#0tf9&IV#%Ne3nIbr7ZL4s%_pB*D=92y8so9$1nDnse<|%lR?Wc_=2> ztAC?zp4{B~1q)+It#$M3t6V~IBSE5nQV_yKt&hm-lLMr$aTC#vWF))HZ-nIPt`TMq1uiwF{}{w5%SaTyj{qZE|%x*FIzwq z^|8e(F5do@;Skzgg?;^MMNah(X4A8`TY-)9@?G#CuO(AMdCZY-=kv}GuZK^I=?&2| z7M#tDY*)uv<}-V~PoMZUaKpAJLmQf#Oe`Ik_}Ihc1AYzDn>3pm54o(QE{lP05^oIB zgOR3&5A79Uj+m_`u@bb@eCQ8#AxQ!OMvekV673TH*Ka{c@%|!1e&OoHk-k3u?(Xr)sxLPTc`#@h0YTArKLVW5i zFB%cPvx}QN7|}fKaviI8QLP}k9te>kUCW9X7B$!9Uz4lzFPz(CywyJ|zzF5(zaCZ#NAfDj92$I;VRbtT9V4V=a@Zmph*3=x~opB^uC?7`7HbP5YDaw;d6yFk(G^7}kgyKgS zH&##^e8eX8tDXAo9*u834si^w+-1KRzH;(rkR;QgqU_v>vk>^{! z%V-W$i|5tNr<65YR5SXTx$m@A+ySRbN#4U^q9dK|v&|qMyXR1mPn&0@LHdxRK+zX0 zj*G^if^--I9eK51D%L4qlwUU*k+?aJSe83|6vB8Z9P6bO0bc#8qt; zmk<=5Hg80}>NB!Ta$Cgw1ks2rSbI)tcbF_EZZLJ5VjIXC^GgEy@t21s(tQyd z=%lsLkWh%E$w6TUmoJr|otB(c-*_$DjkP=Js1ABDt`qqxCV_5J1E4=wTIN;qIX$~m zI*LtgzHLa}hyLXh2`bN(qM6}d{*rhzM#Mz_o-{6{9F zax>~x4V@g#H6D*2D?c86a z3_0-nt3qKK(clq9{pl5c4M_sb`N|^OdJv%E968+8+SHS^u-?bayz%;KOsEtFc`8YT zq7aAPYVn>{5R9ogm=mTz5Svy$_fpOsNVH)N1`%%cOaiP{i5Z>v&A08XG(p@s$9oSB z_;ULdbAh7LyM{a!hBJl?h)OCu7vb~DHz_xC7TAJF)i+FvbG7^=Sr%g?Ky|rd*{|ZdL|YM0liq$n0w8kd;xXz4a7T2LR;Fb}NrGXT!8I%w{WMri31)H7{@_$J zURUmkk8{QG>pz5;?VN#sPL@y)RQ_xOQn>mZ1_TUodd;t=7{YPIxM6K)_=sGn(YLkq z)JuCfTh^{Qfd~QAtr#Py+1POT9U+QW`4Pu=!8)5VkEh83FnvRhL97Rn8YnIOG zpqmC5?dSe_88QZIo~-XocfTL*F>ks5?)Ee!>i4XW;lM`R77x|1D@$+qe_VZIkmyXb z?VPb~p0Q`n*tTukwr$(CZQHhO+cS6WSM{oHy&tJ`y1TMdNhhi9wf0)T#JmEIDKubt zMZ{!%(oSW!@^&F=N`>?if<*)%h5=mYrezv`9DckS-{xXm;+l~QrefAX%W`EHbg1+? zo6q3ST7uW$5x*8RV6m zAavF^siNVd)Q+qw{w@R#k54CaE455(U;K+DFt74rW^4#Alndgv4R;22?blhGk(YIH zt3z-_Vvo2XhAHNzgYAR$Nc<;gQ)fGUU4U6|X&}i&%x8g`yyMw_Sz*m?nNdu{Bfcme z5XThbRRGs-?cdiHAC9xXo0oTIKYI?hQbEEb^i|rcFj(n8#xv{;=7K6AsqPnQ{%DTl z?|>dY^s}v*e{%ta(6jTU^Zeb#5xp^v7W^|)(yL#u9dGBNP|x5-%AWSBC#rs2CwLdy z=y_bnMbHkp6;+E_iY!~We(-iZ)4$ET)lS2kka*M@+oT^?xgK;e-2L5*Ouy&;1g>0q zUJ`=aq~p~(*GCH7*qZO2-FGnm;CnVDKs6Z_Y1%K{&PO*!L$8D=Mfh;1n|6Mv2bhEt zC5c#$=fNrZXb>~H{_JV=Y@q?NZcAr^DtO5Y#jC_l<^D)&sap|FFYF|zh>I~1nOVMjcpEEmji$gVNp zI>n7=sm5YCOn!Pb<1~g1H0kRSIw3{M01`YN-A|MHfD;RC{EWDnes*%5K<(zds80Y; zzE?@=4g2152mCy2nu|3OuKsH(q9)6MB>+kZ8*Ka-LYtI!qglmu6izmPM5YdNn_}+=@)JVz>3eky z;~5liwu4tlJk{tKQ)!5(;`O5a5y1E|I`CBXOyfPk4ASc^w;lwMMympVnNn2-)(Ps! zte0+SC|%pi@7Do&nm+Ub3Lb=<`#{C@()*g%D=+9xCm4e$guKYGGq1=kRK}Sf255fk zT7J`O00_6QbSFPUjty&%ejL+*%~$vyH;w0Q$>~Ymg$cLQyZ7+-c(7bYw3wRDx$05< zsk^F_z~MMifO5v2$nB^6aLuAwI;#ICf&ztQ{dxZ_YK8sP%%LaTsrSMRtf_?yq1hMp zPTa_;E`bRJlcJk-33d_+-BPFztt9vw2yJyA6)F(~#i&d5#T#w3hVhpw49|m_x5w9=4bohLuUbwdGvJcWNY;pH&1jxPgEc&Ir(O4?UcWk#JdkC zeOq5>!?8&Y1=rC}*}bG=L3 zAj6puZTZr5CRCT1FL3+$>Vn#NWn>KR&zC8gYU9WQD>`8~T_1-I0CRJz31;w%#RB^p7bKsdD*a(<`d4)hsAcK(eU^*sq0XMo$c@9P-L`=+bi467LU5jHHorS!>;N`NYeuoAWS;AK-_hIC zh5-G|lLqhdEU408MoUvrYu$<6ua5+Gp^(_8JkDhv^cWG6D3N@6^#a5k21>YoS=NIq zzqXc^}%{PxbyjQpkly9s^5+Wa!f6vM!DbiHP3jr1Ik`SsYEcum4i z&)4(*`{&czfMQA3FknvP@ z+i}3KPeFNKLrpaexK3i21;c$YS=MoXG9n=#O#VIUNQ*Bw$s9!je|xUS?IKSU{cPjsCio;1dI8q5%8hU-X-(6zlC4$J~ z`8mPu=6uU+OW{p~u zIbs`R<=T%VMWqI0stBV%uLOX*Rn0u`oDEs$ty%>FZjLb_Xr2A8qh`u_Bo)*bBmP99 z&PYlZ@S3Na$FRFp@WmuO*_T+Ds-HkX2owGs zY@H|D1gjEb4k)%i>ctL8uufJO5ksK7>A5CdWLa%(WLmUu)kc;?@N05%gXU{f>X=@&0jiOh{@zUqzE} zI_qguf2AXboC%j5dI|1eRdrC}3DShqu^WIzR$d-aZ)|n~NEkXevx_!AhtZB|D6a}v z>uBwP(t|A(NlE^d>xm#EF;$bK-578#vfm{$rrx?;9Z9mXbR8x!I%Ljiko?zx*2*~_ zb}s<1m5uk0E)l#;2>DS;&gs1C%4vl@y~45CNm$xE1jQ{k%gV6B+N)#p``Gdkm$7js zqq|*+h;-yi#8p>qme48lbRmM$A;)=hM#EyipPf>hI=vSKp`oa zh{Fbl^W*OoGC4E6l59S0a&K;-3m zTem>g5{O0(1&z~hc@zOQ2D;rRTix;z1^{wtYJ)JCuB=`XnAkHBPB0`pu775n+>{T4 zyQ6oWDXO^efco4Z*j7wz(C%a>^ZXq-DaYhlBF=wtgs!z(O@eY1`g`20t;&-$tq$MT zEc;q(!n_ve_n-Ams9Sh8dRKq|!+&ogT`_EVe;LKYmcN6GLt(_KNFA^Ap|h zAtRw^oE!g;)rcUngV9m&vF0?(uR?m|vzx=+RfP%*gMBdN8h?EazgA9KlV8wo!9H79 zNm*D2GJkrKQ@oP`@g~6zdC4O60!(69HwZC#TkI}K*@pOAdWr^7FvW?{~gu z-36r(of6S9c=D@AMBELrDiNo^&QI#?22c<3g3|*o7KyI>Y8DxI)W>>UFETe zxjG?TppmN3p8j$qUW3p1a89^5qTSl^MRDpK`XWj(e7dlM=Zc3GKLnN~3SZ8a?m!R* zwT!8AHH&*f&tud4saHBQh&?7m{&V+7_mKj4Uj=fo0bLYe=Z+fuUXYkCJD+ScAqm7y zR}X%tYhMm~u!U2!SC|Zd762KyA6j58$B_iTt=u=1hsRyu+Q=D-BCAOkX4(z`*0P{C z{2G}iFtCO#-4I6v$5@QnqO0(EyEZ&9ZMtWL*>O9~xajuWtVt2PRl-;!DZ7k}w3!|m z4y52wReCgCZVrGV1nd&N9s27@Ic-!Nz?LFu{~>S+d(gY4tBtN~d)eP-)D1lr!7vH+ z$Rr$*COEo>JX#SN(g;{Z?h}Fx=1xOU0#MSIHaPpK(rI7gYEb2|e1#DrzF)pvrRb_i zva!(w-XfxuRvQ}!zkrjT7Te4%aLxg!uS1nZriP@{cF@z$-=S%O8CFKBbC4kx9){3w zo;3I=9S<~8NPDe6J9C~k<;jd*&1K902av$S7WINqv;tRsKY&s2hH_Sf!LwHRbPWs7 z%2pH!dl9hfHDbegr~8U}Vz&JRD_m=UHc&5^KIQ|2)@`I7T53IZ^JKF@Xhw8$Nf&{p z#!W}OO)`5K;~9~Aj$;?e_L?i3qcWcToUL(ruSvvh&$V_Y;H3@+>1{{FhDJ7rN>a{y z?i+uAqyXexX8=%W^gcN&j3ZmD&e+dgOo0H5j&LexlHP9#mFRB0{X?fi!5kW+i*2{ zy=JxcM6#SVJMl}$>kb`yE9r>`kF#Q+=xZYVJ20jX#;WUGs$pB)cHr&qqJ$f|e(5C!I^c&AQF13xX-AvQtIZO9R zZyG9Yi|mGN`KBGO^`-?**E`G&6VDm;CzU`dHgz%7=xAT3C0})S>f$cy-bO^ z7(+m4ST>GMaj=Q$%hrtRUhlfTKTpSAJfdP4-+1tM8RQFGGm-8O*h?zOYPc($3Wn@c zBqBM%PC4fhJRcS{OO2x90r9<`#N0>TW7EOpG8sS&dp8(xHDHCWj^;zZT*6kti7 z?@5KGcz`050VM$fApc)NMGe(T3^oxZx}|Zv;|hRxeoty-qT=F1Yg3E<cvtH)WUABJ5#*5EKa$PUX{zBFMZQ2*fmQpvc;-!N1TN!*$TgcDR8$eI9~thUq%5g2WA)iQ1;7GEb2B4k5=gpO6~^WbaOPc zpJ=l@fDI>o1>L?eW=^U~z)WR+Ym66{#(BfA$nM--+TrPm{ zv}GTzVaK{57|iA8A9ad%d-2)g{+Vgp@l~dH*tK-H(}Q0zyO=&e zvAu1P($*?IAfu;0=jVC9CY|PIS$)7aJay1>EKxaiZGdrNS<|-2&Cst{K^VU;b&yKx z&=^Km4`%--MtyGP=W2%bJA80^j>yDH=W=bD_nKZNUgF;?oaD%Nn_Fg~TRiItrW>Jd zuyu5TN4p#glD$LUwQ4X;!NX9{VoIpv@;R$HAicfTgoXwDUsA=?5ts@vq8{bTRbCRs z$_jS>HQ64p^l*ksAb^qUruMB5?SSOI6D5sL zG`Q^{T~fLDcBBDht9Wr5dbSi1It)@9bY$iOjxkGgs!$ZNCe(HpMcCzD8a_osX*OV> zS2}2{<*H*xEv^_QyS zxM=b@3uJKyMSIU84`{ zZVkW(CXIT;25W#Q6_iYkw)BgG3zxed@7i^+w@uAQTy=5bcx`x04IM~6SX{iI0Esjj z@KQg>8zL8D=qy+^Fo`T?qT1WAcJpto515ZK{gvpO1}6>XozHR0`zi|;s}>~X$wX36kBGr0xZ{f zKg@acQ?Bnif=iDjTJ5n}J%)sapub2se}^W58Iw){g;MuEA=HrYp4xtN00f9LlhGp_rp7dqMPpqnZW&%&h1ANLquypiMvJMjG^eQ~lGRV!|d3O2`xMyITKqKZ_4C6 zro3Mb+3BT0WlLIZu5_06VmWU{cN%dEfzBkuY}|W8KH$4E8~nxA`~am2!W2fiW^Kzx zLGv$EF$OzuKU4NRUg{kW56jU!%L{Ay$86U7Y%Ryy6s&m`01hr*0RQhQpz%5>Hn4`P zZ0Lxqrq}h}Z0z~yXRf{{{aMJvX;&Y5zrlDdJ`49U`@w@|$YKudHXW&(R8yO87feeT%~}M^;KRMD%x%Kz!u;Taq{$La3K!^w1e*3MazXq9Ju@%&dmz6 z!ax0zDMk7k7|&*&EGZ$%NE z)1%y~BJZsnD$+pMr>=Mb*sD)xyzTo1!8nUdN#ar~?ZRd)H+*Gr)00SE$I;h!)H^lD zI7hPW?GH_g>7O{*10zllJQGO8qkR2BC4#=B@x|mwN#+NuFzBF$04*^`gdvcrAXMyy_F217Lw#JRT}fwt5VBehH)>R>!7 zhcYv@PGe#c{}S>fa0&h~M;h;D4_ix(X3}P@42^bsW|69Xv@M`^?fPeYpp=w8)#<^% z;|Iqu6>gVcNDxKska}j%aclS_wb&J*NOH~oO$H@52L76-yO;Vk<5ltfu7e4YV32Tk*;e*AkCGBP?$DH5_+RXMgrI-!D)mm z$eq~;|HAA9c`*hpLjH;E`@;* zJt(N6#fR+i`wD$hn5K25TUUbVO*E+Nmd~C2@aBo7)ipQCUo;T+h6TLwp!Ita}aEIPA?to=x6Etl-_aWL|a$ zF3E*J;YjRFLrJsrvkZZs+s^E?EJTSK11${~Ei0`WM`0$7X5rzDq^Y2Bh2*Wf=F5Wj zb$0V#_4lSCa8*fI>v99DN=h|_xP@kpz1`w_`QH9#>C42&&pH#Qt3+s5{Yx%&-IFJ* z+z*@F?TwPKed`X9<=_m5Bkk_yh~*o_+c*a|^d zl6FNjrL+^6j$DaYW<1AsWzV*HRaefl#0=1PedYxG!+mYP`GQvN0l}FEp{HI3{Za+$ zD?eKE{#l~6)wc_T%K9oj{h^lqX!1rOLhSX@2q&MUt$RGjSooI;iT? z1RxbfpnqE83|FuVD^iNxxvhu`I}&wl0sQ9qXVip@-39y_$MsBdUde=VX#rJs zD$=bB38>KL=r6H_Vg8GTS!04tm6&KCJS`4%7=W?@FenjZ0rU}2)x@sI1my&nDyVZ$ zOy^D@qHzGmC38ci!xMn|)Nk!z`I90*^aq{Tw)h*(er2L(bEG*6OR&vVp+1AxDzY&NSJE{mCN+TIj4%Kmli@x@uU0(x&YQ?}r*- z|4si1?e-o}zM+m}dAWVE$Z?PdPGLTNuke#LjW&P26Oi({#6BAPHQsK>DGAZR z#ZD!BJum^|ncT(m;rzV6HF+5@2?+rM+wpmLKYBV^i}}1gxe@B_9?J3Ne$CGMIu$#- zy`88&&~g~E&nuzN_?3zqV0+Q&!(7#w#zM7e5BC3zrEZXRm>P%KYC;Y*#KMl*?LqtK z&*x}MWmA%j^0-Rbvaq?LV06h4(6YL2j?OleGR6qFRg_A@ck7g1%TJfxPQ@D-{Z%+EHiOqE?lO+JZenK9_TAE; z_Li>XsWb$wF|4Oj`6$+$PAEaEzN8tPMdYU5aoYm^_)+%`TRTtx1$?5LHW#{vp?bug z{IU;W^0#0DUp0A|)$F7EqfX=KG6iG4<21c$A<$U}e#vBmd%gF#tbM#aC_oVclB6qoEHA}woi?W$)Was}_E!b1B8nrJt11AVO5nTrvPa6R!5 zM@2JSTi0&DMR15eTsUS>J(oHcG27S$3U-NWBm*KgfcKz*jXM$C`R18e`LJP`_Cc=T z^U=v+ZXWETC=KhbZgp2M6E$MPgq@cGUQK`KE?5hX1qAaAKm-DZ*?ma_akJK%F>rs6 zn&TmvI@VewAMXw}shHd+ZLE_pVz8-Q^tDS-4B|UPUNywxkoP>RuGJ9wt(RjUNIW&FIT^&5WtHyme z_IDbK7z!uQbOGQhse4~p&1)2mSKu?ice0T-+UzqOcOUqL6>XB;5B>7l#)7^|IqjB$ ze$wjRIADW20H;WOJ*kbhy8=Y2w6jDmMxg-xP`>%9`^3DHif$E*h(Cl3HL>{=#y&Wt zOR-qpJ8dSxpN6CYgxugg;_nDIwSOBA^v64FG76D%F|kow|2eL^;SEPwhg_9OMQQk; z8Y7xG%Qq%q2(>X}Tgsxqachr=20FF_W0{^9y~lb8w>6!QjNhc10U=Xq4F1+EgU z`AHrbP0k+^#3rRE)V9#s%s!_$NQZS~JF>#tr!5_~M*0J=TfxaAfFGH<+1@z>goakQ z4ur$YS-A_QN)PFR4UhC8NT3|XUjgmH=RTmCjg816=LX#5p&83HCp5Gmxnw34t)Kf8 zcohqH=-o%w765H7+od%zx`^TTFEI?lcWuOO=6Ph4^g&O##L`R#ubI@+>XqfwcaYf| zWzMoH7E7mDY81~^>s@eKeg@WzmxUAXGANql^gR&c!=wOCy7*}>hWL1Mo@p1eWiic_d_yZx@qGgqg=ihg;?QjE7YB_4Rhtol`E*|da$?IBerT^j&Ty{B}J!`a5~u^tF1fBv}SRLL8k;*fQb(?#?QFY?gMlFDlp(2LRaq z^*4SfudK~_nDQ&d#6LsFdwk)cRW*=_ast3-usGB{$XGJi8N-cf+p0p~Cvdr8MoAcTFh?HNURFkl3bq0xd3b& za0h&RXiAO-EuQp)`31)|z{NU3AG3@t1})xZh~x}fcYYdINaZzorx6m(;=#Vnss7ux zK{9B7UCXygWblUHmYju}li>RQ7#l7N|ce(OY|{e2H}JoSk*9|Yj;`{3wjTnA4R;7jp) z?0Sjc%1iu1EjqwIw;6i8Yz$Ivqcs*5GpB!;RZuL~fAGnV)^;JdNWvqG`ps?BIRu^v zgS!z}f6^W}(*MypKIK`C$<{M+S%_mI+4sal+6bK}VCA;COfY*SR55hB&^(g_jTAcT zZ)tJ!qGO|b+#YXV=T8`j6?LdxR`wke<%u_`FgsLLLo@AIsEhoGt-PP~Rfdi;U@ic) zl8-TU3zr0YC+OvbMVfb~HrTWhHe36v%GS1b{$h$+4NnIz4 zqTwxwvqS9=$4R$EAa>il5kVD2X6(wdq>6!nT;)H4vc6#zc~$QFDekGZDK>SCa2t$$ z*|ga5G=-HPM*a!Qim*W$@P_HL`QTT>sz(<#Y2E#uhclI#J!UzAHYB{saPO6=9Dh8$ zuBHvR`K@yryUYzPA7a>=tZD4sZ$Zp4U;d(o%8FESXH~DLeXZAffHUaluppJuQ@kN% z>3S~(`NukPN~N>~9S&%U7+EumO1Lh*9ri9Wl%1HmbCv`~FVBs^qTd5b0Cc8s<&>!HfA zv(Ceu7I{#tmZ&#W%nfZ%lhrwWbpn58~BB26kK#74aj#W&02WQq|V2eSglL&W4PDrdfX zt?S~i|E=;pgr;Qg7+q+DX=a!O;|8M(P3tk^9#7jL)=0kq6o=4%IKE2}vK5S84@b=@ zuxVPJV*Ace;J@F@JT$4!`v_zSRE43G{0IKph12aFac|orWV_WSv+OUY?V>@Puc%L_ z?6jXu)w8evAHug(KBc+NRXy9lk#dz&uPV|(@{FgjFHpSa&c8w9)MLR3JjzEm=$kQa z(%!D0f>~crZ&=`~Z<6tpqyBdLI)`M5WmANoM(g0cr^!#X((Qt84)F@IWv7*U#y@gR z#mzHb%w1LHfHD~>@uN0)QegOM@@mR>ZQ*LkMsd7Cpht_813Pz*l2$xebf;xMooUm? zD2C(Nxc$z^4?pqPxTx+*qtx(hbiS1_#|EcXcZSmAlW8&Qpi0#RxjDdXv&SB{lCrn& z%;*Je8jL~ma)%?d5>)ur-xjH{^B-9Frq>cm-^II+{Rg({}h`Qlg}_+u@W{R;;o_F=!yIjpr)GF4FjimfxXK z>S*@(BnX*UAFP<0u+JBptZDWGD^~j8Up}`<8Jb*u zpK3Oa^cjjQtS&Ys?CkE6ZKQ<@RM4l6grWiue`WqXJ?h9Vq@;C572}I#mzNe=g^2M` zIT4;s37-ZzQsiV&;6zd6E@WKFF*Dwli4fXvjCaZ|rP=}T7{Ckrkd&xms?pp1#lpr; zPycItf>H%fMio##D{hB>)NQX2xIo7+*o|GbGwL!TgV z+ZK8Rw=8u(uuTrc#r3T><9W_-OV(|?7VkB{{PPEo%-bsncYMmnk%MfiLHM+NyYP}{ znUUK2F1;9}Z(RBFdxUA>@%pXuRf}>h!-tGq`?FRh+Do4X{kHqNR>Zu^<8A==apr3q z=6DFsuosHZiW;?f>fCOGv>a6=W;96iHE(u?~U2v)Mwok zR>+D-@$4cJ5~Q%kttGC@`M6n!(tssVcoZ^YW0N7T_{=|?O)yP!z^%!d-gdq3Z&lQ! zu-**DXv>zM7V)d00ZmA$A-pb5v=Q_FX?Z>hmtujf}E z9G@bGG(u9!mAW)8Glo%H0Ih_&VmxiSy2T2#!-$!mAD{0Rt&@H=b)9@wv*Aky>Wvzv z1yJK)p+UukwR+cLlOMHj?dwjDa$ezq#UDQ3G9*%nEQHOuqdOpffWvp(MnE5&^P zYiNd8LL=1!x{CJ0rT3eJucqV%vICka7+L`eVYjIeg!v7VCjfdR=2i4(5ik#f;9!$dfYZNad>lH-DEJ_rfO%S*XhUZGSn7 zohBhDGESWGprt-OoL@d?k0p3;mps{0Klk4E`y)Kc-k)_G)t<3UO>9}?%5c!t9ci1^ zsjZva7gQ!l_b5`x8L>7Xn%-JSLxSDc)df8!qD@c?w%;Mxjx_{0rDZmn(vvwPA7k`zjyr!MnSuhfJ=|Dr0r zrU@X;1({FS889`*b}3)EB04#&zIo|{jroTyKcZO$qh;vGaWbQ*;`QTfXC2#Vp;DHv z0F#n0f%b?+0aOnEqMpA!%=EO5pVVn8&~&R`6b#V9eWxt|XAYw|PIarh00Jll1)TWc za)yBI9GHFF?S7Pft>A6d!1i#y>Meh~4DjIcd5hYa`h0q;7o{T6;}GT2}cCOcXuIv_4k((05tC3DorDZ@@=RPp>dKQ9N=amnp|pE*NVU@@(%_ zC>1yFPB2L=1?uh#Zv+{99ZVO~5t_J6Vq?cHjD;Khg%}B@UN=P~q%y4hx7y;aLmi6i z&77g?0gGNt-#nVCzSOY_i?LLbUX?cO`Z$-RJ_4@_F^{8pnWRSBS@MtSAro-Jdc}pf zm#5uta?~O{UZa_>Sd}#JI|kwtiOnR1c((ie9pzf+WyTp*ds;;&t6gtZEA z+LSpSKh(D}tO;4c zc%2Y82K`YZld{F$Lo#zlJ#VYO)wi+syam2nGBpkt*bMR|Y}W{yIcS)OPR>(kI#2SM zC=0n$N~|09I+9lZ7Mvsip@H$=5ViDN_}+#gmMd#E{#AT&!XUH~;CJ1z?2&`ptpdAI z=6Bj?qQhl~=_t&yE21n1rR&Wq?E%!7>pw84G6CN9+0e7KCNf{79$10}_L_@i<6ya1 z#vp1VF1o+BBS4R^8z3ZCD*T0gmYLvya*ro^CNu?`y4?boHJdw)-N2C$q?ELcTMSk> zs-w=)x2Q@c*bw1xFK%5S1Rn%3E&@#7SZ((@%ty|&kOw*VF27Sd84MV^_1AE00{CpW zW{cv&hKZ8yo?#Xk4q^)&y9=-*A*5pnU<9gHflvrli(82E=IcAH-n}iA`f(#j{~@T4 z=ajq64mVusVg+I|MZ%5Lwoi*$WVId#w!N(vn6-o1tvB0rfcrV5SCz3M(XBE`N8_!Q z^Z>E#pT;E^^mp9PYJTp}Y(<-%N_ta98Zr^uVCVwt0jt8SqD__3hec$yDXg|h%|l%4 z?ldZwC;xpbi_2#}emY#eQj#!Ak@IYSwj3dOKS%_#TyyqszFe)s496J_xLj?biW4~k z)WE#Ea+5I+!7nog4md0|+EmA}!c&8uC62Na@<&vpj&Ru}h^TYo)lM1a*;1DG)ylgDr&DAaWXC9g)PeaLk`% zEK|6}a9a5>dIB1muLKkSfkVasUq5c=pX{XXD?bhR%5v?u%A&_hF z~u!R4#X_yXDH3lYePvXllDy5K#- zvl}F=njl^Ay;>f1jmpYN?CBgN?GNhAb05Ef$AcO)yal&a0sNTH&&*Bn!r6`Kc-A1V z>G&Gh6mU5^s>c5H+YLZ{PUfNbM3cgU42GgJBYi}K8#5P}X;OJnedQ>#7Cl|Z)QM&G z1CcQXyh~2E2lK}S^pp@~a;1s6(_yhm`gov72HIhA-J=UIj2v@0WQ`hueJC5iskg~z z1{=h2&KMQqnf>t5&E#X6HD6dDTHz4{k^V>YK{v4bZA2jDm()?pab+*wJkgA)yeF1Q zYJ^et?Bv(8i?LtP8u>1XG&w4;EoR``VWabeZ`r;e$=kZrapI?dnBGbYIMYr#e8)U1 z&WMmFhV{ZK8;8Z9t^pfsLb%5tv&_Zo*Q$X!sWQaiVC3ov9m}q0nN2;<>TqRCsV)3i za-@-zlbi0=@-O#`d&Y+g?7UY~GnD4$-GhmT{VV6ZJbPsCl`)QIDVNI1%h?W!@V^mP z;Nj4X`?xj^$oTdopp+JV zhrW%C&Nq6Y@5pL10T`Xlmg|e$2G5&EjpVfqm+1>QZt0Y&TdD3%v0dRSb$+;@ZrH-| zHpIVceqd@&oG<4AHNvx>8RfDX(_7!7R%%7zYCP=kQ5y+^)Kp2oSo#@LQ_-Dez68}D zUfBiKT;!#?5h5TDKBz1`rx-JR388$Ab~hfRFE~&;O;Ko}_fRpZnU=1es+sC{!S4X5 zO7(ntp0dcj)utOLf&ISyw1s=cE9KN=F~^%1bXv15`#WN7O@-SRuD+Tio+RLK0HL-I z5}yz;k)p*c=%HKzYs3=5elS5i!5$F{L-y9Vtt1oi%i+>XIOy^If$;bhZoII^@rT1@89>QTAM+9wT zl9MG^RtD;tQ=7IXNiy^6!f`nIryUu(-o$Ms9Tpa4+*5*0WDMqQ+zRX>B(iMQ??@WJ zGQuE4DI4z_=MMFou&!yEor|oMoOWqT%sW2@BRK=ZR{P*&s)}09I9B{;8E1}2?x^t6 z1!L2iCZ?y0y@PKv^LHrjbaQw7u|%WT*DkSkX{?;1?BL6ZXi^T9z8?92k*ZI|na;l! zoHn~LDNYTQESS!`%R1s_fxxfN2`G88V_y}KC<*BJvSgIc)m^GyZuIv45m!K1m|T+F z-ccF4kg2Y2gKLVw8CY3LMyYs<%b?z4c=5L<)Ocp^jtw@JWSx=FU8l2KjgZYO7M z8usr}VstOZ5eNCpVELOgVuhzZUf438FIbM+tYnh8rNrPcQPiznClyx(On{t4Do~U) zLFKAax8h$@V>F58YbLJ@o|&_ImxNve4fYTlff_I3v_S=Xw)8^%^iHE#PAonIJN zPL{i#r)&oT*VcOVja{ zEHf$R@uynrLANsQ*yS>Dj&;vpt4=h0wI%;5V^O@TP9Wx3xDyC52x-ahy4S_MIbu-t z&nRf`xq=J8oqLg4@t06k@c6@I7PIVfvO7lsP ztoxd1Pfzd7%&0}SP0?gxMf7pOCt*eMKI2OSb9w{YT1vdfutw~d^2m%7|`5ikK2($ zCGZ9gN{*-46#E-GIbOPQ+gU8LY}URfg7MNY{c!z7)<6G5<9Rz<-G(N!yX0#J{|qCe zJ&cVb3g9YA90Wlnw#0HgXcCqW2Mbb?N6iE0Jm*4qbsW&wwK@B`)H9cC+%Jiv@#)^> zLU;`SDXk**bzfII9tk_4M6d&;-SZcGxSzpz^{i#+Y+nzb7|84Vn=Oz`mn2@ z!tN#vJ8AqvF#gmHi25(-Y%da90DgebNpUnkXBJ%J=o}W(u%zSzj$Do?-$j7siY}7;$$V zqp8mYRaA9qB)ZQLmLQa@EM?n@whBwMt^~e@vJp#E4lL!UszvJ=hj}Kx>!~>_p-HKY zCDm9BgrhdvrppZjW?e%xYRBDz=#IN{_O~MOYs=5POSZO3mII<1VAGP8DLYbyqw~vm z=%I#M(`G8-2mdMP!YX(DmgXb30^U~5J74h zb>{Kh0%-Q}TzsoUzLpJ<1U{G7*^po9lz&*T;?+!TZ?$>*QHBOYeB{G!Ve`-eT zh`m0g@INMfuw2|g@rHb?ZZiAFR2>XauMJ}QR0vU0<>1)Xt$&bP|=U6djla z$e&^9Zmiv`ObnK$Y{0SS?RrO8-O^tLAXHZQ_ialLlhGZfmZ5Vq2 zml2y&sEag8!Z;~51{+vX{|C4M-#Hf+%)VooYMU;ir6x+Pv*)*nqU4Gw`|n)x{E0(0 zS_BjIrw7!*-Af;U+kCl3kJ@>I{jW#IovpS$*7d;t#Jg(OwQ}QHZ>%YHL+Y7IVJQ(cJI2j8;B zRWo@2EkAWm2f2P##|Z*--Jw|I?*?6eh!9zS$QP_uUtyQbm@*sb*WrHeunbnkIGfhr z-eFX+6?aU7s(mjj(I-IFRmj#hWK7xj=8_q~Y+$GNz7=QO($`v|xhuOtk2wJ0R=V}t z7tvk;lFFE}m=1&hM!%V>*i21nzu?+NxD`z7HZj^xxMpQ>fAG{Ykl$I*m)wYHg{QB? zT(y;JK2^YhcP>I-9v_0PJT@S+at*3n-w>B{X=qB^fu%8a4XSeQivg(jxCD@F<^d(d zYGnhrinSr%L=6QVzl}L77x3}0Bb*rk^vy$5#Hk>hCSW4@WV4qIA!okQoKYO2iO|4v zV_F{}8{zl5+^O&Ct zwr$(CZQHhe#3d6#B4yp>E%Fb1Z7sP2W1lAmG(D^*xcmKWWUQ}ZIK z8LNtA&EsR;^c2;SGrw{uq}TKW)6KczA*wlRc7b8dqf@Pv@5*|wRE^7e4>uX9h%<+9 zKn^#f#XM__2}?tbmKVF}gnD3iY1t+UF5veNiEqV0tKaL*r_h>LlWs;CB@ z5M0TOmnH{-PzxkgK&fc(juPdyk{$%hidLZ$0+!bGAZV*rt>uB+&e-yBG>9_cSdc%Q zU%xQ&jupBf%o*hhL+k@-3Nj6Uf(M?~h{J>w?e7I{hpN&-DPdFrG=xhPkV+&P6FrgX z$xvu^v4dSm!nz`}#F6)!aob=x49Z+7SC!DM$OnLQ*9Y0)kmXR}wtjr*0zIk zHF^2lMZzuv->Nx*5>DBmP$@f)(jE)~^M1}lBRg|&4}ri;VwqBvs^5pDh{J2BzX4Rb^u97*C`6$D{PP^_vt3@t#*M5?j_4l zalL&D&vB=l=a^q=7D$F;{gcO-fX24JS*@#AtIxCBh;^##x(1ETU4*YEc*G{|o%QZB ztdSUd`pk1JI9X$3>Bqj#HO}hxXlHk$SjTAN_CYx;vkP0-M(kCw4-niFl3Qsg&*DDN z2W;svn!o%8M`RyUU|tRiyx!lNF4mRvXk}T@`d-8QQZt{)U_sh-U#bnnHRlm7R9Px_1FySW;Li?{+0cb=rv1TkY7!{ zs@P>Sf~WP6&aX+=Mp)yocP#sd=Kp*pVpumkFn`&{miZN?4G)X|pKpit&^n&|vsjk* zjjL$Z7lNtp@3@HZzrl!Rd2Z`J;X3{75G66xst#k#u}?dpnQ zJva_-LZGu9nuInd(%A`1UHyIQRJMcTXgBxR?}@OsU-#Isk3!J?!f4c>JXQ^OQD{N2 z-$n7eC&2$*A94R9+5BBD`u`P(`5Fsv;h7N~eE<4Be*SNOpM>A1g`3x!Y@Q1KPsTKM z%^o>Dx8|7UA{@B}Yt=&>p4I>tu;=|N;!N3gh?NA20zQH`3=EUR)PE)g9zBQ=B2`2t*&=~{gGy7pe*zZsTXdY{5t5J1l$F2D^d79XA|!Zu;uPOR zSWmm+5uj~K^yDZ9R!ys!SsK_4)oD}Ocow>+L^6X0{APQ@?>V;7I0ms!TZz=E#ox?2 zDIs$H53WT|iBwB(?b!H*;^3@p?M79^4P_x|4Y z-R2A0XzeVlfSxIy0_7C#L~`eS#P#(J+^(qf)}1sIlTY2=Uk6jqW0%V;0V5NKQG?#H ztAf_+j$^{<->&BZ0KMxegc|bo%nx>yj=AcugLryF7?BSU!77#vLAM)t=3;Nb>9 zAf1L7YYmt8a^fQ?%#lbX_*y&ndbLlKs97j2Yy{3&&;+$4ATxAFw@>X0oXT`DF_Od9 zBggX8M9xL!9m--_X`2?9iZZ1rIu1bvOUwxuEGTzL8;cw?El=||)pZQT!-`tcXG+y- z372q>Q;PI(@Kj#54x6j=Cr&E2gr5UZTH@ABVpfvqcrhoXASWgLGm{T{EK}zpZ5rUKnAaEds+JBkv3GFx%``PE+<-b-)&0#OFWF?j;%b3`9#mt7TS|^n2$fS7_ULFgyv7snwlUSIBBCNqZ zp8yBA2i>*f#m61k9k4tStvVUrsRd-)J(Z0&7LUZc_WmwfaXG@CwevNW3yCg2#u{2F zrB(tDLtI%xQVp$aSRIp>ja=A2wTx%#Je4CrHTc!=&-`eE4|7RWUuD{2D#K!p)yW~i z{GS6tb%YeCUT+yCyLHo=Ew`?WOJtzbZBT&=eY93K6vUUd!`n1|)a-6nl|9&)?bR5Z z)OrSDyRAPmn;U0e=gF3GO``Km^tT3o|3(*usZ}h;cQLhsb@Fwju2;u%N4KzxP}Oq+ zrH;(s?DP3+|G&slO<)#Pt9Y^&=G~~dq+Y}H1BD<_@&5&nex-$3a@CYeGejK#UU-1k z6v;$qqMnl5Ju(7=fHt;fgRViLa7l~yGI(_ciya4v99<%-JfK53*HO8iCVr3<3a_^E z43@({=_$BpOh{8Tm}FpH*_*)b6nzu9p$pAS$=q?WLoL62eE5EyT=M<2^!^-97u~D2 zRnx;aJ&TV4D44ByQHZNUgTm!&;Ca;^MD%D0Y+vnO>_jjA*OB@*(vUS^M<|ffS)nm)o5&rQDBXqs<9s`4$|ncc%gz4!z5YnY=i_oa2=je6`g^SH z>%!;d;^t;|`^8qPtD~FqH3sMVt#fpt`FVC4c(cA9n zIBq7>k!;~ z#TT}u4~ENUz`(~E0=+pt*5^sZy%xB`B9BFFNukV z!~|MLpVNx3GAbF*j)?LY#}cW zg>ZN@TSHc^7dchJ*?uqwF!;Dtd1L2v+;D@FxTGd1ykfTV4pKdo?<$g?J#7n}5W)ID z(Y5r47@ry~y3%p(hy*5RfF|JkBwBXvh`C!e0g`QTh}8VtN^aszzvx02_VLkzrj)xh z$Z51K>3U{j#S`tU4gFSNsHif!`Afr* z(<~@X;d|&BoRuB&2h;5{Ze7VDj9W6aVf&!rMGRe88a^%JE|=*%ONHVTrk~>0!Z=5UZ07|jDdCjvaG(c7fw6N#TP*qzjns#D%rom_-Pvo#(CNiw78Yer~HB|p})VQ24KlA5&_kJUL4UT0-rW|O1quzk@I=Tdoq#Wb= zTLv@3cx1Jxc@vea-6fS1o|&D^*Z+dEQA{F+NIQ^4Bx*V^BsUPum}++gqK8|U+&U=z z%?<38B!fV7^A0hGt6eQ4_*_}%L3w@ayX12{H*tL`UR=a$w~a8aA~QQfzh5KYD>Y3 zDeOSxNQiDSR0n51Kva|X=hm3eF&Y5Oe;=8Z>GcwLmGyjqzQwdoGhQq-Zv(z9^JZ=S zKUXa1og~B=zQTigNNBJk zXnazVX^j`}Q}nhra0%CQ2d9wIFTo8My6 z-eT&Ssp?;i8WAmKpbnfbrFE04*xmYam`F~sY-rG?Lv#uRPQCih?8kMcxWJH#4_14} zLxSFV1U4Q0_JK|FMu1_T^N!wb72#nxmfGW=Mum!^U&C?c;+70-TBp7;n={!vzO-%$ z6{O*N#`pU-iZxsV-_q~Mv#oE0htS9R2j+Gc_GWc~+|=*J@4kRTN&g;t^4bgWVzOni zp>#pc+l7W*-1P;1I~&+ZlOB+f@ct>w*f>KG)rH80#*8H907wG7FnTtU+ELSE%jDgXw0>~VnAdo z3G}nZJZ{Kvq8W$$w~Y0+5^@@=pe}`+uS8{?=Uw(#-AY^}H*U-FKgv9$#0gGauU3`1 zUe5!AQ3ZDg7nZS3cixiJeE;s44OKNtxL)ONhhga^vS_@jznd115l*L8SlD~G;TXZk zGccRB|%fryxH1w8tBzFm7&A6)kNBj75n=6;kZaTqgxZy{KhkM%sfC19lq zIL1Ju@J%4M-JpaY{;1mtAblfEF6o!@(E`+2d1>aG@!g2dGsQcCXvu-e0|91$t z`LB;k2mL>q*_L_#m&~?TQScns4{NU5E<9(Q-*gvt$T6f&Ky$8Gnc51JII2;o>TfPC zv7Zu$HFLb9BaZh->MB7O^*qpSJoB79`PH`=yx_ot-`OLqJeb~5H+S&x152u>)~#;k zK2T-)g&zw z^VjX$`>SJ#W1GAI?LS&u<3}^DzVgIIAek5e^mc_;)9EEBA`_C5KBv);oN`l=7!$z| zcHw9|g`BhK>Iz@Psj6Waf7yU1q}ifmrPB1PVE5^=Re~;g`_~h7{*4gzXU3`>lDv!x z*T`(;R2N=fe^xvjoPluwBWa`<2BN%TqTi24h_u?yw+q1{Kaiad4Unu>dhtdcy^mqD zfA+c)o{CvkFi%DmncW1N8}*C~JG8{WeWiYb`?CWW3#>yG1!Kep;-@nWP8Rhhj9ZHP zn`oHy@bCJw$%e@uRl|X5O9IB6mD)*$auf-@DTdLUhG)&?z?xksJ?|F4Iq-r{ig2-K zcjL?iBdvSh#_n6eCK2ZjjenZKo@{4L!VTT{v?;oa3GKkn9F4jV`!-1e2{>Y&v+wkq zW1rK*+M{}MMgV8`_Di7?g8v^5^`yKA(=sC+`9Zh(grX=DOwA}`;|T4)F^So2 zvLB1wBhl;mOURawHWO(S#2Sh>4WYU#Fp+x13lkY-@AA;?XXgt2Y(YLUb%dv_NjJ$Y z5@I0xD4-cf+9i(G$>`*26`0>EDh%UM6&)Z9P>9Mma9J53lXz~>(J3i6!0VbY8>GT@ zou|Z4D2MR(+0&KU*WQ34Tbsp1lOia$m`sY)k`g!m-UQ{E$gSYMw;Pcg09_OdvZd>-ha za;Gar06p92)zY=)rDqRMSTOc;^b{{sNmkit!FUV z#X+|e;issB#S*~2(m3TrqMxI@IV%B1@q=>j#Rw(eoyXvV3nD`HSG4bK*!r4FEK#l! z|KeG1=Xo;rhPrIDU-ec=%@aTEqH%kg+Zs+bLC1p)bbypZiasB5adnH1EJ+=|{=GkZ zMTk}Yee$bKCuFomXUNf92$sGUY3T6ynUHLHxw()-u-M8TrHM{wD#;+{TjYK zcZXJd5Y;rl+g+S&Ma*NjDbwpNZoYjML-7QDJ16cKzA{lvU_;-jgfS54BKqO8#)yl_ zp2PD4n_p7le~|q5VO8oaM#ROO8u2XKapETGIR<}1(=0fNblrzQs&HZ%#J0y`RHK?f zIg+AE-{oqQW|rn3On<)LdfkQdy^;_EjHBY#QIZh@mZp1a!GOfH?dzojo_*{v`WrgA zkhdsp8B0qx45>sYbUZ2oPE&18HPubG%T}{e>}7fo3TMZ3$HDJa|Em97l8pz2QUq&2 zt0gVbQ|PB)c-Q}YbF zFyg&wP@{ty_(7mrT z=)2srf{(~rP}(=aG-l-Y8FN~&g}K6e*J_zm8xySfx=K%{$CmX)C4x>e!ieVDYKa$| z-h<^FGAC+?E;MrIpcwR-;P&*TK5NqRq4!*HBktzt$im3)J`giGI6HW&tA;$+$kD#! z=%olsx~#YDQ>obWOeuJ#*J@Y3& zx=KN7PI93ZZe5WxB9tazam2xy0=OO}M7J9l)~uybv7SWyve|O6?FJ%Pj>8_C|0^=A zNwe(rf*((#GWnIQERJZ^GpJfkp?K=ej%w9^|N1?3v;5cDutv@G*OfP!zV*Krzx=PU z#xDWes1-`W{_pVrXc$zdni*89x_{?wekN`=sEKn>+gbb$*D7r{IjZ*ThF6FSwMR+# zzPtU~FCGD^y8-USvOTTZ)o5f&)8Lch8YMgh1guiw}xN?KPRH|f| z5{`D%3+wZGd3v^=`irgqEfa7&It%NQ*3b9t_IkWOdmTCp3kL_=^K{~ zIy@uHcSP5*FHy#*hf{Od^Mkhg!s=&gd8#S!FQ02y8$B*w$!l^khH_O4Yq{SHx(U;E z%6VEk&~#M}N>dMjDrtevf>JdgpeXUpn}=QrzDE{`oC@yL>HHvoALi{T%l$?SCGtM% zVmcf-!yBDhXZdAQ`O6qfxY)`L^E-NMsTRnUDA}9jfjC4sRLhSSx>J@RT9U8~b5Qs= zfSKz|iFe8Dzlch7lAYWG5^`wef*vd(MQ6=xC{`9ibA}TlHsf2WX92#7BjD8)G$h2C`EH_Q{IGDS{uyNC-bLIor7kYrS&7f=Gy`;OkpXN@C+ z8~h2+YpCwio`fRU&MPpK4n(^K(PXL*UZ*!PT3?i4X$c_~5D$+sf)_uZ2*nnnTP| z-ljbm2)T1o5QD6=Kxm24h|%u!4c!afBAR~`wf9MH6m-HY!HS|jy{hylJXBdJ6thu# zPFT4;zZ5#pe*ei{NRBO-Z4{>SCd%t>!_2E+N~=r4fV8LuvHOiP&%}uF9uuQ1b2+YU z!@Fp1biamccD(`GP5lx6&r-WV#aG9}p|Oo-nvO}-hypQIn6dKSjGChJq`_x!tyBUU z6w`Cnzx(ENvC|m<`2|I;Y$m5<^gmr{a+IJjYk{D*9W>s`qTzRE@qU^g>2 zRVRO2)dSNc_puZkJ#+@a!Q^GAd1+h@Q9WOcgNy45bB_6JLqQR{Jl?B zuBe<^0JQ+I01!zJQzB+sSK?u94iEOgU*{m)W!Qp9B|F@Y3zTtMTYz?<&1j!2CjaWe zezRKl4&5#&Y8l+y*FQnZ*rpSjj}W3V?Pr2>cs;kaX4Yyl=}GZc3n8`K1|x^4gV-K8 zp3=B3Ds`jd^O8?~NkjE11tBZyp|l%dtmQ{(#DtXD-g8JzMSbv}AUK)br&%=d-LYsh z3Od_UHW5pcJ2K^&FWN$nCM5HNDaG5)%8fHQ=)HSEe4talT88V#?{Kvdp3wBkQl$s% z5BifZ3XyUU4BP-Ix;Hr-o+==dB4eFE%O>A@eZ*rQ0cxLaF5+)Z0CUc?qK%L40dj4D z?NX*(IbnEx2&W1tBeR`WWJ&1OM2DJAGe?(~JQLark5nUjb1qCS>Yzk)9}xcd2}E?J zKiACofrM{K2lxprGVcR4AK?Yn1N1uce>URYm7_3p){Lk0Y|5fBU^se17*2B-q0M8~A-J9x0)y_(VmZdbD%Ft3 zojuaWL0`DwHD7W__Ol*m)J%zhgy<0C63#))RUlJ-FNL+SYbibb)H;{~g=SptSvYr> zzkUC4{s@&5{R?IC!&m^RNAO__w6FysLug#b;c+^B1LQ@EP7mC6z(0+-7aXNdQUzRa z-(9X_r~xwP_{MV*;u?=^|3vl8i(yXitb>*|ZDNoX)~*)N>?+8Z!f)gQAs^Nx*4f9K zMy^e^eFl-O6!+PN+)}ES?b5IT^v0oTbd#(pE{D7k>;C6TpDr>x*yTf$)&R@NhIGVJ za7)Jy6@;o>=p8h+a%*%~^ED8E7$m{G{i(IJiETWmT5hKRNN-usHeu0)r+~h+L-z2r zYaDg^U8T>5qtQ`1q{yPlqp!u5Z}R8%}~9l#EeK(}_X(*5z9V zr+LDXmZkMXsVyazdM$%ojZ^dMD(f_McrG&o8*M1!`5fnT3m%O!m{iQMTBfu)qOO^vu`kkBL(7~ROKK9=Wqlx)v44F5G zwdW}^EMPW4bgYgAY!j#`iex?+6;hGyg#Bjq{Q#>joe(t$f|d@j@xj&6K=bXS zU$klgqB;GFmjcN2z!*#VQmG*(8Ph3@CTEtB{nkxtxgjQ4urf1ppOsl?%geeEgq6}4 zhf$$X1#)bi5BHy(`?>@5q?uIXWJDN4r&fT}AK*$>mCyT)wZ#E9w`EW4M91365raSD z7u>rIX*<+2iz`su?qqX9dQ>h~M4u+^`E3p_M2M8-HfF5QxGhrr)@x(|gyA&jVm9uF zp4`_3msdN)YL+)oWEv)^Ru3(2OSW&)JmZWcfQlypj#;Fkyd|j$d<)=#D6jrP9ar3& z3b-}r)=VZiKa zk_nFvy-T;envnubBgM8J-4W>?4$nm_c~aQ^uUaaoI}<2A$=bUNfXv>0W0Q+I;=^!2 zdsR9I5ykYs4G5u#HIj@*l9x#v@|r2{!u>U)4@jL+twa{xn%g#bD0t$bNyrKk3F7Gd zBcgbW_R{qYaWiHO0d!at;u$7#-8_tFHpSv{TvE$NN=sG82R76`4CuWmP`eQzc0<6d zp3+eub`dP-y~mb%fEhIaQ))jZ)IR&GRIw3k=)E;o)V?$GU$g(}PW^fCehpje0c3YI z|5sSr84YU3i*mX1f85KPe+T>@&S44vYxO^2|7T*Y-`Se}6Qr6)0uZ~{kQYMpIuPA# zkp;VMV$Y2{{WKDE(r;ggZp(NLsKILeqwa3h!y!Efz%74ZsT1~IhujbXO=mou-Sa^i zx+#Cv<5hT6NOw0(AKdphYhT>B(HxFg&OIQcIwh;tR3J!S8szwAq>95ZU@S@fg_R^C zvRDk2ZaG7=GX1RF4qD-adTp0Ho1w!+o!s&qVb8Qf&@4%!c#KnySq{mBPZT+jnPX~? znsmh!O&JlN)Y$f_&KRW;O&WOc&RYwiMfRyAEZoGXpQ%_P$qxQKZ!|0#a2Jcze3(by zRC2u>p219^Tm^k!(+8f9MV#$q!eZ1yunahOIQqy0s3oB@YyTq9=!z=&T8aN@68`$2 zPDn6ewo7A;yCb`PALuZ%N-vJmiogGQ3c~<_sQ~$k{VmqzmdatsvIJSXK??3hHMJfX zTkrUw-$knL94MacM{-0b(gDdR4BIWUMbO|uwlwPsLIc(J;rk^j@ulRzI|PZ5y_3bwaxl|P9L0O zVPmm-fH|x#iXLXW!Djkm_34(W@fKOevN!$2hO_#{C5@%XONVHdcaWDzqS0?z9?LgL z+GQ;J6l2E9Sdx6)3A3h&VH(sP%G;2m1@Sxc8tr?T$sjmHQE?pCbk0bzH5tRd@5dWA?(nIxUcNvWNER;^7e z4brCPl14&OErEzL?)Z6{@Vi*v(p^w@7O8od=p`nl>c-P%{ALyzMcS0O^b^DOl9y)x zfp(CiT)(X^dR+vcF)=3#4A-{?%^KwI=yC1^HmTN`gov#v1K3+xR>!k&2}4%D+;qx0 zkwd&8)l4#ZH_;U(&9{YiCvpk(k~T)P9j-MoGRWf||L9_Y&%4lz8?kg1mw?eh9etO6 z_n|?32RG?_SW$G-j-+~TjBA1_ngzlHIHr<{p&sqgS4g$RPKPPy86zL0zKpmTF+K6Q zdYm@|JHpLjPDT3)Z2++W(AvEUHEk@PpEGR>!nWl{B%Ej&pV;*_E?i>UzFr>=Nmg}4z3MMEQy(H6t!2x zHBOyh8?p`$3+vRvf`}`~eFWm2EVa9?zQK+F@JU8@{4I$y)a}Y#^_$#7yAMB~GZFml zFhHO;=Z#UTt@G>pQ?=PtL{8&?onYJ{x0N4~h)Mch8z&v$c|96ZM1t?^mur87Gl+T6 zbCqsU7o~H;3OPzZR4J45ho83Km|BJBQZyR7d0hM+pX;}>)KpU39=8Z{dg;R3rl{h-596hJxRBPy0`gX(`YETgJPE?|cpJ%-Et+s;6=2NUgsLaVD(CzCPL=eW!{w%_s|;yy z8XcT?jg_~PG>T>jwEz!HuK>ajINIa>rZ?E+Aw;GGVT>}sg(AJ>OK0pyVl*K<|*Fc1Gf;a(ihGQYb(rPdSbXl&3 zX0sRr?)-EK)qo}i)O2j#0E~MSe;7!>$SCf`w_Zw;MA2TRfK>U+bwQ@XU+IJHdaV74 zh27bPoKPPk+knhJpV(E>RUQIh-SVnQf5e4zCn0s%bD8%~47jwq*kLmJeyU4f1)jdkX zjc@fT!cMirb})V~nANTpTq=|5lL9<|Q3_{gZ*$dPEPP+9nD$}D%x1f+tvkVi@5)nP^}60pF7F& zRZ8N{^gD;HXX7F!h+&I@e$SbUc7mLfq9-{%62_0h7uz+gFr?&AQIY!Xjs=_8zpV$b zR`rSu;DP(}85@ydD6U6)a=3Mu`NK#cz=KdnDe@i~`I%usr7kmp_VCD`iMw-tf|(ux ze134f4sFC-TMysN8w zk&*I08hN)I5R2Xh3no?}0{n@g97S+rH^R~PqjlO@jd5xa-dxO$ZGk!vWYFfQLdrR< zL%g_Xp7vX+taL@bSFhtIo{LP`Wk#xWW?5zxuh&Um0^Q@3zf#E^fsD&qHjqD$P?a(W z=lEBfQoL?xkZNq4qRI(=w!j0VDY0>APgYIab{1sCUD&;LCCStqp^}hhMSBkh#ccAY zwyh%g7=|{{^h|-yQwxRR#J0>yL+~CBe`8}8z=5_TCBUNJ1HY>PW+}7f7@4}JEm8dn zQkHAfmTG(jI`M9Voo^u7MJ+SE?y`yX>b?yIvwYcw=U;Y%;N5=a9Pag>Q4gx)e`A4w z^E|R}*#081a5MFOE_emaJ0a>K&C+fxQcTUyauw>0eY}4>K)-QZ@w!Ytf?i+FE*jf> z$VL($l(h|?2Rn8{LCYm8dHhlq zJ(!hQPc6Xm(YM!byzj%a5&BWG*)TLHdnWw654;L-d!aiXGon&$WD-(PP~zy)up=2Z zKZxH;d9c0J&AC7pwzjLF)d!!}BFm%K+i{47pvJ-RCj@evHhqUE84i_o0IKGh%UqM% zL;r+w{aKHaT+O^^E!Zg2snE12wXm_7W~hiM%v$vViEfJ<#wm0)Jc>&d+u9zNXI~lh zbuexq!u^)4K)?eWvD0N`U}z^^XPd)w#1C+&rM$}r1oZ;!Fl+hyj=p!1{paO%k^#x^ zG?mTPx5LBH-o4RZ^@+>--EEz+_PjW4VA4-@K9)5&HJ(-qk?x_Z;-`t^w!ux^6H?J# zeW=pIJmEit9Dx*wPV-p#OGgfh4$EzMgJ|h@-BO4zkGb3y1W_Ed{ z7^Q(IO;v54$A}K3@#g9#CATED(+n{1vt4I37%uwV$yb!5ZtOf^?(BONPpf0T5Lsy1SA9N9q1iX$g+Vv?*y$i)yvZ|3(4xgTE zcd0_nfa-M)xtQPJDiqR#GUT)oO$2_Lsa8O%PbPpzyNQGH9&fhtQ9tI))*-sg6izM$ zKs@iNViERXn3~7hzDsx(nrjSBBHqr&@Q1+J((gS-b+BE-%u{lic|*{*@wc5HAcsBCSR_A`LvJO4{@o zbbTzgjVCkC6z^dAP1U7y8%{no`|+Xc4?Wt>LLZ&$-T@*o$EbuDUk zjL8b`o|e(6)HJYLDA48Gkh3#bZNc06^Yv}1hVL_-jp%0CFJj#KygD!&mb+`v_*`lx zdnrNb_oMTG?R}pwu*rI8+dt5+caCa!@SpGF?AF)@m*_(jrI3_0+$7*@dO%uvb-zVz zza6rYWuQ(SY-xrBRVRsl3?YhRq^qfTr3^xR#Oafs$v%Zm=Pq{hU)+WHes_f`AJi#2 zln8mM8>VcqST6L%scgL4LJKFtexkV7DuiNnBY9MIyigwa9gs`eEYK1V-dBx8nN!Ev z%$#RxWP%)rjaYe(FWX1s*3~I?;*@EQDHY^$JiOHSA;DZb0(-JW?Jo&CIFb6N=^9Gs z(9gNxH@si;oS)}=d#7lHy&nKBHX{*9&8rVUb$_ivOgG9^L&gMk;=%gWx4 z!z@#KYmF<%XrQg-lRNjQ+`Ega7|apv0L^+2Nh3gkch9Y8@nQ0xSY$EIlRM_bQ~3>1SHqh$w~UMNFL z79UP9i4KLdlDWUh7zPuTAD=c6Q;p;do#gaffz;H zy@N8m^3|=TX}? z^hAvnk!y~;r*_Eo$jRn@PQtV!xa6O7yCTnuYij>4UL9cI6Ofi(LR)tKwodgDZO{Xn zKwVTm1*Wk&fTi?yKs#=({z#-##pStE3F%P?FKO_cETs^Hs_rAy)99y+6msvbeo-LS zDwpxLmYIJvF;M+hHsce_S!i&zmF#pplLIu0(&!vX@_&8_b57;ll0 zG>bW`Oma^-qb!9=()gIrOLJ>W#K%U}x=Z&1QB8U!PPn26jNcZ{c01A7ZIGs$0Fve1 zuI*erHuo$JcI0g!q92vVVtEA>F(|E2KjWHR5gmayL)f7l>tAQ27(w5GTF;bIp!VWPIDxNf zqsO<-N>65VP6OH+zAQeIOr{&b&Cs3JZ9$HqNA!Y4P_-P*q2o^iq6d)&z@h1A8?17$ zwl|RgPAm2Ymd2o4%Y0%{eAS79cn*FOi8GgB4!I}eW z_?C@2x>cz(P|JAjiAkV)Z;{{8d86ZshC;phr&TTp{MVI9Jno~(Geg%VcVUHP|a>h5%ZU5|yrIZX)?pI=#c!wwE*^ERH*7*umiQtD_ zQi^hhu-4`r`N|DvA{nPLh9G`{Yj$P29^IAd_x&lK@AoMKtS4H8R()jRWTI}ZFMII8 zeiG87QF`v*v4o*NojI0n+chC96jgU8O+`u}Cr(6_)y_Df&z!su+mgm5g-Jr`Q!p1* zT`TKXG4F5bEZK($cX$l(1ia}UA+H--jp z623Yr2OTTNu=dDacmCuP!qVkBzTbLdM7BXf`8@3%;tt?vvTDG;t(-ut32uTAN3ezH zizw#zNaCHNt79)K!a=Ks5YHm<6!+tTe)(io29gP6-c;-Me_|}j+E_$0wF*|J8iO!h8KXeSXfu?#2Hs ziFMah*{7{YU{6VmM&gkJdzLWLRXBd1;XIUgam*9QIgga)MeuYJ<(vn}#pelwa~CHp z@`0RscGz~V-r;gAjtjT4Z{yh&Ek2c^gnposaeCJVG=7ES{0sMK!V$K}xWEtR>m>He zbSIh8LM!6hZNI54PKY$oul282RoQ`*TYAkD%^+oe&jO!AOl&WsHa%&m>twAK89w=x zt-xTCNr8-4OkP~udH2E=#okEiDvA?mQkg5@{fX*=R?4ymWU`Gjh)g#dB(y5r@&<6&vK3Nj5DnqgswK_}KrSN!G zW06?OuVVWD!{ z(u#W7*V-2+cS_jl9Vrj*q6d;)HoKoT?y)01lCFcj2_5=ltMG69E+A7wX|#PNOAGzC zS+v6RNaSZ+&(jSu>QrlX3{emm7oMqcLwH?RRq2(>=NRl|rglp8SN3IA)yfum3H$_21c*aqq zuwgDWVy7nZbG+VEY;4cEy5X8b%t&#N{mkLKrh00*Et}@i{1bry=gQ)T-@!+6S`IfuUGpGPK&_Qy#sm z%hvhsHZfAsKef~Du?gGu+)4Bs4;^as)4r?IA1b>{Jk`Ml;0kYFTv5`&%zUbCoGAm7 zXgPZwjuFE5M0R@qQZs3#Pehyra);thLnSiv_M{2o1xO8(H##k9-E{h1-(U+_Hk76{ zMi+;V;-tssPRi?Xsdvad(y5$kSWg^Pm zNNaFO^1qUe+!gIdEdmOTX;ICcli@jbM*iwR1_vybkf&5pG&>NE1h@YyuCIIw*@NGq z*Wk3EnyOrol~jpVP)T()U2;II1OvjRm#c|kb}&g@l%yoDu~Ho7#B0_~JEu%UGVpVq ziJU_XZq!sqzE(7Jp|NnvDI}(DDqu|Tm`T2gB4?E1qXJQt2|sMPcQ4PJh|O#<-ATqf zYDgHCU)s0603`M9XKOZ(Ql{H+8#^g{?R=M2N}dX@VdLWTs;zp=o?_71iv@nH8DV97 z+$st8187HNg0)CDyiGgs+a1_zpU8iMvCacKzbd5s;DV$nJVfe;O)|l3;KU-a+<2>C zVR|SrY41@DmBXD6!atcFiI#)4Zji~qyPiLcO<|t#<}!|E3@G9kp*+_8{yI~ZY=`eC z&)xFr$(^*yvA`V*rk7@;l8s7@ahe;KAU@pwP-QI`U&uZf-ra+B>b72exZNPPxQW6q z{kSica`31384QHi<&gFls*Y6Wdb=_W_JDN*xktSg>^0z0p>m zG<55L8P)FaY{tM-fsF0&v@a31j^$R)O^UELDat^pm)*I!khr>ChII|qVW-i(7X@!I zeI5ZJhZY|GK8U#EuC0m)5Ob|xkZiVUR4RM(rCUqAp@K>bh7Uoy;^Q`QfV0UEExoeaXr`1a9NbgIb>gt^{SNd zKBINf;u0)gi?Qmzu-ZAsQz^2WR#UtletW^QOmG{7CKP>*Q<@E`O0wy?lQ>si@qz z-p-|+F=KhxB#cAJ4Rw=ipWrb_9q5Zt&G+rK4-gCJ}CXTGKenKPLW zVL~2&5uq0*97>q>J2+%Q?)O3_IL(JR={NnaCgi{JhhI622)z)()L)SQWns8|qo#)c z8{zHHtms#V$L;%noJt;kJ$PpEgp#o%^!_Kz{}*wD@7Mn1*ZPcmRsrNtv%Eyvw(H5( zT5k3tTPdk$bcT)i$^T6u7BuUpt%9x{hcUwkf@U|}_vQK~KudR_Mkh-kuFa8x*7Z(>7 z`}1@A!q%o{#y36`&qrnY0M+;1?zWNrCs_Qq^+~0i_@F0{bLZrQPCuL(8b zaL-&c;j>td;9zt~OiV*BOXs6Q_C)%kSZuxb6?q(vNVN_{6!|!^-Tun{)=y-vXKGKQ z%Y8QH<67d4wFde0Zy6mA`6t1ZW+Ybb8P*i%QHem;)RI6M25%G%^U$0MdC9nEOg@(H z0hGkZ2EUdCJ2^34Du|>wzL{*YpK=6s#c>b!3T2v|myR0T`$g^lhp>B$vSis71zfgm z+tp=Pmu+|1w%uK}x~wkSwr$(Ct+)0*XWw)08xOxSSIili|8nHY_~s0^k!E8WVI|xT zq!b3`AFn-H8!fis8OW{E>QNxDSaPMvY-x%58G@E~r}iDl%T>l}IUjj(Ztc~ke$qEE z;~^>LRWZz>cECAKsv|s_p{bl4*o@mU1!XUkhzh@4DxJUAmmh(&Ry*0<3L`H>N)KQ> zhX4Kqh46-~KhwrFT@X`+6aYy}My-HV*H@sM8>F7mDY>tbTK}>XH(9RVuG_|8%GJG- zQi8|F+YNw)@kzn$ad((X-Z#;~hD|txeY{1IW96XprZmf*v4lQcubxXN1H8Akem?A< zKMat!%{K@RVn2KW+6tweS67!o7=c@9r87SV7Z^M#9lUPFzMl=}ogc#VLXWtQZjoIN)?cPW3hn81GPuH4ktd(YMp>s>b}f~?GH3k_oS zx^-KPX)?^Y3dYaryrnY{{oYzg3DRz(LZ_`F5<&0GFnB&XL|_imC`>%aSOQjOtU~Vr zsK>1cJ2ef??ZL|U(`Q}O&cw_?)_SE5w#jZQ0mmH6Wt!Gr_c~x@RYh*+;GS?Gbh3*5 z^YIMmQ{g0%m4yjo&$%(0_ZwFB^=@>tmMv&iFVsxSI+g)@1P>15-B53IEeh{asfG{% zP46*Xa|=4x=Pw+&-#zOCaY4je%P#jhPzvN>jRzw7DSfL`KUA39NKQ_7NsZkNx%j8H ziVa`X&R)+H!qUCD{hX6PW!g8cxVmXq>>|%E;|dYsNEl%FVT&B1_})85l~xz3a9j*K zOPqz{r>(*-IWWz-`EfC8Rb3kB8dMsjHznpAeh43VVS@lmx}2aE+R86XYXb<@Z#7bV^eAL>_rP+^Xoj4tv@ojk zaA^>2+&=yMagV4JXvZG2UpL(A;aV&?k%@4}Df#$2+7TFm{l zZkJ*N*WDi!ao#Wl)d8%}o1vDJ2G<`f&;c6gO;0qy5^=;!gJX3_Y*QW+nMBYNJ0W@Z zH|C5}v^0_Kd79`h)nf z#|i~+8Ct*inXGM)M(143;7JV=#0mZ*pT0z(KVv6I=Me5Pcrv3W?oK?#NqAm!`81=V zb}o~}9E*Q%E~mH|et&f6tC0F`1XH}GYC0q0yu;Pi1Ql)-mKwD-`P+A^b8<}7o1u;)PTOKH4-843nECEK_Iwt@h516B~@WqfNSp% zFGm44UMNBeqVu?iJr9VOMV#G=o)-n5kheS#gW0sGDwB=NmhOAheTgFbRq~l+XpSh3 zEr;=XVOKD!)7z|rb^GhNZkrEEPB~;2I(2A0gn-_=NJB%A-7@C$HI5=--SK|q2P;qp zwhRT=s`j|#S9D{W{;+!O=0`w zX?Z5JZg*Srb8za|?njrFD0RO585;+GEcYZHWL}@NG!ch%{#_XY`9S!VoISK50{yn$+i_}l>yo3UCgB)OUSS)pyeG^JDY{6gu3REVe zotqcKEKfKBdgy~Pou53>U33zRm(!=t+=tfqDTNhEPD@cLr4F%Di^xX4UBMLxDcSO< z@ANj;8Fm*h1RF+{JGjZfoEZ*h>AV*ZvU?^NpP+w^n!L5J+ElMG{Ny^%{IGvXMki=% zN8!Y2dM*_7jgWh^@<9uL?{ zy8|Q?xiKHL0V8Y;!$g`*uMN2+YKHyWNJy^Z4?}q4)iqG3m{~f_T-Q|n_CkxCsT0xs z3CV7v9F@J6UOpWR!5R&lG|{5ei@Q?` zVYVm&HQ-FG?Vip;x)7b$axYP0$S%cwlNrJ zDZ)rBV9;%^53C$refWWiIfaen3))v-DZg%lVuY4I^319MUDvupF zy({uF-LPO(;;6N^Al+H}l^m&n+DZiJ$f}|mFT5sIwP|T|gg+>5j|gEh8mi#}_IKIm zyG!k9VchxpiZtM@Eqo4rKbJdglLsmVuhy%a5k$RgUUmzkp*Xer4KK)B!u*$tm^Inq zR)1&AHk@qlp5BM*=wujB(8;kSiQ7kJ(E0xm+Vx6@z#%eR+Yv2z33Lyvf_J3(;5k5v zR&QZ-#}PtB`bCIYZ*yedFof))<@QtL$IgY|=P+8I$OePaLE`lZ1`*WvhB8TVC6^+k z3PlF4QV#0ybDMD1>!n^SepL0q<{M#KAt?MNYeXy;V1D6e_!GQ_)I*)M1bTb#o%=2I z+DhmUWgHRFV6qrhnbeO&Z`UTM4{Zbi+pr%MN(U+6{K(cylFTN`(A3AV{XSqskssfn z@rMUPVGhsm7=1U59`n-Ob=Y85D<0yV*_ri;hpE%QJGuwi2KxEkG<8*v%$}avmsskc zhC6*wpb1T!>*n1~R|F#RfcdOJ_0?01m^CF-#yMt0wC$OHi3epxtx#9&4Tw}1juTTY zo5}GWmL3b4j^&T-Dk`mLZ{_t_^g&bZO2~lGx~!lv$v(PtADTyMF!pb{Pf_#i3Dl4v z>iGO3taTmGXZRFR>TWlS^O=Y+?5$hF{g9d($92(FZ9SbV*aqW}W4D{9ckO|>7WFi} z*s3k@QBQ@3-IT^c_H4&F^$EIA@Aq2ae$(c&?xO77Y<2e@)Wd2!&+d4B>e_uUZZ-7t z0d5d2)T;v*gI!Hl9l&g-Di@4lOyZ;ZBvGVE`4IK2^-?L)Nu^{-v$ORD31hS(4L?Cn z5`k!c_EE5V!pAIHsOQh7_9}`nC7$fhl)1oK^_Y9xg0&F5NxSbnb7(&sG!p|1q8>*NmZtc5^-VkcEcQFN6nxnH4SMLy1PI( z7dL%#ej!*>PJU4~10M)ixE#n%j3jjFh{?zYbfLR!PK6kbS*FU6FE$>@8SXPL$FQ^_I zuO#wk1k3Fp981#qW(y)x$)#V-7u`8Ra``NIcHEjkW%)Wy7#8P{7K;0G*q!t9AHlIr zBt#wvBJY%~y(ZB(@&RrAJvG;<n3Fdz~mJz;A6?YaHbO_SoY;V31aAt`q}1}Sl{n%AWos|6i{Ty>JlEIF6P z1?VGRkyH3pWJG?dhBP!et3*nyvNiJE% zJ7SW~(-ofa&AjoExpssm4;!S-p0+2f!byk>FLoh(ajwu0cptJ5W?PO0kkxc}sL43i z(4HDrEuSFv!>J+V$0D|gYDHvYHr*T!4EubO3tsKU#oz|S!1?Or84bCY|q*H*{fjE&w5Q}JY(iW=AVS9Tpbq5VApoO-(US~=($D! z8W#NwCNOH!>9L6rYuN5ZN=O-MGB6}i3YWjn^k*Bn3y(FEVvR)Q-y@5C|F*4e1cCfSsW}IDu>^D+{+75>qHb^qLOlV zEsWXA+PEzTO(NTB-)o~Ep+b5Rwi-EH z&YRokYARA_);V{Dg7PFhd@ZjJuSI8idR<&^p9@^CPK`5Y7diZf8PpDlq)J4yEReEC z1yJjAXPY8e&P0DehZ)y}79Amo`r<4(OTfAoWG61ugu=pSb#&LEgR%^zM-di8d@xNG zETS&AQSsexF-m!zlA=Hz1D1rkT;?vKH@WK@71n`-E?n}V)Ny98x&O@m&{T~Gk0{Yx z;-?)Y7v}ravUAIJ8GCFq7rQiJ46bs{GA?j-QTVgpQp=N{VE|;Xe^W@*(Gi1gmw2w9 zuFWRuKwm3m4IAzJvNAC0g?MsUk*?1p%#sypsaT!YUXOv5V+~XMxNVt^anJ~4YL;tW z&C0)p++qd^Vr}JEM5uo(Iu_Ma4q4*pL3tO9$;8R@tgS?NWtG44JlearRfIuZ@AiRp z^h%jAt5muIx z%3oroA9fNFZF{LQh2^$*@4>1C{05c;HBi;5gn{Y+$`Qxy5%G{&e3{=Y;Ci|@{Ot~z zA($%|o8SxjvuH`9#lz|G5Y{#Rh~a#vAmQL2=@F-e|Glq(baD8-jB-?zlsk$0pbl0y zIzv?PENGm-z*T~LP21{Qve!X#3Mh8mSHGYdnE_?)wB;g;%f=}Jrqm)nH2kNMpbErP zT&3f%*%pEz7G(Q57LX^~Xwi`+v{AHEPYYdRp`nKjGHMbpdw?DGc8{)N_*Bd2&Jf+4 z>L!nuW=No)j6nanERsVKsAB{7YDJxTQZ`yy=4!=F?!Ev{&$G}E;F{GF2^*Vu0uI}4 z>DX1K8}-h^u^zG%(nmFohdNQ`mB!Ml)@?>{HOVe9XXqzd?FcEX4V6^)h)Hf*-o_0x zzKv@0N4kY~HL81ym5HB7KFU2W!-phx;TP#_nzbeUjjn%YhgY;yR)3Ta#hzilLWX?r z`&es)$#E`tcwppo{sVM5Y^A3Vq19-C@gdu%F8>p|P94xHsAx55oVKjqMwJ-02V8pj zcRE-7?2nGx$|~hWm89$^7nL0kTNCvGnwn|1N8idLbKY9k899423lMqoO?mAKOa{}& z-Z%TL^5)JXz8zAttUwXOG3abTqC3l^L-cil64MEg^yTBkO{_iJM6oJ5@PkpU+oGze z-SAB;gT*C}m=#0@YcZ(L`(VJndgD;g5}BcC=qNT!RW_=oRn87aXoj!m9h(fQEAw*L z<~~w1=}v5*9PzePW!EE=OnXxMvcbvAOZc_&+UA3#o**pWuo*21sB`PeO-n34KVd0` z496e&!#*t##r4!y5q^p+PqfCesi0j9%nzQgMRhp$!a+w25p#L!Ls7rz?8&Yiys4Xp#Ei&40V z`BSymYlh|&3J4Ko!@Um|fpEs3O;kx+lw_aXSP9R(>2(UUFz2SQNt@g_iBDkQSATyp zlnoj&LX-rN)wLiCq@=cd4U`-vx0X*mb^p}q_@zaPmfQ7D94mpd~s7_49C%}L2K6@q=m3L*P*45qw!{3E{d ztgikezSKPb7GFoTe~T~78Ax{maCgGL#20@5|5tqBUM7^mx`wwl)#%Y})?|vf;g&$z#Kyd6AZmc4Uz*GNuzcfBfph6z#3N2J z(UE*VnF`l7yO67-SN+B7{&W&Dv!f0PDbR)Wagi*KxEZx0@Og1v)`$2RB992Dv-bVG zeBj_vKk6FpLlh`8b%+q~;e6K2_!1&>bbnr;lG_Olr8$XSMu6fAO7ITPg>ZU4|<)WSc7(<;wvNujf`iKkXD5 zSwtY$@Be1KVEp^9z+s60oAsKu`j7Q05a7G`$9hr2P@soHzWvk<2WHawvvC-4a}`*+ zMl+73(v?hRye-Y=`M;x6M zrd@m?%JnSBlkdt%A?<&l?$#-)x~Z>)5bmtx7qh_pZhAuT*xYt){M!YDJJih|Ndq_} zABWF|6!Bv%tI#wkg;cXad#PKD8td=&_@Z49s=NfsZy64tsNI8Q0kM!bl_yXub8jvj-aEdm1VVWyr7&osn zy)h-(?T@sK!pRn`)Zmag6ynYbTDHTd{%p_B-srox!feQ@mq|d`yrA8YhhIAuLsNP{h%$w=;HHNYl9qc6hp_+&g#dq63q!SGTh3b^69^%*slu&F?cWDTQG0xZMl1h zh2bCAt+o_4yU=P@O?=?FPSI2}^GR&_%u)k122vG~$Gx&4GdU))nxXTx|;hj6no+{{Akuf;rfSkb!A#PV!g!&*Ya2O6}R%HRfAsNV&n>Zui8rt zMV$62gy8)()$gEjV;#Dmj4T^O$6LJ2nZ2qI*seoX!tJo+RjFP8+Yf=@*=vy^&Nzl!}TG2(jU_(c}6f@66+F|ojrt7{OH zlsko(hwGA-n45NLd6UuZR0;1fz4Fl1ftvZIbQ=r zD~wi7Hn+trq}j|Pb0feGe5yjyNHchQKbNEN%pt0?rOn<_rUKLYGME6yIRQ0!;{~@5 z`+@u{kt!~T^L5JmWa$#7Qm%+t5du{XPH*pekKa*gM+CWw8lc9o8LW%w;2THGPD}&% zL6xfA9#*(WnMz_gd>iFKLO)&WB;={|@4G$!R%5@Tsw4IT$cFR5z8>y<1Ia+WA?GnK z3Z&-rfao4qJZwrV4(t5l6P(@TXEwOLyMa;&4ye?ngqG4fmClmwt_F*Fpe0Li&lpTp zzX6FcG^as7&iWoO`hDI3_BGtAcFP$?Z{uv?eR+5dQKlM~IO7qwkXqzH&BuDoTV=YS5 zqqX7bTr=O6&{3~UF7%VDoIAU=7%CD2>%z@`CFaKWPp&E;XPe{*!wDAt9d(ETY`fm|N z?9Tyq?YW5s;+~#O>@SYDj@13bCm3jR6+pv+fpo6`2hXgYn3Jr(6R)vB+;@WhK3xYy zKE)nc zPYYa27`=@BMwE_hz(`>D{%~y!%`2sFu^nFD-vq0~C19ET8N^cZKhEOs6pW(Jr-JBj z1}V5-5C}{WY8~t3$U+)`8Ww5lMZpTH>>6K7b}Z(OhdWogdU&_ z+Mt%^Dh5)gItH&wm#W6D$`*AmNP*Vj_)~d`UNi@%hSerK-7qIHvRTN9dQw2Zo8qVoBTc35hD0FW?t>?Y6Uat*1!}f;a!5Epk;=aY`UM>fuQ@!*lzy+0bv@bgUuC{;^b^^&b?>v(ElhQk{z@pZy>}28wEH0A zKdTp{=aNX@P51Kle?%;blOneoiC|H@K4=)OAC*+H0dHl^a0wvGP$%VE@tcId({)yl z-O;&~lMzNj7niLZe&)kJIbYGC)99!^JM<~LO3hjnssSx||HKz76iUmc)y9|JIe?Y7 z-{2A@c|qo^?j|=IpL<2dpDA)6<2IZtJmy4|B%6U=IdEhA;eM3N#P0`cA;*!(q8|3> z;7OJ+E8kjbEy3Xdv$a2Qg5F9YK%x9zqC}HLlxe6yPAHd-r7}W4bycMzsv5eb!i%aN z6F>baRohC9GnKIUqd7cUN5eg zG-RI33+n$S$b7%aGray=kQHOwux$Ttf=n{x|18Mt3aS5Jf(*_6Z$U;mz&copX~#SG zp!lwXs4ACdE*^4~nAn-XH3<9e;O~00>=Bw(%Z7|Zq;5F)o!$wKKpF4)2Nth7*F9}6 z{5(*kAQ*u?WzLwpH_7tPSsCG4%RFOQ9=!%r)6IFhrKi*D5z;iI{`QsTn~@yZM#;NA zKF{}=_`w#tqH;yCShQk^g7>j5fetBZOd*bkgte(Br_>4M3D6d#;1knQYA7&l7qq$l0 z_p>_yZAWH*)(UB$508>i2QkHmRio+ToiXz$N|QyatK+CiD8nk~Laj>TNo;vB2Y;;@ z@lMei$fT1k4S=2$SS~m)VeIFJVkm^+IIZiRtyjQ7nQ65H*W)Rxw_~uR)&v!s{z`10 zJhbjf27LWl_`Tdme8fgrR|U-l3_E3XuG-YP*MO8BkEb<=`c=eQhy@$JMys$}z53;V;s0z%nG-ht}lzm1y=&R@oD z_oEz`ut|MtwsQjEDir}W(6TthVpUedGkVWh;I@MOp`dNq0U15fkf#>>dKTfUx_ov1 zg1lfeUt4$(fZV3Sjx!=`yjpf$N!mc2s@NJhwURWW6nAPtT_6K9M7mTN zoi=OHuDZGkA1BSU4F*P3RM08%8>Q9baVgzIE)YP&?`bfnLfb(m=s{KnYCmt3pD;`jM#N7pM`P|m5^s?c~W zg|X-(4C+hZCCV7jEuyt1cW21X!5P;nPWrSpF@W`XZ6 zs>xBaE=I?-8~~g`et8z7!%ivCHa=kgJ@9wzZt5yqV~r0`22) z9AbmvS~ehM?Z@9E?DOG#?|?9&blRE%E#MdYU#S{LfJ^;rmG|ExfXV*^Q~UsTodDc$ z(IcxsZJa|%uFPvyU;(fbCb-v`9-3J?BAba42QG_HUM9)VEXA_lb zeWUIZ#+5640Z?JIef1shI>;8SM&K0<=W^K!RgPki*l!7RN+}8$(;k2FqwBfF4Vu@A za*J9hhVMmJUrwlMzTR;5g<{mMnxWopgk$s}3CMB5SP6L*fh z0`y6W`c0cd6d?#93d9RTE)$szCrsb+9(6&vkz2y}~%&C&7ypi}CU$zP+5*$Y9pHN0*?NZ#OvTYX6)?i?25W z*VWVU;p{zb_FWBa8Za38y2m`{%T}T7ae?CGR@Lc@P3{+ zgBgc9lAOe#G(r?=7|w(if}#x2`j&@phI(s%7$+pL1+doO7F*mNof@b5+@!cU)uj3ASp}@r5=-~SznY>>Nx&QGmxYcD$1AXp{}%tdM}P3&{%r>i;NKQcMD&aMwYLA8e9^PJjgw6YCm1>y5 zbL#{t1xh>i>^!8Z#`Mc%uV8AALTgI#R;uvHJ#6Z&u0=^54$58p{ew>+ zU}!VF=#I>rUbHdn5U!Ny7za@RlXc`0jimfXOsxheu08%ldfR4$ zMmP^-CGn2eF-l}`Et~Z!gZ=pu?mL?_4`_gK-OJzv;U;W0xjpiNd@Gm-I=M9J5Zy; za$Y(%;qTfwjZdR?WXM5}O=!YioTK)&({_Hes+aMT7rn8V{n_AG-|f@5f9nnN9`fIt z@9+%tg48N{-7m$krtT-@O>O1^Z;$JL8<{cXA!%0r_;cfATx+1QMax;`+DTe?55reV zKk@5$TmXTJ-msiq@{_ys6RYh`oNNa^ZCv+6t2FhdOdQ_jHupGiksUjGUWWIuEmm;Z zazf(=bvX|2MH_Zd(1LWfFl7oooIu4nE8v~~EIv4Ld=ZIBPcPef#Ge85!sdAU7VelS zi!q;h`wl&!WwGg8-|8zdE{?_NoMCx*GBi4qRu#Ecp@%Kka*sCIfJrk2J+*K{A9CsH zwsbKWGUw?6*@OM0t+OE+Iz^Xn&Ff@d6_G_U*%5aMV+jsE{HU))xPlGUlp~|nZtY2v zp_)knt4!ra1htQUBi{rH{{l4l=UcyT>&Njo=-4}rh(@X-@4!l&G4`LBJU+29j+Ke7 zL3;lO_=Z6I7kpzIb}@$va%xR}z?&{c)sUj}08#sc0%1539#%S=_`UI5SQa|PMsEMR zQYGK=`e(h}ZhQW;7im~=O_Q`t5lH~|*7J7GGk5Gh8P=Ny^1f8uIk{7ZAjWM6zKaZB zO9d=!^+x&#UNm-_LXJXc^lyeX(7Tn1hK7-&Ez=Og< z>)6Q?`6NgPs<>X5_V?NG#4s?@HS5!;|lO`vM)%vuWH?Mmw13D(JT| zHRNKGucF92X zU`t)lf1sh5rH_(LS~BE|KOkg;& z51sXL3dS-iA=NLIPxFQ(#mK0iXQ{)M<=j{!Sa53Bw3qzx`A+ZNiI{?@r-6p}0J-#2f2Xprc6;m( z1F`{cc)*j5P5+hN2Z$dT^<3iPY{S9Z|7&;>kbUCuiB-D)&s@MQ{)ys!0nPwrd!QMU zcXaUfGMQt#%Z@OHe`uGkyJ2{A{|ACUbqap*d{ z{CS~G;C6cR(n9Yz^z8iE$u1ztc?bqy#U3D^373D%9+cbK)e7MXc^+#wgO43*Q}0CC zYX-1bkpvpHqA|2jq{dl_74IInOw_$BN2|QRTUcSN+sWuacV4Sf!OBTo*9jZ&men&` z&!9EX!S3)6M*4r_D&K~KmF5yv1nyVl(c-YdH+uYK^+%vf9)|+Mqyvs?=9jFAiDeQx z%5Q!wW<#Uyr&mdC7x|XNZ?@Db2uUiMxZ~G00-@Qb1?kdzoC{e-F6b%eiAz-7}W4LK(s3 zoT?(Fd?c1@1B{$k5Mfh)g|!OTVXYikx{8v_ii!{keSR(hu%+SGgb+sxbMCJf?z@>O zuW?^z)T%NuO^YSFO700j@3H;g6GQ_ILPp11dhZvE*0uFokW{A)mCy_IzNj!crmj_S z;I7h3eF)#n*n62O3?Ei5^2;pok9IFPSHBc<%#4;AD*bkCKK-(lL|hqdnrT{NSH7Lp zx@#!2FFl#F+i~uQY=?w3tc(_Re+#JsO%XHd_dK{C^pab_{t8>T~S z=ns90sjl)+lyP_U%F{bZ^~jqnlTzPkLCesOG`$nsFx)Hi=g2oxi(pJ&#oV&ixYq53 zD%lGvd2+AUL%uROtF;F&|9Je};d1jF*~R3#BH(p%fA-C7~VZf^lE{Gxy5q0hZ~*eO=W>!gN6jM6|)z$`3mXSi$Er|I?^N*QG7tG z9IA$)!CC!Fnw01yq_Da?AG0COoV21Q`86O{keuR0;K}p-gNwwU_j3h9iefX8MDNVh z6AUfU%>uFrRn+%A5_>Z0+-{5kc)gn>xGJ~4gJ@RgXFieHKiNK}CtJo+&+Sk&P-kD@ zu~6Ww#eKmthT&_*RN5_)yW{NpNVU<;BBHPh#g{vr2#J(7z6`%Kn^71v3#9o;n^d(m zTU1e)iK0}WceYA;OhekB>qRzuJ%F3>DNvtn6pe%VF)M37vly|fobw!y@L?IomuM53 z=fiPET$zJzV0Pib)bjtW;y}OwDo%kRK(Oa;6=&o8w~8Bu(sAsr1dbv8Tg91RWjD55 z0vA^;&W6VFBk;I_0#qC#K*hBW{C5@S!1wf*imNa9N5#=`P$ngk|D)mZs(&Id)R?D@=hKbFF5ubtU|AikW;M5nITcAw8lUSYN;b z=>;GlM%#n(Rj23g3~{!F=ApDxQ_A@lJB)5>92F`xX)l&fq9#=SmZhOSp|gS3^Tl?U6u2cI$Th1GgA4` zdtgvn?7*NUm%^>DS{%n<4y?|6|!^YqRK>PSS60Wy{nN&6L*pt|7FbqMCNDj=V!oE0WC%lHPLPEZ&8hxdd> zaRPknHcDlorAa1I7e|Z%lGZ~fLdvJ-^KN^ih)^s<4{sUY<5U|9QW&ZRYR^8wY3zubyp>AlSmgJ#=qx>Ty7k6&?Ir#^a^j_O7VS{wj^-KxEDBBoO$RzIJ z59~8|6Ak{0W!>RpP`*j{Hw&{XU~AstxayN2Rs1A#7;Tx7FpyJvg%%xl8?CJ1v9;*4js!#tYHkhJ z?sT4_Sp z_>XNS8!SgTmbV`!!apT+%w^rWE|xe2$mC2v#V*k`sOAiw!w);VQeTR=>~}qle$FI* zrPDj_k=4syp-9C+jc>&yHJdLdO~M1o9jAPB)0W`w-PaWN3?_{j4-D{QBul z#rMdpE^tThEDtipY2zU_UTtjS_J9y52ufiik2F~Ba@`HK9ko8iQ_b&{LNrdS{8=yKm5FfUpi^ZnL`%iJsG@!A*|7271S z++;AqM$j`U=Owu|w`SGhjiC7bp=0ps?$<{6K}V(I+}X@iUVl4C+h*ZoU%e|06R(EN=9h&tu7-{dOmi3K@m|ZuSd3g?sqP!IB-g>K}U>;;sqhYPcV>D1P(bTs}VMtvXgQtSck% zZt=AH#N?B1S}XVSSE5aSDQ*np{%E^+1&z`C!HJtbXzw@_sbeQv9iqEFv;1@EjodlQ zoX_N!nUmQ*pZBSG>CXr*ia_2+xnGhfA@{LuJ3;*fBR-n8RvU3OaU9p2P&sY&-`l7l z6dT{DCc)nj-r9s2*ua!#qFn6+n3BoU&e{?B-<0$zpB>?f@4&r^mZj_c9{4ylx>`74 z)$<4w_Rp*$fBOcrMi!fWGeaHUtATqG4D%`vvCr!3>=xxPn2RBUTlcw+^@-M_6Fpc5 z@u_P{@>jjxYTs}xh+X(7ZY7KoBTYsCBH5+VeIrQwK1t`yP&AhKQPWh0Pk`rE`O4&P zzqxmG3`;Ky)no%XP}Fy<&_{xM3#=rRkUk4N&C8L4D(Xj!qfJ5;?4cjg4mzI6CsKIP zp^}vAu4mbw7Lvwke&vbk_UD1#nO@+82c+Th7PiR5fM|h{Jl+1Shbb}OGgjXj199lQ zm#eUcUv-r&+C+=_UtK2c`-rfZr@QSZn_qgR{)}#t+%GV?L(fS4#%U=B>X3efXA4Ka z>QJ<6sMM1Nh1nr^O;gC(l9uOwuxo4}`rxRDfi2(cdoJYruCTxsB%5fP#G_?OaDP+r zq5U=)ef9X-0eT8rF+X;L&cH{6G^}>$VE)CDYv~#Re-lT8yAbnkB_;lMj5h$Z?ZnKOyM>D5Fk`H#I6<8SLW5jy?7QyoP3tv!D7${nBm_)Z?QdchZ zoX70(PA7dK=Y=ZDd(jPlX_QvtqnuECKfR4qz!~z5t>Jg{FqlpJDrD;VR*F_H`fL-* z%h{9sq@Iye5hcbhEfW#=SjtB%qXAn{iRh@(H~iVy1I7Z$mnz z{}!Tw^uv6P_Nzxc5z6Ko=3Q$xFu*^Wp%_;3W~RE)K^vs>yHKir0jyA*o0+Yh%MMJ* z`#xPsmUjim{?AIsh}a$KMUVHB?4>Wi)7m)PnK}ricmveby@I|zUyHzvgw&WO?;;SmMQ5XsWy&bC~E4^j!l8AE_vH!2F zw}=wnKr_Y#o<1o(w05ybxw(%J2NEvVFG=apG zO2~VaAvHT(-Uy7#93bAIRRWfK;{I&Kr5fv%(O-ckW9FE{em{!>4o*Vt_ zTMo3Pz>QXeVIG8ekkMu=1_pIq!h+g!sC5E^fIGsrJ+>P=q%Vqdo`?!O^D9FMUzJH? ziPA>v8k_awM~OOURuwMXN2@?#EdBF1X2ff!6wrcQEc|P6Rls4}D#FHIHfo!%Yebdz z#IGquurE2PDYnOYBb3uVjhL(be9NWE=q;w{wBQ;QH=RxK~A-)eai zU*6_6oG=na99S{uEio3NKFMhBedHLcNanplgTNF^WMQ6H7D#!-VjZA)0U8Zn3k0-P zpf-^@bB!fdH`bAQYXT>O)siTdYjr!urD=72yZp;IbB=aoPy7!q@_Hm zVSn||Bsr?dhUTHxjd*Xp;}=tPd{z&8xCvTMqcWa&W`L(VvFQT3NlSFlwQaJ_|JJa* z<~S=!{aL1$Z}w8v*#ezX^rrs9bkFdcq5%RopE;X68%Gm8PL_XepZ!hVR@+H5XLJ!J zah2JHKT&`8_LU3iG(suzLWxbVfVRoo^xRc>rGzZ?--u(+x zSIt&4ys3?S<8W*T>_tWYkhf5*#7vsHTKbm2(`ew%4Hy38RxH`K-<|*T>#H}XC$D~e zeRBHk#pU_Cch^5%-<-dG_wE$2r5xPAwW!~{b2q`fdv}wSvV8aM$~&jFagJKUB7+>j zI@OT(2RaLGJIr;?O`9W4z>olZh3!b=6w$vC@{Y_z?8~7QrI*mHvy@FleJ`*~ddrM9 zLPzolB*I}nf+!`$dxJ-Pg1z_dq_{^s7i^l`_9+Co1}x1dQFgT>pvsmyKMJj|I>CnZ zP(t5eokIdKKt;~3F3#A?F{+OjXNX+AX{)x-^==NUc%UA$q28)JMt#h*=NvVYTrc>x zp0+*pc-TDt9}O>1o4L|?xWa_3-uu%3@!!W^hSB_e{H48h;Y9v@Z0@r0mkvN;3t9L2 zru6^y8c=6{;5$9zdcJ?vQv*9%24W_x=8-svLf7SHoSOvOab9e;{%by7@qmB~r5WOH7$ zy#(Xk0Z&N0%!O9l1BF4ALc~L;@D^M(C63W*220&+FfO+X_0M1UB_-kUY>9hPBA&G_ z1nx5Rc5ke9-ZwF&hXe0)fM~F|JUEQF(ay*A4iiE_dLgXxGqowhbjX50@39%d8ztRA(8)l0+k z_tMnnfBROTi-}{wy>xMC{y@R#TBKL_5r+9xo8kwav@>t~Y$H@pZpXE6Tne97W-j~l z&tka6HsuV7<2lB4gt?zvos-<@6xI-5@kAuRF3CGy2<0%`i#+31|7Ec9$05NP*FwU< z8CkLASY~^Y3?){?S;?zfW=+8>X8FoYS6e{|S&~mLT#sIT6Q8cISbcjHzqMC8!pB;S zP*>Nvunsujxo18&l=&+S!EeGj8JpU2EJ&sr#!T>A)H)eM| z-Ih~01u~bZuAtZPL9T(OxRY6ZIA;HkRf{2_;dN)c?!9CKGDC|V`hpz**;so%^zm34 zWcTxAfswLcHe|qb*gvY0iM&6kCOY8n23{?V;|v`)J-MT~XZ_(I{x<}FSS4m~r}36P z(T#p0sIFRIqh6zPea|@NOm2530eY)$W^?Qs1SEZ* zem_uWteY|O+DosCCbS;{`rx9v=Sz2g`9$WzL`4aH0^9cK#4`2=XKuyR$>rI$mQabR z`U9T|Dj}|MShKAsEa=m)8hoLhQyCGn{j8osvxb_N{%%GaCj2UX)59?YU|K(e-aBb$ z=<+vPvjoKh*5ibpMs~|GY}ZH8Q9_CY240%QL{#AbqdhLGER_e^wkm-R7_>1TYlmb8KNP2_#v&-kpY7V2Z}Sq1>SMAvQ%`o7BnbA&7~M`oWkudp*nh+7CAFBzj4ebp6Rf29!2FZI z$?@6Y6w*7P`iI`(l|j<`t)S5zg>5GNc|xyOmN-ig@1S#$RzJ0e&g!7Z`?aov;2=@` zSa85O{C|UE`TwIyLoO=-1$V*k=zSkbi9SUlX-Bf=OX7+NtdO&#T-BgxEarZ$4a)rB z&e*#Z%e|vD?zMNJ_GmPHtf#{fg4P1*w0rPxd(@&}_6X%Ixq~t3Pj_jdiBG%r--%_K zkL-2lRo^tVc6LFl4)vcYsO%{qjxcvttG*MyODfuUmf?o9C0=CMsHlI*Z%~QEZSrPS zq4jN3`Xd3U6#$2&GQA)gTCN+bJ(=#zj$Eh@uWUFKeE`V#bZp0!1wjl}J!Qg5LT}3U zI|yk@7_yF1WZz{MG;`C(fmU9Bi!1)#<}?L znZ4(AcY*tk4N)+sR=AVIQ|B(*Ij3Ca_t&@LKIshEOMv0=G6=`*`33J5(*tWjs5kN&BZ zU@o!gi236e8VmQ*e2LD5w)IuWbL%ou?@#S#J)a$acKq@SYY}0zk{gGsxV~F2$Ls^M zGkDoc760xt_rIUB59|YDSL}+#|7-t;ePAQI32rI+_siHd=-KNIA@i6HFn9?D;C&dUB{1!ciCt2O_!cOks^U=#grd5~Rozzwq z`4u>LxixhdpLogal6e*;h5lL*ju~X0 z0DqxCC4t<+b448p?I z+DcMD0X_U`C)eF_t(Gs2*$G}a1F>=f2p3C|vMGBX+HkOY(8WUlaG?>&S9#UY1&8|i zAX+uy*k4RH6zi@IQ7QU!qE3W@zTd=g$_`DL!T%+h4c* z(5}KE;R5JQOb*Ie+uV?GQ1Fbb8(?Jpl$E%5DfAC7Y6R2Zm5qMF6Or-82q?{N0AR-+ z1aAa?e(*UPu@{H-wkW)|6zSbj{j4hEDpu;bHRkNjnWNB#*C}1Sblo9^BY)!xT)4Hb zxbK^;a<6z8lD*aL?S;D1c{ki2O3G)DUj(JCu7heX;RE-FQIDd-UevMY(Os0z#mN*} zS}iGEK2~*@%eD6-U1qND**ytF*mu9jiuZU>$M%PChCwa|5l?i11<~u+ih*PDCWg!# zv2V4~)fZr$^xrm}3)8Ab4-XebLsm5XKxCm5DpFv~n2p#4IGVnA_$&R=tcu-LP-Bw^ zxrKw<`0-xC*n{VRGL6vXrQ?F9*m(AB*bdipa2(y|7;J)y(-7S@OWGdU3p;NU`dV+e z-@Q~jkP>~Dm+XSGTXO^XO1s|1`0YpCMZ^om+^N-jx9MK>i@z=R4v%C&;efAF66!TL zi>=VJuZY|cnriP;UiI_#(wqZ4N}IZP)VV0DH_{FDDemBS?LJXtY0rK0_X)@BFBC!d z*>d6jP#4M{((e+h8gAP6y!-Q3fTjZ5j?setg}j7q21kgiYQ%t(Q`DphsY4QAh%(-P zJtMor+BPy56{=Db(W$4UBn{&8V@nC^Y@sX&KlFFR3)-7B*{!JeT!n7cFC}Zu%BE%$ zUT~G!o4J~gS8MzjQXaD(`wu)~8iv|X99op0FO{k7*APF4z5pkM(MOg)`VXwTso_)Z zzaaqp|Fie6%Z=mKq5!;q=P6L0Q|0b#OP1{Jp6UMfNy@e?w>`FO>uNj6NgxuE&>{&A zK}xOO*;VI3zVGGElYE66FA^mJwA}4Ugj8kP6tM^_01NBBblC)iLK!Zfvc}4Nlx3Z? zG#$$~L=~Xwn2WwkTXrv-8A65gYS^Rss<53ab9+cVy)0fBV-=iuHc!fv`mhek+KVA% zN5~ley#w)eu6<8^T}KVJG`h<$PuI9Dy0W5iH8W?e2>44^HTP!Kpan9hlUGt7sX|EJ z{(ho&<>WvxzKJG8M{k|cB!D+cPyr!w96=Bhg^owGIJ;QmgF|+aW_8qgfQ^8va9eI> zTEyAJ55O=A!5GgN2Ow11#bU!6mABYq+^hg5$nimd?8wrKFA?m|Nm?JpW6ojT9!Hq0<1kelx3*Zw1s3T;~fe3ajeIU+rJZAPm_}1|bMr zuPY*2nE0fXBWH-1m@ABMN&a)aRA3hIEaZpukcK3HV{|A7w0_f?#X$8%+1reNy+|)B z3*xHOL&e$CrCScPcyrU^)c>q9h6|RnRh<>;c9FR%CWG4VMOMBIFop8dc?vx3`0Sf^&+*^oMNv>}OO& z3r%8PMzpI{Z)LUgv?^pJ@<=&Igw%@iFht+!UzK!bE3zOFm_wmY;pevsy4e2&&XY2v zS}^m5#4i50fPvJhuvM0x#JW!OGH@823(ksu0(l}(tC?+0kc*jt&ZSJIVaS+sz1 zcU+6Oen4DIRSrOT@QTg>F!j3UIu5?Ujn6~eRUL`c13kw>P<$9JM}P?LM*R?&xE3{y z0kQ2bzvS_ppz&tbg2)65+5ON)vqNgb`T-xV*r|)`{Iy_03ij%IRnWmMc3|KvWE8si zOoB@$E2)p_ohu6VYJ1>~$eF~M0|%+x&T%;j?o|A?kjVsw7D8ZTB?O#5h4!uIXhk4q zH=ydNG6MvWOzk-$fu`)79zdMH5_^*UxM5p|{*Vg|7^Z|)2kEk5jz`s#`{{Z3w+MmD zhO(XeD4>{zIwm#_Im2{d&Z&SmCocR(JaB&6k;8l|kg9u6{1C)%xq^zqvX)e*5%vPV zMFCli@2xF(b&Ssx0EhnF_`d4tcyj|0%@~ZjpDh_%%4bA$AD{ zF4b9GS-e=mnRpIdO{f60h=&e98$lZ|$|3(b2ynP5KWEa6u4s0o^b)-?LN|YhRX{WUqax=E(j@M#=Pwi{r?#zVP%)3LS~e(OhEg zV-`tkdP&XAWg#I~LePR4OA#pvq53^#gKe+T6nk1xzgeonYi`DAD^oU9o(I_e1l-68 zv9DFb6^K2^HZFH9R=W|%OzHqMkg(?1pJYI*8Pt5BH_(G)29n(r_S@l{T>%==8?3bz zFkT-j%eW>#N~TnoOlKI^E%TWAypFngv|jABFSp7QH8n~wuku8!S1wP)e~@YAUn^Vm z{0(jYJ8o#6a5+E)1v!$IL0!^S@g8wW4)K$|@-7a?7dx&a>9ZPWEQT)x->gkOUD`VC!pEMkds1m za&jX=Bs3sBpsxTZp9GM30Ja5w3IA%#g=gKuEY+7-tkYj#!&8Kf%$R=qRb7f!?S^vHA(trSEUm_*WGDCeIHI3`!hug zz!O}JNWe?w9i%M^hbXi-k`5z^f~pvTo(%r|7eSW^;FD;hQQ0MEqfy=ph{u{rc$K+A za>y_WC&F=ARIU&#RlFpoh9H^y?7OakX(C45O6Fi?71EkLiOJB|bP6=hr)0*2Av8an zlVFOyab=FfNkuS6^pKbEIsA$LNBgtFka}X<(pxK{XcRfZ4~kX+^l={rR4ZapwJG-O z0}x^R&pJy5%HGb}3EIl%sA7%L8uP=+D{f*c3y{m}Jy7&6fHu)vA`XYGXoeC(+r{3i zrE2=}f?^xDCIev4E?%uA(**C66$0clX%JR^JB3(+O4q=1ekczg;oqa&2($>HyP&^0 z6)}p6Zzt>a`kirJr*eF=`-~RYM2)^R6}c8;QhG0dAHbpiK6F{%3GHTl`15(dJ~`K?G6Pf%E;6XWjZaS6{jjgUn=Pw(F4KIgYS@;V{3rdrn79p9$=*&W|j(6-=| zqqe+=R0O2e70RH_m~X3Yb{3Zbly z7U#RH)oL}7!|msve+HVlwjr>Qh22$P9Mb!Gy$T*rZmxLH!(?sUjg@IN>e~JO>`n{-s!8 z9M}2QTP_~(@8aUAH$KF1qzrcx%#@jr)ps^H zQzTJy*NON#KOkSkHskU8DNkq~AJ11=FFGDbjx3#Bf$asxP|8v-shWeC3aonUcU`(?D)p1f;)zgI02ogt1{Eu09*+I7kr9RlHh~guU7X3 zc_RU!Aq+yj{N${$zAssz=mz>!6xCot4=eQoS7ZRwoPQF{l#3G0 zjF%Ek*Jnbs3|&x;69P@*Vv_fY$&QN`jMsbiQ-rY!ZshgFkGaWt8&cv#p%_jACVdOC zUko6sx;Fd*i~%OMr{Hx=Yjf#dr=l5?{g*4_q>a57Ea9Z9ax_yn{s=Xqz6w#O2KBTL zn(9NNT@|ZBO!2Nd#=)ZV36g$N$WUA&0bmrBiv@}?7OBN_WDFCFz;`LXWKnFUg`*g} zIg1lFC`Z{#FGRrzTIg*`J6DJg?fRfu1e%5LzhUWD|W2QQ&E)XwEv9 zzz*;X1r)qFl|zA0+c&Q+Hg*I5m$}mh=yz9 z5gXk_LkH7Ir?jy$4~WPI7^|>MP`cJ;Ns&h}=L*@)$~aoxyZ}rnhP(p$(!msVPuF)) zh}2J75L?NdWm+A^;j^bb&(A!!prey~6ez`RT&7T6aYA@dDR;z<#cVU1Sb#B&xwp7< zYc8TS%QePTAc&^`9RTP!3TV9Y`W1G?;nTs?&X}zG*_|=DpgljzOKCR*y@Pgz$7~8C zW)$etD0NY*OaJ-dkY#dRoP@Hx-YYI+yF60PYa%L1dPOcs@!Eq7DUn*A07*i$dRgcZ zamB20K23Dor@$sw!~}jA=bwrF;0!F3TP_D{5PYh`#%h1rCUb8N1N-EzFgHP#)lT}Q zT?W)+z@Eb)i8S)t%Jj1-4}(|jL6D;=XZtgvC}sWEBQwh$0x4I`vI_Z~W5Uic0qh(T zHn#8Km~bf^6BsAr$egAb+Gyb6Hqs09Dr=W*B$Ql;NlU2$G&#$Z9LOa(PHd8$l9C;D zq6B!kF;PnBATC4h=>?pt z#tR-W>BNT?;uIxjaSTjV<_P8Ajs+Q$Ud#D$1q3DUQEP%+Xs~lsYqHh2lh!Q8u7^mZ zZ$yDh0U5;+KPKjGAk-Lpv$|$jL)^*SxDV7ey)&}rfn|i=3FDnSkZg;_Rp zukD(VVmj2lmT}WCz#$hm(pEC%t1(1MSTy$9QZ60JOM?Vi2gUtrbzitBn%osi_>96) zLyO97bh z51bcOkSK7li+S2GQ4AK*kb*bjVb$^@GjA;3%SA2;76&mn1||bvzENBoC2732TNDJy z3!TMx!zAYT6Pf=<3Bf)#N3V{k2Z=Edeei%KZ89*-VDrOu%VDeUMtDC+IWU3 zG1_*FvM+884gnB_PD&8rY+vKaEiGLqwmq;TN21V=LV2SYE}lHKs`NyB1`pDazlJdP z>P3|yv(1NLhyw2u_&;y{`k()-y#4c=H-D*BKK|`L-~6@8|MADSe}4N<^~Zm{ef#Fk zUw*y0=-!?G4Zr>8U%bejiogE(<}c{{Z<;{fzWww6G8$%v(MS#SwM#~({*FK1i%}aecOz(E!;~7TS2kcXM6OQ)7%YG- z)zBIRM^|#{rIPAByE*_Lr;UScX4P{wU&%$#i_J>hnT^N%GwxE$V6Mw&m~$7#JjGJN2{jGn$ruu@k&x*!N4!L*o|;6tekQf|xN8HZ z;9SuU<>b)SRIako2_BxCHykP);;_Z5F>>7o-%3VXw99J%eZ_9%f{3ya6E6!V8Sq>y z2px#v6rSi2dmM09Tf~0p#F#dVW#m~?lnR1IO!QQvm4Xr(aThGDLUl<~Ro^niLzXMg zQU;U4S@B{;o^+;Oq3Zc3IHD-1j3aE9JG-x%iF_vOsDHaFH*BNpeJ}Ce&fM?ma#9*f zy_BanR8GY)O^}{6e5(n#`^69$UtldPk&-gRnbLS-SYnG&fJ0CLxOkT;U8QnQ7^0Ez zXcREHGDgM?+sHvW&K2_s@{+Q~6a>g6Gq&sh>VY1WUL|<+3Bb1|=|(UWS`iN+TLc=X zswW4LM-Ra8t@4MbI_fBo$%jr{?UE})1H=}HC+G}_3#bQuIw2v~q(L8AI^_n!09sQ9 zf;$uN;T{0%t&C(!FMlR>T7y*#NHm`CFkS)0av)W!lLx=}&K61<3hadkU2Me_!U8hG z6ccGOR^Ppg>oo~u^_c^4apAc)6d`b~j+E%x5dxY}#s?WkW}Vv1QnBXAB+bdK5<4sj zzLH@kchDMsgL1p(c4zy6c(IOehCG`XINY7wUDC9gNY<+sU*bPF#2crQ9UD*vcK3O_ zF#8PK5p=|jCMR>&xfI~>coJ6Ti2bJ+He+~F5iM%acsaU*2iha3QO!%JxrKR*7bk}c zo?Km==&X;RX7NioguETar+*Sxnr2+RmQ{*vAy;eA;P~ zkAknuPyge;7}6MoKUMxKRdVuA|6sRnz+T8a)s=kXfGvLMvA_OtN9>M|tg1jW{fE%H z0OW;%R`d-3cZ63g!nQcZ9FGC|qRf!8@V}(w77UT6?YpT`uy`aCpWw$Ha(uoSr3>|k zL{C}E=_@V#?ENiuK`32xY{WHt#Qo$97ko;gijo8H8j! z425YX@NxubWHDyK4^YL#VOK)p7fkvBNpO1*AF2t|6Zt{{BH!i%gcHNk|LFX`bAm?{>ieBQL}ON+%bS3m19fV2LF(*aKpz z`Cb^KkS0+H;@)ROUviFSBjpUOT7D`tY2}1P)x;*EMBeX=yU`s|87~58F$#M_Y%|w` ztm-%gBq_TkBAKbNAAtbI-Kl6M7n-;|CUAxf>;1QH{~*jiFfk5f4Y6dvZDitoD4qHZ9Mj6W zrtyFb?p|xwYl*6y++A`YN>(59KXk>$bdz4YVwH!89nmDcs$ohy(b8kfNpfdq+Do@z zd0|s&Jy)q&NPu|A1IK{bc4w{0iN-?mtKkF(cEyK5xDdL&gLpQ^kkff33_F*0fzz!i zoo<u!Jh2hPsIG#+1bJyD zByDUp+T2#W?dQmx!AO4fPsqjl($s*kzI& z^g>|cQJi^8`Ue<6Ozp-M%ra4YFwrdmn*&kk$Q_5wDIc~{AqqCsjM|MP(Vz#}K`Qu+ zely%!rn({l_JAF$Ib!k~-5PPGRfWMcR`A#p`HL`>`eQRHEdo5>*a7iqorE%{9I8{%0Y+<^09$7k zyBvWwvd9bt;=()s>O+soFinV^$dCOr9*%DtCH;$Ld zCkr%l%5E@c#{21ea4{l6#gxjH&o7#RVjkQLo*Cc`o)_c|UV9)*wrw#Y8m!RJYZ2Qd z9u6h-lVMxtTOkf-vxw_QAxcqINz=@ELc?IyOlsgm7kY4vD)BHXN%YpCS@?G8>k`D- zFLviszwORvl7E0_X33mT<1wmu$qgse7-lBpeLPM~0da8{8h9Y58%*LW4*(7`mGK3w zG8g?uahVkK)pxLk!&G8%`#?yWbF5jZGu=YM!(v=t)SKcory>I~r8@WDj^35(CK76x z<(0`C6a_%$XN5!LfZrk%ECA815TjZgKE;dnQ*6rsAZe&ES<$lm9Jkb*e`P`q&)D}Y z`FR;wlET(_Z<3KjZH(@;h@l^Fo^BZ-g-Jgrt%fMHLg>!jeks79&-jph z@mxD9u!1jwbOcqaP!cYt;L-ymP^%CZLZ{CfuCiOC%)?t7uiPjk$n2AYQhd8;=?TX} z7sDp0PJpxoR;H!RfisH%nJ5+J7^4jvw&<0Y1b5 zt%4Iku{U;5`Zsf_*ORKeWSDG(ObGrh!ZYZUVQPiEtEwxL(TZ$g&e6^%gbLm>_NUvM zqQ&09^QbWcbLs6RwM#NI)TkO?x^WkqJq~M6Bpg^4U(5~kWyGEDDVuN0;wOzIXAY#) zG^y@VHnk;4Y3s15n-k9&mV%e$Rg)p$mRX1;FjwJhup;qXJZ8~wr3jq(o^JIl)pF{_ z@m%#PUsRlm(R5J~N8|j}U>v@oVwH?QGb#CsDc9Ozp7RNL+%pDymJ`{AE&i+f3NB3SV7~7Y)Xs{pzSN zhCEx?*~+GuYvN&mz}WjEXrZ+^1kdXb4sU~2ik+j_EDC(LaOCLY*xruEbU;> zGA|&wpY&a`W3(ncCxK(nu`T#r3f?e)Z*^vBpj0VURa#FSFrQ<)1oC*dEYc*K$Poe< zM)XLYjl7T%wt#{+9O_$ejzwlQ{taH>#vNi$zq~XPB$CBt_aQs`N>xWuC~_?Ev_QJ0 zt0;COCxjj%5p@gD2u-qZ;&3m2;4sP7;!4AI4ly zoC^(o)nEWc9tPiu#<(!6kWq1Co`ur*$RznQ!=)5~@)u3g9Z{4d8JEcxw|(`N^_H;TS5=TRw`?kcX+j*$&`R_*3?RD> zTt?JmxFY~PJ(6rBmTsF#Gp#Q4ufn8JWCbYH4AEcGEvl|rOr{@e&3Yx*qky1du~Ws9 zDe@@RuJgB4l-Y-r#^N-;c;u<421O!eOuh)A#UtR6rO}$l5K3!m?xd;6rOciGiKkxD zGaW$3k?#v9^6}>e225dC3rp4Uh5)aM$ENKemLn&1$9=KQ{UauLHxgAp63ETYgLxq54 z@-;x&R!-t!BhM>dd?WT6hLECASFN7qv6H@xN~X`a{7FyN3rT=@t_hXe6;%EtS#~cC zP1~tjt)?nxg<@w`@g18jy``Ba+33{Ck@k9*jk4%ueHByB|D8ptZUG`pMTs2zTZB?# zKd)vGBS?Rl46vYmddC(@OeYOYr)DMNR=Q`8^u^gZU{B4Z;e5US((x_?s|*8qivQt)ps(M8=*`<27Xk1PQ9NK7hNNrd@ z;KNnH)|vV1i7*uG)%U8PgI(;vz*!umL(UUijz|!HR8KUdV6V0Z-jINg(1IRtkjgM6 zsoz3Kc^Z|9KzT=&(j*$ZxEaj1OR;(TqF;)g$W&Zum?fmZ9=n;VpeL_H$(o4G#PAfq z@f}KcmRckuQnLlER*vo|)+^~T*lTo8X*;G+f4z33>*>JsrBSi7x5m%nu#NmeWyTU0 zD>^ONb8yHW5Q;+*EPzIV94LsV6*-WJw!)fI1&#B&_W9XK_q_25T*xosv;b603%lu( zQ>hSDS>Gid>w&yKR!VzN{mjD7&$hJxUMKl zG*J~`^fqCf`8B43+nuBS?UEpTYd4H2CN(M~GfQ`j>b9gIi63)fS#10C5;0l3%6=hK z#X`smb5xbgknF-?Jov-*`AOsEyz1K9B*)0JeS$r`3?*5##$DB(RSygc+u10D*rBQQ z2#HS|GG640_y&mjNmR_JzzSQT?TgXjq>Ka|P87nD8OIV}s2Mc(ni2CtOn;0mBOL=* zAn^mPYVsvT<$M&lSVS-BVSSCn@ZA?;+k!xRl#4|MSm?s0P0kr5z0){E**&6qWr?{T zph{dMXrz-#nFJ~3EKS>$YrE2ii?=j{%_U8D!av9M2$AL2aTfY@I;A2RjzzJaKw4n^ z0MD?4#=PJ$_QnQD{*n}fae?Hl;qHe0m1K|6t0>#L?ef~>+}GyWx>+_LjjaYirBdN4 z**9O9ykt9X!2ro|5MF#ez*Y$66QU|L7hlM1_Q}rRq(k_1N+^d65|bT-jHTrerr=@3 ziwz}SHd~dgo^c~7D_h=)Fmn4)_ZtLs;X2rx9>n#lMuhD=k)Z>7dg^w0mI4GFaXW5n zXKnq~3rkszxHX0`_@5P7lMa09s?o*L-rg(4jDb38i+2mA7R6>43-6M-RXlLnIqO^k zX-gU{||WC&{l{gWu1G%)2ka?KgP6$q&~Qc?I^S}XN*vue>K zth3K2cK}8Vi=nKlx@Ar)!9hnv! zVG)#rX0$eJRax*gA_@ zKCUMd*2Ct^IpU58Phocp-}rjVD-H+SJ@M^o&Rg%|PIN!Ji#sX$7~hbBSQ{UVbZ4Fx zY4rlob+oGxw3pvAbxQD-+z~v`YIdYaA*FlQ(>AX2 zM0l=B*c%mM=sVdbQe_-6$`^(-UQ$zw4}Z2>vj#%ID>0Wd%m{4hnh^91<;IqY^@j2n z!@NFI8I;Mcu`l{5ev+M2K?DPK<*~~SQ9blXvYFb&uWyHL)qqox^W4^T<>wU;HlxJ3 zAjCgAs+gX3(tDVV{$EpmKK8NHQMT}l%7<3@GnA8EGv95{ z=T!4gp*%q;fK+iA(uLYE)6F(BzLr}P@ZIj4__`V7>kyQFKzBKEbqFt`KhURP@!s1S zg_@9%c+ZIR%>$5ie!AmtoQaruM@M5A0~0Yvv8kHz;ED$zo-$ffJyujNH26Ej;{Hpe zhI$DT;I>JMZD3xYx;S=f!xk8qmZ>?Es+vs0}TB@0Bjba9b zy;J<@EU{F*gu#!ShM?oH9Y8#jYN;|w*#Qs*I$h{fQH;bUb8ij<8=Tw~*_(_)D#gLk zE#Z(2s!aOwq-xwxhW#f&%9T8=C)e?o=O_pe_g;sik=X5=d&N{yMH#K&;_-x` zUzbR-z3y;dd(6oUt<9smR_J%W_9DOywnUG^bQSirY-gCRpC?=>#6mU4Wskj(@|iDBhq zXu4Nbi<2p+l!;V|1+uD{aXl)aPO_@SYY~r&vGQ@LlH!*uc>)-nKsNgbRX8w&nPQU^ z4id*wb_*F-f)j?{m67p``P?Cx$!{g54pmLyl;i6JTRc380hf@CS6(;~sjZYr_drn? z`Fa6!*~Zd3bSn8pi8Hldt?r9Z zubjjgM(|2i`^=D^8|YI}fs~2SynZtQdTF!Ljn76hRM5x*kb?1y>Xap`V6UrzE%6{v zYne){&nl(r8rG9jEo%tkyjnULcL|7KNuJ4(RZ2nSOpna=SX~iTN`c&hfV12-3OuDC zt_Vp>0#GTS8-=DVKwJ`{Ntd63axGw;9i5W?stnGCWw@sQ#^t9w&E~B{gg*2&+0a z1Jv;ZCn;FJFD=`p(6TX6S1EfN$z=NaLAFWL%9HfWIV{a$Wynp&P8c{?t_&$#6iJwz z5=JE{wqy)h`2}(U_#G7i{Ck>#Zp$ruJGIqq4?4(U*F#AWQYl{*NPIES`*|#QGbW6 zsW!g(aob2$XwTul*aOT+U{z;#Cb7-=TuO2c$y zv$3qCnsCCEu5i_)@&F^FQsG%{s|Oh^=l*`Ry1%b-WJa2i2+NI~=WtZ{1t8BNwlGDo zxd$}l!e6JNq1_&bypFn&lzA#I33AG3VR}nLf=UHnr(vbP}EB0wvDM& zIf?=jXLzB9sPC18oozusJQ@6P{*-~RJ2UgS>2U;ljb7j*tNO(1XI{`r5E9B@XS#a>t;K}9V6 zClCfD#VEBL+o3xNoA#^=4y1J{KZrm)PwnxH>AxbaM|o57Yc~s*_?QU!DQVvlouBPK zF2Vf1tXjVx-*K5RaOXI_a~yw`c_`j3iIAt5wLMN6*A}{QcDKc=X zT+*+tK;r4{6MdTj9%Id1F4*s@e1nmVk!Px(&)`OZNEZU~Y-6of3`SD5kYS?=PC$Sx z>|^AG=K41%pol#$Q(G+@uEEShP4nR*+Kd$O~Uh!4PD6!on$t)4@5W2+#?M z92*3vgt|V3#cpbJY5P_Qh$#fffkPjg5Yl3KM-a?j?2^jTrxTTx# zL}Tm;L6U!gar@2!1SC{(6ml}A1I|vpn;Izp7-xu0cW|)aDVj-oc!EgaQEAj-3W#H? z5+lFVfR6%8P%M7$hS(UZAps7a@r3Z{fn`5s2=nM2n2;!-)pW6?I)5hAv*tcuOn?f3 zgCGq-y#`$DMT~hgf|3$=KfEhJLd->7b0K%Fc4X~GbxL3#E3Wm(sh36OA; z-QtDhJ5XhF>CR9_GiD(TJLn5>+JJwH$Z!#wCEJyKvRQWT<->Ggm%=IW%&@D4U6Q&k z1rSWQ$#Fm;t<-0kx$<60pQ9|9mW3#%N|Hiptu;5P33%E|{oPX1=4FwUE2=d)mA+25 zwu%ymD@fT zA@ZQ7<*kyf7stB+GWS$Pb}%$o zAv+FwAdOcdwW&(dFBsl!V>F^A$_TMeMKn~q$`VBZo>@q--3<1&CpptfK)*6gIW?Rz zxAVI#_N~#IBlG}t7};FJd4;nJ&Q{ple#K?|G}fBOyP|hcw0V_aXqM-CKN#9s`rL*# zq2SaZ))X`lmt6T}Rfxz`p}Nh5=!}YvDt$JR)$yy-U${nFp6kP4XdkxEPZ~GpRoC8T z$)b{_2KG1C8!^xzD1L#VazP?6hg^b|^-4e&`=7wMN237g+hX&E#7JUZ^^&9jwI7Fd!Xd!=cD8Ewr7`z4)yTrpG3Cxq9 z@2j4ItFVaU$UNj^1kR8@i9wgH;r2rKc^$RneL?`BKwrPi%SG?AUfHA0pNNxgDDwxy z{Ib5UVOzdXLDrWlwf`!K?8}$+-_O+bPlsw77vzs)Cz#9~likaakU(u@12RKFfNez8 zwP2*G;RD3Z_uTNN24xeM7F}l+gIft`GH5U0#_|FVEat8&rD(mjg8X^z7^QR@`&_w^ zxh(jTQkMm^UF^Nm>%ySwKjVuF-%^arwzLD(f)2X8HPR5sK3OF}M?Op{ENUu@)>aPu zHQtoKBX+UjaaTFita7N~Dbp@CXhf{WFhp}`&P&OD=^E>*vbu>zMeW*?yGw8(KyJVK zX+T0Del&;+v6h?Ka^<-UfaS8+rjxyk;Q)dDleMq3$SOi;UlU%;$V4E5~%sZLlbX{WxKh`L?Abf z5>0pkeobTi%C^BYKA1eY%@4D}OTnS=y_jh#ep6>t=?mmqsbca}ol8zt;+ZtNGg_#j z_V*)4_)W*lm8(`Uv5|^#Y|{+?oO;&#=@hl;8~}#-RX5~N-c_}JiK^BqnXmTY-MdVk zYc04-wXlopTlPocvIiIr*WIj89s) zS(_CqKhKlqmRrgNRg~RHTMX68>6FdVq-Rsk&*Zc*HT7Gc9e(ouma*H)TNCI`H|ql+wA8G*tj*8I;U}W{t8XZ97L& ziQpWwd`JaZkV<8kFQ_Gv%41{zRFnNNfVf&WVjUA?05m^SQ7$WF0ChvXhivTz1DIMF zhD;O8t<5V`x=zE!>I^AP$N=Ofo+-l*8Nf8>oJ1>^`=?A8q*(}LVRj#tsmB0EYjXOm z=I1dvZ<$O!YqRngK$Q7=ww#N{ECY`***A;F)X%YF5ViSY0hnfaRt&PM=-Wt_bE=dn z##zR&S4si6pY+XDd+N(7>HvwjjHJ+BNEns>PFf&fb{_O~YGO2`kP*z&qu+Lx99`na znkv?vf6I^YZ+VHRlGo=AVeh;l3fmfQ2%4!_p%mtv;Az_%$xzmh73zbSHk{mD0xLi~ zpAK|r73gy8OT4-vy&uDrAdJRp<@tA2Ix3sF6NnLp4gUR^VYqbWWEg?1SF6a z>h#owHzXcULKFzWJ23EP>!46>L%!8R0-z@X&)L6Kpa`FXZQy`AL=!l}Bnqnh3n2k} zvODKd79@%-S`pPnM7$z2XZ>5rk6aaF>m`(viuVfoifOotTXlh{f`>myBA8L1@j892 zlm*%2m+qOB3}zkv({tqlnFmc|B2fXouSqu8$ptSi7sNhX4z?DTjq*NVqQAOvl^>LN zt~LErNRbV0pa;i7S@x!LcY5=d?KrOByKJPqeY7p{=?h#8rnUXl97|{{#kH(JctKRY zKz0(vZs-=g&*3!gmJ{L$M=+HsRFApNl14Cd?df(Ws_y`n%xXKAiO!cRMa-?%w~F+r zn@3VfiiPH{*~T$!_%Y1AO(b{n2?X<;-%`75AWZfi4IvLqm?NQa9g$!T0~>?^9F4FA zLh|PoK*)=7+(avR->iUOm4R8i!SYdA0hSZdaLEo+Nd~|4+#e4~%rZw`6ZUYmp9BDr`q18P0f5Kky?T~puhP7v@ScPR1& z`^2WHB&N@Lo zO7381d4rVIorVi=r=XTxIv9nM`v`4Hnz%9~)(8B?I_Yd5y>S371>bYF641Z73%6A6 zSjufH?O_$(#RV^jeCgUGLcG2s5#N(U2%LAXJ7#Otz3%K5={qgb+8=X&Sa~SepHy*c zDX*oUM8mkCxIzX`ZIEDw3HWW~JJ^Dhi%_7-9#vNvKEbLjzsn!4ye-)}@ZbOQhf1aL zhs3Jz2|ypCuOae8zF(EKqW*^|_UupKETSQC)oL^tzlV7a8yAJph9P7lhn`15uCSD| zVr+jv90vuJG4iU@Xo!Xpc5D=I;Of(}TJ>X9uwoPBxK%niROqSrT*&)->{I)h9F@2Z;XWR4vaRS26hm!y_A?NH7g@-jMo9 zF$sZyjskqj0rOuROv7LEe!a$0d*nM&0G-ugiCuubapb^Y<>x;Dp-lgjXhInqEAhpL zRRPepvG6;&3mCf^oH6NAVZH*sP~yqWpw_6mf<3t{1ny4a@I0}nZ77pTXMpitD20(~ zO12a*&N5QU$~nwJ5_{BvG*tNO;w5<3kcJ?I@|CfP*JgErQEP%+s16bFk#}-;*+1@N z9xqXurKL;a7FnM-J;Cwl*MI2$!qBvmUk}y`qMTC}4_p*-jh4I9uQh}ab z5u|QkQwJhw%w0_;(oTcMP1QW;|? z#u%RmTK%tK01p2IDttI>P~sy=0MnZEqDug!69srf8Rr=rLL!!tTeFBsT)tOC^{V4m07_;0w;@1sutj1rg&{7i%2^gktflZKzSsM|@A#=g)uw@W>QlW*)jgv|_LYxJ}yCOqgR{}E%VmXnGC{K+a^QlZ~ zN)RzSR;CU#IcYu~p1e*Tr+ zx{PP~dy@~`O;$X{Vh)#CD0<-DIr>|wT8>(u;eU9@h>A|?I)4WXRjLtf}C zva0!ruDc_-$IH@Gc=<>-37-%(b{Owb1$Q!dKQ^8#OL$wAlF7{k`|7S;CWxF(kTqpe zh{h2T>@u&ymXQ%wdMb+pLsuoYO45eCxhx(PZPFwQ7MM?v$8Sl&+$Up&F@<8k(umjg z7)4I5UqUSUtPH8a7#CV1Os6G2z%ai+^wAZDh{J?dTMHN;9?wyIZzu)>jxbtCj-FRL@68fCF|Y$ z#I;ed7<`TMmqA{G`r}*$3?{^}1yp_qaFE65FEWL%5~nqT;8ZF-H`X&&Qt|B#+L42b zioElhs)?gHgR;)$HeVqqT7`dX&5wnKZx@EvT6f$f-2r`@dV?V;qQ-hXg3^|!C7!O#tzbeqJ97(jEA}xj@G#f#FE8>g_XA7<9Io|W%%1Z* z`Su#prGOPwr+NliQ(xFj+BW6YQRSqyCfrfAr}K!K{ILoyMbaTDWUiey^cKJ(?ht#i z2qpzE35iJ|ha^}g9f>VqEoe2AEs!!b7Byq&fyk#}fS@aQ1c^YI4ejfuAeqF;|G5-x z6GxFViH&?k0kTBf#3qPVQGg2G%C7OYDB=r{ca41}n%W{HSejgw>+Wql64pg5_PNZ- zRsfU@CY+OOtg#de_;PZ?^uNrFk}~kEN9Q&s>qAOE6B>R-&@L+Jm5oBlbd0B+PUD{| z+b=f;155-EOjQ7oh`eM#V(MbL|El0LPLy)6G*2!t1d$dBi<6Tuv0^jkptra!NLo@c zNcvXM50YDo916nB24y1`y1vy7R}_@UgY#uJy%m0z?R=Yq-wY;`m;!rYg#;BbtCTS( zzXgc;#G|Mwc1&Se-mG}L(mBS%QxpH=He3&%of7(p-yrX>;V@$4wl{s2ke1L$;pS8lqk}o9jwhK z*g?P|{zB<28prb5Fs#${gXp*IHkuFynAzdhmR1!GPD~&j~3sDDp@8ODiZNTOL5Y^5elMXA)~06iNlNEE2Ka}$NoHOe%(ps>=g`NgZd9wD}- z1sUd+oO^kX?EV&yD3S@D3pKy#R#Gvi1n|S3#Mdk8>zhf0{yk_BGQ}D>Au`xGpRnOvm|TxHPt*tLMhg(M*NSP~v*g7Q}=wh=hFyQBx=)_}UX z*RJ3UcKBHJvdEZa3pB}Tw^<^VtFN1?!#JB8g)ZvgJU`dMvF>+d-|XJx*|FGD5yYjN znK06l;_D_HpKiA6k5R8P|c{RUT2l^@=YW;#!^v!R_c zOP8Ap0~n&Q$%WIAU9!qk0&Osa4)iRZ*h#*lc{7J`)Gn=pHiM7+^iX}0H$z= zfWk|`C2pZ4rn!6P2#+Tw?9qUC$Y4pp;0%cLbJ0k7I7FF}DaaFaE@gXz%L-?${E}~Y zf_)-uxmcK@13*0K>x$eVvKeGC3uKFBDFDe=tzh5lX-j^*4Q0~^DqQiL`vbQY=lr4( zKAks`&?$85=w5d+n~eRP6>)6q z7CulQl>BfeyvW4U&2B1dK;}BHn4*-wa|kUL9sZP>MI|0t{!Lpzn?yxVot!EAqIP(` z#Y=(_Cx3IgPgOz&QyOK~qr62w-eqza`Iy*f>&i@3R!J8wFi=iTY$Kk`u5;2_o8nrB zy)UW?zf?^LXMH94U{Yh+L@c##CJNVWfSlp5xn~*9NXGFw+;Ng?+r;QL5^-)I*)(*G z>QkEcZgD*d%@i=}K*$m{I)~_1R=dfV$+HUd?sZ4Jb+D;|U^We~4+H2Tb_f)qlQdlN zo>h_ESMd^S%fqpr|B#BOeff*bE|1o_H}KW@f&5%V3#c?-k>yC{N;AF0e4G(B?ue%aZ4Y$}J|w_D)>5Koz}N zVr+noLWrF;)U^OzG$iXJ>m?bE1ZX`OlO%}0wULgg1krJ2ISx0=7Th@qQl9Ku$`)Ll zi|N!F$m;V-eZ>jb>!Lh-d_RQna5Vp}>5jnN>&4K^P@T0ut_y8Wg&=K&vD&{9$1$WH zF_QC#wSWr3Gn3G1QA-iot>u8Ly*>ViilgFxTEr94?DP}(%isPWX_VbpK~n7Dj}Dsq z7i#O`KSRskS_tUo_|K!`_w^6U@t+@#YPOy{5 zjFE=|Y^|uT1!gx0@2@+WMK26 z2veWi945iT3%3|V_)6mD{$*&%3wbv0qOE>Jv=u*WcL52BMGB&amWgSqV+I{}?c0Y( z2AKa;F#qj%A|=k{d_EQR@oo8*Yn8TH!BL*(Lm(%{TTuz1q)CUR!Z-EzzorXlhyqu} zt~ZbaOFS!g?0IusU6i=Q%nEl?EF0~xJFJWjlDNR=}LJ1qzW6kwH|y8ti_ zc}8K&Aym{j=J8P28v_gaaEKkoE@Z! z$OYJnYv@*8ak=4|JJrU{%Y~wY)MP2=WtXAWcTmZD^Tj=3D_~=c)C)VxzCwRkKs*3} z0~aU&@4z9*7sN#twr#l1=1BuP=h>a}?9O?%U@$x9+2_q}=REuG=sdeUO=+<*@dZ51 zw(4l6trh)YZm2$_G@Jw^8n3aRtR(M|Z?A+w^5Y}bo#G-=GR4}|m#c?m!xYwsDDGTo zcdoRnh}qGhxV?Hhv~x`TS8+^T=l>bm-^>5A_Vb6@&#V5Q?|1&6-=qER{XZl7#r!{e zjZOZay~bw$Pc|??eRBOjBm0N>fA$)8LP1>Q{mEY3d4KM_KX=}rufY4W*U<3(gv(ua z{+~PlPt9?z0%r6-@&9ChZOQ+0drnJiP%q%L#K7h`Eu}uUb6Q$yJEx_c)6$P{TG|=- zGwlZ(_)D4UcZ#DQ)6)7MhA+n%R)lGCdlg_e>VN7V-si;s9{s$l|N33p>rwsuT&-!S zexPkL@x~{_p;ftItC%cnds4sTD0xlX#MePWsbJik;L?Ym_=dA(1FZ z;zXKYfQA!7ggs*}{;h~u(y5JR7|l~8V^3*>_71?_tUg2`tnd9z_2a_z8Ryayg7}k= z$GP-BgATTVk6c;B`yfdZ&Tm8LW07D})&Up#4*`bArl3IRJL>r zo<^SSpikhsQwy&<^|N-*zUt!BM!SF2>-3(k?rY6noBvh|8~1*z({nBcPP=hmJD=aU z_NiTS&h7{HRloQCqCKcTSlyfBo4)_6eK8GgT&HvYZCW3={%OB{^Y!W2KJWFNUpq%1 zVP`NodaS)a?e+RMjeGyB*J~d427a@9UO$C3`}C&YZ{E9;)_vW+csib3^v|2Ud)L10 zPp?iNYxVPX|B4RW`o+!Q>asVm+c)lf{?u^w{wXxjW$jc?FzpAIi3Pu>1i->&tK2fg;7 z*Kc07&ztYseg9$LPNx0i@x0UP-&z;#OL#nCzfBk(o@(z0_tWOA+w0AH?pHYMJ$`+h zPTEiP^Tq8$`%Am_RDbHX&bov4=iY{nO*t z;^RB`?P`u3CxTAv+l@2*HmpBAcHH;0?cTh5{L*(C_r42{o}TW#$D^TVQ)^J4qQU#S z>mz?MXr97*w|(E~{Bi`F_HD0mI<@-~XrG6JUafW3>-mePZ|95Ki`K*NxLLcoXmwl1 z{`Iil_Z#>A%<9#{``Z1i{m?%}&1UQA%cT9(XdYSh@vQGS)2EtG`rW6~_QTcn)46{M zAN=NR?<(v~Thngi^x|evzwHm+zi&@}IqG@saL|0}HST?EPruS`qyLDy)=|6Gg!lc^ z>)Yn(JJ@#`u+|EP4f|`W*7v%D7QTIOt_O~N_UJla?~nV_?!)=}?#0!0%e8-PeQSPr zoIZJ-hyJ_9J*i*U{fA$Vt^(LSJ!(6?GnjsSx^48n4(mR(rp;dK+tuu*arv(Gxz!yE zK1QvY|M{u^G<`g7k)Ahs->&!lPSfvnzu8mx@YL@%`dx&P~U)8;@U3y?Zyj>(*{+1F!#XIG7y4^Y*X(`uVqkcXie|_HXW; zR`2PdRcj5L>sH^HTMz9)zdt?der_+?gO5$*^t->-9oo3}=L64vcs%Og4?a7e(dV1@ zPrWv6A3LqSdmq3-{r%%{tJ|yhW_^zw-MC*r+;~rCouhiI`*1pabnM3cU=rE2Hf?wN zzx9sn#m$#?yK(Q=&_(OvdO?p`$M*YQzfGch=kmDsVE@+dHZQxL-EV(6{f5rl1N(d) zJk?vD`{!-1bKZaIIFl#jJkGkc_up<7AK!JSKIu1Gcb)0iR^#3$=%LlO7hwo5Y-mmG z$*^ZXSfBfs{a(G%!{MwuxcYX}wd%d872JQh@_NnY=l&wR>#~1$+l$+W*3q!`blUoS zdV25v^3|@}*NuC>{rIIlc|7)A)bCU4+&R7NH%Z5B(x>ys|7a{Dp&Ern5ecJ0a&)B)R>D7<>{r2h8`IXmoo-TXc zcC+o;?f&3nt>?5Zd+x`}LHB&oZa%$h*IH-x`NSXA$45_Yzj^;)U)pu&yzgAj;q>b4 z>Day))|!0=*KS^QJI$+Er#bz4Gi?vhx!t(;+Lv(f@v-GTIqhEaxc%9FYB!%cH%&I4 z@$7!u>@&L3?p@B%w0V2)+JQBg1h8klx4)gT@t*b`S{L`d=G}d*>9u>!&T#6}!Jz%+ zrrZ2%*ZN-v-sD5O(L8D&pElY@exr5NA9S7jW7vPJ+sBuS;e)dnezxx(@kiJjG|yq} z>mwU)zZ1gSe*d9c?>n7`tFHa6x3C+wd*AbC{r<_kwlldwz3}$>sP!IB z>uuC%U&Ak_mp9FEZ8*64F#OhkYW2czgF*P%@6~3v=gm8N@N{FH+qF);b#Ry@$5f`fS(2$ERkqHt;4jIGw=Wm;P_R9`}x)F2eiU?$v3x_P*Y3 zw&1YyOEBp7-wlt#(_d>JuZG|3PW$+D-uc{mV07oHYquV2&2Imp9S-Zw+xCO~!R|Ln ze|iPmgZujJMfmIEmtN4X^#{X?);H)m4=u0V9ez6xo{rv!-9hWOcKwvz48~vEN0a{W z3!`U#^Rea(+TQ8q;Nj-|*V%xE3_}1JKL@ITIc@b@ZogcnO+_>?#a8MYkzL{ov8n%7xcQ1^Fj0K==OZl z>0J2r{>8_$_UHZtp0|U3^y+r)W3zqKe>a>y`8N+wkAvRV>%QX*hV}l@ z%|rWF2G{P}y>{K7w;ZR@>0ddvbNbux+xY#{A{=y`s}AfpAA8-&m0hzJ!-w-~$?v~>;7?Nijfx`gMGdEc`Z z-HRrFrtgoBg@<1l=oWd+ql(ZoM;bnzdf< z>09I8@Ac~aUhhl$eAsIr4g3AOcE9bSPUyEk+uwdYYEK6b{Z`kzx9qOt-ISs^IN}r)$JX(j~n;oYyaEH0`wd& z>`jh)-yD4JHJ#1{dEYv}so#7V*B&2yYIjdv*t7kvTfgm{-@LP?SJ!QKa(Z`P`&IIU z&F=Jmd|&H#`sdCC;~o0vJX9 z8zU-8sLUtWnt&Td(5_E;{3VRSiO9W>qhEd`5jQq)sIjtL0>mEMp4b~Z2rvS4z^1zp z$_3~+fKKx3mM7J8P{=kit%7rCO$1nF+dx=)PM=*i+Q1Lc2!A~QBmlW?&giS}U`y#L zD#)`XG>!=q%WO#tGK@lULMa~SgwWW^n4N1{$*x}v28n~`L%@>Zx0gtyO-Zk>Z;f7pEav6`0 zbWG`8b~`7qD-H(^U>c<|Mh7@(Lp8z$iNOE+zyIHWI1Y&X|M!3YfBXO)9v@MG90(j3 zj8PyD$vV52P(E^-*V+lV*u!q*eggH4)~HQpvlVpqKNKRge)NkDMn%*QbPnPQjyz`i z=ocC2?2+`>->yX{7C}dG<(}tYtQaBcUfbYwkeMah>#08F{46vK)kX1V?D#r&0a|N7 zUm5lF?b*ro-|yPzO#nl2gClw2$Ve?PT<|xCs~la@7}pM~F54p5QUN z6Zpv3W@li1ZUPTviLkXmi6^5Z9WqaYc*(Ud8At7}%?Oh9Do}YWQlTR}I0ZS3;bT;m z3kWH)30Am64wZO0#`64X{1p+Ky^4_vyDrvDGG`mEGeO6E&eHSTj3(bhQ}_rvR6dG^v4Ei<%ZY;j{-0-vv)r1sUYb2%5*o!e3P41Y zRlK}gw(BX0m&4nNz?+CHl6}dtwMfQwD_c^pdfKxTR&eeNe+>y z?(93z;zTP2Gc)s@w7rwIv)JEB+dFA{Cv7ix*h$-|32jH(ZUlISC};D8%)L(FR%Tu?J$bTOR)0a)_SY3)uIFVu9NB(AM%Y2+os3VLjXME@KTLd#lOI-Gj8oqgs}_40 zC%+g)jXzKGk&HC0_z>0i1>df`fQKU+P(-=DKxsfyJAH^GzXKg-v2vq9PSR!fo%&*@ zzQ|&Kr@r_O>Wk#47i%w)cXgE)He%Dh5!wTsm!vc^m@^gmtp*T^bYn{YfJM$x_B?R0 zhky^QDavCA9YSf93uFOuc^WJxak^MgDt-uO(20|2#qc?!nX?&L6B{}6{cHwi{?*i| zL+qwAXsEWCLv-O+A&?!tf4};plGaxHZQ?1BH6fRB&Sp!%KL{NTfss0dXKQeotL=fI zIHAI84)ADEpNEK$5tu;Fb{IKWN>g1`5%+nE5EAgd=C1ytiPR6ZTCKJot@YL4itu_v z?3{S!3{KB^R15_q05+!L-<(`Aq-K!m5*t-{SZ&VK*^k^nAYkyVD#c=Pk8lw;@_iDp zD^?vFFd;r=7kA|6C{Z@4fh1bGVbP}9Z;~MSn7Yv^PdoQ1$>)&lsK^EAtIrd)=S;NQ zy%wq~w!19ivORLzY$$F|p8A|r4B98_-G(h-v;%xdDV`yXO|X9hgK5kwL8`ib0#N-k z{*{v@kK_?H7>3C8MK;3_2H`RZV*7x1pF~a3c zSzvFRgX~Q^M^Xw+n$t~fi-a`YL}{l#6zG_ow?Fa5kK=`W9DS>9jz{d-FNOJnC&oH;+f@sRj-zr3SB zUdu}KN*^VzMnrbjJAr~3=JNi5(jlzL%6)oq2Tt-8**nF+PBE}k3~X3}tttkVsDXxh zV5x_;heNSBc9S9YSteMpAW;tMVq$#F@;OIUFd)H{GTtT!@a5g?U1F;+W;@FXDOv{F zji%Y}gyZ_rFFHuBAN?Y+oF~kXfMNMVc`R>2t##-f?nfQ8tU?32@*LISG>Zy(^ym7NKAvT*4sZ#e_7yv5vIRqteLXFY{7e z*9;bwTuNw7&cCwTSg3tqfWS$s!LG{_4|V2T!kePukdj{>N`fBE(*p-1%%HgQue9!SxN_+gbz3R#}y%u`m^Ql zDCZYq+_p5a!TB^-JbSk5>2sV;0rB#Vj-I<|c_G##HqsTeTIqLF8es>!STIEln%E#x zh6OP17 zTGMv2)7ok5WG4+I?PRB&?6lN&veQm>`j?WOe1rQ%YyVuzBg~qiAmw~;!X@RDXjIPLB8@$>T>M=Q2#`IC%)6?>ZJR>eOjRx0gHBhK)ZSN?&#p2S*OfJYbreb>$Px*OFU?}VdJTqEuU_m%RG%@&YGjpS^he3gTY)jVft=gcsXsO+< zb?DL6&w^N4qIKS4d`Ih$dF)*Od|<>dERYeSQ2q=%O0q;Uj)*xmVdXk;MF7#v< zda?^WiGSUNp6o(TeqW&{zdNiMXJ2M3n3jcMc2ZQl^#5n?{lDY3kv-A* z*?$E#bI-=Q*DcGAlfC0TbMh2_ndrq%^du!S@8#z1KqR^wBa+|%prp=v@8A9o0g_F2 z6F`AvOD!4rVa8E|g>QvIq424y{`+5fEm9Zs>YP_qYYAD>Tjd0OaaCLro)Jlu+2Rrl z8qLa9zUT{CP_mJ7ZdeCIQyB{zz!Ab)(Wo;i#w1VJO2-Sk=sk0qb)lki?`SCN9#<60 zJ@7?c`HO9ivujSuYT3)BU5Ea1FjSx-qyH>)YAcn^aXmiCkcv`3lrO)5@2j5IH<14A z;SgbK3>U21x_fPFjs8nD1|79wJ*|eGD_*O4M9;#2-di?yc%s^iC#pJ}<^TATy?5dL zsww;PeudCAcZP6jY=}2R1+G`lO+@)ERh~+n-9 z;&oz95WdDVQ9&PQ)rDwDqN^T?_2Yi^1x>1~0ws$H#+zf(&|2SJYSj$rnU*B&Y(Y9S zrjU(tqE_XwJ+i)WcZayd*JLdK*R4fMMwL-W&pF3g%+evoG{t!qAOSMksMY~9`yZ3V zI^DX(NTo7W{$(tAK!y+)&KI)-w3u7A!PT7t=5RyMSQtfderNR+?3I*&#RvCtU)@ zG9WOX0YNYgXc(@+NfXt`2Pd`x`8?i2F%Db9nh58B24NilM60KIKfD9-n>q;Y0S&=E z0LIsYPO#!103^2&5>^ZZfT9T{Va7o~_JI*8F$4>Npm+%6#~UzQ1Oj0rkP{z)U>FGm z!%0AU55P+xZ_EUO&+|a+gth4!SK*DHun(w>t$<=EtQ33j6+j$?m8>0O0aGWyNE}NQ zJNq??vX@G~R^>aYIjf(YEB)Ni<=O--C61P+39w2MCs*4CU0;s?Lq4r9qRowTL9a>H zzJ-)yF0Yk&>*8+cH&d3a>XL5hc>hZ%S{oUBE@I~!pO`Scu3K2ubbSZwtaQDmjiW|q zHo{FS+_c&y+_ZY>hMQKnX@#3sxM_u(R)4p`P0LWiO>6IOTE>q}FuCRp^9g{A6Z+Q0 z5hyFLwuc zxsC1ZM$Bz|0L9ETsChVOZv9CoHE6loT4DL{9XdHxD2*P?;*zwIdMah7W)neLq??;h z<2hJII_aT#Ls~*lqrR#HNv*yztwJtY-yL*nq+2IBFEnDs@!FnK!*(`+G1^RdqXgZ8 z$n~iE@zbMhKx{ zC?SM~aTpu5P$*i8FF5k&4z>Uq&`eN!>)YwXUzJFY$FL zVNt(t)A|C4#k!qvF9`R7a4#^Fa4#?pBisuBlN9a+;a;#&!o48e3m(zEU?`ek^Q8rX zC$K)YJd)Tt4-GI-Klf2G94qjqelk>lTcZS;zi;6KTCM6eYoGy9i`HF%0-AnmSr(Pk z8!6v=Hb*$2SP*@kYfl#XSr9Hz)QJJ0`CoM_ZoX`V6{zG}9fj-7+1mgV2ta}E><6I0 z9RLNIE$@a1G*zMCfR>cl*0=^|dNfBfb)-^JVyLl3Mg61MoKK4?s2CgElkfg=x^A=D z6cOW`h@9!bES1<$K2=8DsNZ4;>hYbbMQgr-C`1Oh8RBap`9UXo1>XrKcqobql|G#+k@|zdm{Ncr`ufBfy%~wZXy*&EE(Ti8# zeDl>G(9u*Ku$4kc%>QsSx~|z+WR+$F9F(nn^7glWKORRt7|AbEX1Z7-&dta zpa0lU-B9S)KWu6At)6UX^l6(KT&2fJz8s;`f4S~!ZLNKC_7>4J*LDNk==bPC&q`}_ zZE@VA1jQ_BW}C9-)jywKzdZa?TXZ}x>py4LgkMu~^Zd)8=?6`}Gy6f)zXMHwy{p}- zJ~qezNBGQB6+zPR!u;iNT~Q^?6BP_JuHsL&#ALbi=5$eTqvO0X#J4`stEx%nST6Ng zDi%POWL_@sobemX<9;QX%3db$l5{wZ^;n*Nxz&RGc9R<>aBC8)39JNqwf__#A+Cq1 zc1FQD$)uVK!=<6J#PBAe;Lm3t4$+CMr60|rq=*T^C?QzgQ$&Kr5Fl}-Km3`y5 zkV_Z;d{44>nZr7?vCos_H-ck zrI!<&q>$M-D=RjDmr{OkCN)r}IX2fZOM2sxpeA%`j=5A?urhVFpN1={Du0cN9`g(l z94%F(Pty*S0+k%Mnf|8KLC7I`yN-OTr+45yrRt(?Y-?{! z-e$h^M@@zw#_8{RgcU1piS4$)GLvoZ+tw_pNV?WJ>W^rPn$$L+Ff(=jBDrCNYVzmA z=!YixP*vYBmgS0W3Ks>cL(i z&Z_f`{!TRXs@CPI=>0tuFB?wLP9&E&x*}QJuUz{{rFw+V|Cr+2sxOx;UR|!_rb>;R z!aBvbRTAItSiJhKBmvoXAGbg2sB%@_87;_q{d&|Sv3R9twKj*=I?_{`AvK ziQGnn#HMFkZDCc7D$36gm9^hhXF)VLNNvmJ{n*6$O0h=^q98f1UVMd~R)a_HGD+nM zT`-0|V7?#+NLx}xYp)xq9-*fht0(HfAPQQ^lfKzb--7_rsni1NF8QzU#&-jjxSoz` znd^&FHS_)JTzxU&LhBW*VsQ6e)9O;K@z+O3=;=v)bJn*&^p11J*9(kjCM3b}-Yhgp z2kqqT&pOL2mz)TdR(!oyhJmWpT_-uKH*6i~S_>}aFNtC*uIdTY-k1iODM=Y$wGPe~ zN3Z_<>;Lf$divrc-SK1&*)=`iO*Wks-vQ>+e95|}`796A)f)N(Q|&sRbY@YJYdw6F zH$~H!6|R>pXoM3KvGkH=jjeHBWJ(9FBHXVLlE**3MNj|xe>bg6d0hN-hMs=Yd61+TQer`^(1bh^e^xkD$<1M^aG3 zNVZdhuJf60jmbI?k2L{~$py02k3c4F+(`%~gd)nLg39kW!B>5@fbKJYr*d0<=^xN# z^^4;sXlG)To#d2o$_!J5v(-;MNg(&SX*{EuoH0JrqcUVhQfZyw z%0Wvlpv^&5byT~4aJpC!Ug=z%=DBfKsc{TS4?M?7Qr_#|R{XRVO!0oBQ}qPJ^?$De z1-BO5bV0A!K&hNJm^P0WlCLULKPQoLOna&$mei9yHG5RetoCZI&o(+W-CURIZF_RD zK!ULhVNqRkX;%Memg|!)flXAiGzTQ){qjv!ucKd9e;Q-0tBDZNT#`i1sG>?YCYL0w ztO0$JUD*VlRhfzwztg-STJ~YQl35Y+)-%bidiILnuuPInUaWGE!uhV}vySpntDljs zU^&~B%3k&#SC4rW%~?sbwvAV(2hAdumNQseNGR=?DJzWg%;wq>pcL@xmalB1%Hd1r5mOI34X3-UPA`sLzOueAm;|A9qc`m2Qpnad zySGWjI%N~1c0AGkbdpu~%8EMYBr1=nCBCMNqau?uL0F=M;NB-14LVTMh*;L-ql}g~ zTWIe9jOK+bcmwG1RT*(1*;^t>1bMDGZYtLq28lp7OQN!4N`?}mfhK=%Z^6GC)?e?; zXNbXq_MREuTpsa~9tP(~B| z455$r1*_DnOMuF=hNYsyUl>i_fpb<#?${=4C@PLkT5CJ%`m9_^gz(%miXo z7YE%siJR2qbM*bi#VM*Bav~NR5XW8uM-98|sQ(p91=j&E)c>P`@U(UNpU*xtzy&?; zYO0T@v4)lBU|JH6l{|8-TPW6LGD{)hO+?SI{GeNlVuBHH(&79VN%Ae0Z z46t#oe7JysTy6@~*4DVvpjM#~zNM}?~*;Hkj=f-~s-X3ZOxSB#p+7~dF--a|1} zPvNCRR!3`X{kF$}kvB|*46g24jXStnE~T-U7X>(1j)$V1JriwjxSpvSGq@ZJ@jVmL zrf_VH@U-*Mw%XC4b5L2!GQ3LNpkf>9Q{+N&g43QUusxG~w_2ZR-LWYZf)~!|GV3gA zz8E)}YOHo^1hicvnEe`Utx0)RY%`p?J1U0-zZq0|M4d-+^8nBh7)sJ+5(8cZPzz!9 zzEL`X+<3P2VKWa)cGI|_RUBrMP91noV+*lxqS+E%mkP0FtO1LpHctw%JgMFUJ>qPA z`M&*Ohdt^S#%BsmM3aOH60s~6u54;_EtXZci0Gp8s+^q>%UA1*gPv0d;29VSrFdaHiT&%^{kmB&JxBWQFitTDFlc`c}uOB-<#$lG8iL7%C85WQ;rB?h#V2 zsAuGwa6wKvyIrmQ`8wubTsgE6oVt^Q)nENjrH+asTCUCO&-55{)HglxrL1&NY%NP` z-a4?cqqGNX+@S%HMS$pA`koBj)XE99dxGlk%S9~27ShonJ&$2fh z+nLy&I1}5pZQHgr;f|e5Y}=XGwr!hFe&^hC-{*bq{i8p7?b^N8?p6J*THRH(ssw1* z=;X^>Q_LQ6gz>WGJ$_gJJ_3)Z7o4@e>1c}O{mQrXP;Iu}+^s?VX?Px~nWv~lFLnUw zlaMFTTii!MV8x-vXA)tjxOhcRCp$LvsJdTaOWfsRtH8Zaxaf zBC}(UjbCrTr(9B`R4rGyS>>^VcXqVaNzbySiG|}Tz~xNBb>Y>wxAe$kj5gemao&=M zBYCTaM-WI-?L8iNiLF2Wq#Og4$^Y`xRk_+_z>JwGj1;Z%PA}(7{%n@UIorF8Leuab zq_Y4OP&`xU1Y3;9qfstzo=LQU3|!Afqh{MgYEu_Pi|#HP&BB`5I-^kjc+{#*E_||r zjZv&g)V8F{HN;aa_!V+2jwt6~sc|q_p&-?6kf*Ru@0@ zvRHjy4t12dx=RgX8mCB)f>{zMUwr`Q`SsZR@ge8a`FcFF4cqQD?Pup>XkKx3j4qGY z!|qnjg778wvGGpA=s2)PpI>*?s;7S$RFq$Ttc0TOentw|hkMJ7ds&4fx{A-akN``% zz|^x!wm#IZ*wQ&v&xD%cg}3?)?tQY7VuklRl@1t$=<0I`27gOv3+9GOYTZf2g(1#V zZ|7d+?Hg9CF0qtH!ESDfFk@1{A9C#nF%53VifKo;j;T|QC05KWi7W2~uCoWIXxGfk zsHgh*)kWprBxZe$jJfDRRhEINGV?pCN$;jv_l{e>(TVJ7@sIY?ecka7EDa=a{tS9A zReqoLn>LM45k|b3b%yW(>D=rb*=23>fQDP`2;BTE^8@rG|{{W9ljl==IerIzJq z?faIevWl59Q_wc;><`UuoSpl>9%gxMqM9a9fQq)CE4ZH-R*^d555AYIoWjo(3wjw6 z_>Nf-*RA02^(-8AF+9J1sgk7qneQ7YdHZtU&|6~9`;}baA|jx`LE;qhtG=6vlDKk} zYN@AkUmdu09>0y4`ra)q{4dm3CpY*f{?6aY|*V?&{kL37gBS%D7 zFistuhsCVbtA3eHbjL3HiOCu6v3y|mo}&u$9x(tML+jpTkhLT1ZV)>FqyRV71( zEoJ3tv0NgFPPD{qQaXf3I`N^@L94}U!^NtBAVRy&eOX#%OVCtO&1V?(0ks%5-6t1h z-^%EvBLh~RM|oGuXppq1t9%pJfjAYSXMLJ9h9S0mYX;-%b--5!Qx?3~HUE2u` zUz3fh&P{++W9;*zJFoycft}w%bfNIvC~53czH_DxrRtP2a!fM0ioJIO3GPt0eiul& z|Io#2r>5P@9rlBH9al5n^Qdgxvj>{KCSOzqN0}d2hVm;Q4ZazSE)%`upK|tT^{IZx(S=e^8OW#` znJqUQc94rLO|`TW&PU)f2l%?!=Jj+xW8!=#&>u_tJK8?RdgV=1m(pu~(r@lg19g#I zPQl5Iic5(sZXbrS*zMk<~m`@?_>VUv3vJ@AIX6~#j@ z*7pm2GKUSXx$%8=8_C9*lmaOGIo|4SoEH&9`DmiPK|>ZN!>R@$OUl?yi=_S|@7YF{oEI#@PKhxR z+)Bx(;D3=>-!h#ceRg`f<2L}~oDcT|-AUYL+L8ThPS|)Uv7V;VQL&i0P@x^T5sf(c z5ISD?hFo!#egeJ7H#^6VKeInEg{dQZcy#iu0$N-Uyzfus37@&!L5AWFfVYX%ZIheY znHu6l>nLS)?Tg?`w0W?vhgJnW^F!V*xM%=I3UstDVJ^|4%NZN%N3AD_GI9P00r~V( zF<)kS6PpkRePO#WfgBw#F%4Nv6_x%{<_&lR*OX|`U}5$<`_A?Q*O~XUM#pQh<-z$7 zy77VKiejby9-BpaO&enH(mPSwqr^-@*h}JX;jG1jMVvpDnJQehb(|pca8kI?@#{Kl z)=ay+if+Yez8=1xz|P!OU~&%CaTz!2lU!W+N6`h3H1qO>1C=Vd4;8^bx)vn zn8)^b2VXjCAFW1UvR0MdnsNfLbeVy0jl?Q7<7RowG2O(bRt;-LX$%{JVttrv#PQNQ z)#!1|_H*b;21eQ}VQmHKHSR!^I|HMDbQ@5JRm|UAB@3h!B~LQzM^h@d(iO-yW7HRe zi*XQn3)1k(D89Z+eV1Qn#zDfU)bb(6e3trxs(kBl;&^tF3I>Vz%ElR}YFp`cZHIQw zV3qR%HTth$x>V@5H)JzvXH|MAmA3%YkkCPB3U=KE9UD~{9@IK;ioW@&;*=K0e4V#x z%A8HMOv%0lA)A8^WA{kBuZpG_!k?@&q6A9-B&i=Peno#E!mvZDQCOSpMgMpXEmje$ z99w18b)1@#NmfA*MFg0$7&JIeF8Tbn(xYJ+0u)j4s2uPr75na_Vk=yT3mq|a?gkFq z8p}{w$~`BK6ex#8Gf*-kP%UgG`^`JeNxx4oOEL33Id#3=?l;_YYrzgC%!OLCJ5G!L zu;6XgX6ZVj%8Q_(U&FEpVwIDnh%npKQiX-Lmg z>mq%Gu1lB3QIv-?X@_pq89H?tTf36x>-!s@W#elWC1c9cl&c9Qu8IevB`_t{TdW1L z;-oKqpAH~NhQ>xUpGFmdP|LoJ*=HoVnPp94`?8{Zey#P+2<$9fO*)T0#x1TIh^^4v$m z<6`r^m*rBow#wrI8-?A}sD$#HSI+yK6HWg>*d3dsa|e-6ZAIIkbLYFDWMS$EO0(W% z3Kgl-r~7sbnmR^R~l2&MuJ3dYZa+qn({i646QVCVPy?ZKZW+ zUqS`e>l3*YE14=x@)My5^sO+@Jx%-lBE+ViE@lU}lgekT zOr+bol)}IeMM)Kgh< z%lb}6MO2?EGGfVlr|o24NK z&vFemZ_v{kxkNeS!?qLD2d2rN)aMeE$yrltCUjnr+1L@r5`E6U!nN^Td6jUOEiu;@ zD{lmcD(5VRs(*Lbf$pP}^;NDW!x!SV^D)IS&3OMnK-2FYN#)MQ$s%ex+#V`xvw7!Z zjEKQQ_E`h9YpBz+7u-|C-d{#f#b$hr8o5%wMSX5@_F3w2uJpo9>nVDAs1(TB>tcIA z2Wg%TSc*ZFa4#}s(Sj)Y5w$tqfk|s#j<8y!$pID_@z^64BQA&T%&;)e*{~XE zE^h@{*0}J_BirdZ+spG~z;#yOD$kVbPW}=t3OTdu0VYnp9n(4 z#;tC1Kl7*gdd0AE@@(3uAQ{|?9qai<841ovF%D?sWzpLQs;$-HkGIw5 zauBx0cNNr46^{o)*uKXMLr+n^jRkplDeXNI;8k}@*(1a~f_ltjDD8TmPg6F{AbuDf zSm%KV)m!ee)JY@%LEUGe39Ar2k2UWg$Nk%9eVpF-TL#{YCc`(BPR(jxeQ|u)$*3vk zRiX58L~Gh=Hn87it`L{!yFhWdGS6U!i`9-r(=?ET?f^u8{JgFui)Yn2LuV0HmJ$mi z=*}1#Cs}6QGg21Qfn@P}cM$_1uu=FGk>@Gx5TR+Q|)v(C9 zcuycc1st-q)?00HO?wX?$gb00^e5?|cEF~VxcoSM>3-^*afona0@#5k@v=4%CKs$7 zU=gl!c>(ui6SKo=ymX1sVhMp@pn7F0z zd_K0dSC793xgzGzjRb7IBN_(;KVkDUVHknM0Y|@j*NGDOt0c+JSrYd>o!FlB%uB3oZ9B%XM>l z8X%3)+3xn3=M@=4KUAq$6{1u1wbDeoviVUGx#8uxvH}FtyFANg|8QB;WG9ubn#VNry-W+| zpaEYZLM<~R?o${KNBC5j{5nO#gC)frOZU=D%B4qT3x4YQZOuIZJ>r-bCR0C94>0-_ zi%Q)8N?76;a8i-l-Z~`Sb?c`L02FZ00Nhj>^LdKdwHBmiR#iErVo%aU>!DaQWOYJG z(-kBf903x2)iRXLm(OV11#88&1x_YXZN18;Ku?Q%G3%DnC<76@R;)SH<3PwNxbdex z{)@B<0mPZYB8CxrDvXct(G7&_sk|nH^mXKWm-P=t?RgO+rd_&1!gGoJKcp0G3xAX2 zb7a^x?eD{c07pmxG#*Uz0P|(swVbQ!+Ha+*fhf>|=@$S!S_F)92J)q;F^|tZ%EQ2p z#>1p1-}jnf$)t*_!~_nPGL)mUGTPQssFDsy=L!!plcj>a8j;;d1`C}YsgOV1uC7Ee z&ZmM41884hX zV@0j<9--nBk<^RX=T!y7y=2qWD($MFu@Kl6>zGHfgbLnm<_^1U3e zY;1nTjrw*eY&EPD$*(MFRn7EqaZTomGJDyN;x$83c^Y9c6Szq3RjLA2rEY=lJ$%+= zt@?y25<5hZ*?yEJcFRQtJ1;jZYLJjB5fXf)xTL$`H3s(c?KbFkP^S-6&tT}4d<`cA z?iIXF-R>(R`s}j2J~UILQ$_d@X*2u1|INbqp!wq7tu<$=j=KGeCYvC!%FfBj`FglO z{qQ9wCYJH_^`J(t_whe`>($-geZGC`q?KHfM5Kp)?ARNNhuiq#9*h|i+1r__*3Z~G znE)*b#(~5zwJ$nJEVqx{2-9=&kw8xtFD*%&4|g3q#zxvY&N_ic%ChTW=$(4-5d^7= z%eq_%=@w#LHXk47=ZT#$$8!5Wyxl*m8BmH}tP;^A&nE08b(@7dq8w+S_NXeUzuoo; zj$tX$Nebyj`Vl&uzc{vVKfzp=P(eMthIPb5^zoeov%#dj^+ z?p1QA#>grD;9m_=D#h@Y%lZpBSJA-BD6WN@ECoyTOZ1~-eRSs0TH2N00-6iUOUv~` zQGIS^1um4d%PK~1%7-=YorRBdO^gIgI-#W$bc~g&vdce&>0w7&+^dKm`7oS+{pHqF zlpxlyzr{UrE^5mzjdo8R^xI!(+8EBXWdD9f)Ku`dQaj5EeptBtwI**HVR^oM2U(CQ zA6U-xxqw;n{<$b6FN-;Gcp4wpbSX~y+X)S0<@lN+QVNZ)v6WS-NKq_VEkY`=%-bgH zm{iElUJ}5j9+ySW&oO7HDobMxy(;KZf150-EXDoT(}lFxL-x;PS470m1#%N;5>0Gp z-eXH2)96NoKX0KXJW&1cd*f}E#q?PO+iaIS(cJBmb|g)PlcLb5XFpzLurpPEY9ySL z;OI9kgmPlKCOJ9)9kWdAK77hla>%ch{Q4=}H2cGlZYbCP@LtV!eH~;L3e!mt znI8DbxdJzAeCc+1znmTquw^`TSI72!T*;35>U@2IwSDdc+o$cq(L*f_1+hzOh>}s8 z>>2d48|*R|o*dHFbSoa=V;V@HN3k7^z%{yxc+Bf-MIKG|XZ83aQ*=(;3*gETHl(iM4C}*QdGxtt1 zrY-AF_(iXt(H18&P}Hp~TDWvf{q|UDIVZi89Z)9J`RS~X9fDXkjz4|2Cq%+b1kNC4~7^VfQ zD2-}^zFNr}4BN^bAwizCgAib)g2Fu@xXy4n?Y1rWJepYP&HsgTjJ_ukcfh%bnOO2x z1=4Cl=rY$r{OAwhAJME@&>1s*hVUj zo`c*Auv+2_pe#xqD`dfh35-<(tVKYP30jdW;r&2%wZkAFlHdE{+r?E}NnsBh!_w*K z52LH8w-pAxuCHE$+J~!vRkl0MhTxz3(VxJPf*F!dufr+T0>;e4twm8YABXRN zA;34wrM5d~I*wKqWroil&V+_0I2`VDZ)pR52ne>5dxFjjDf$8&?hedb_CS*#qGkHQ4x%^+$P z@Y=eiQz5oCKB)k>&? zh}7J6@Q}#VrI`{|!?}q{OYP5)rCdhspSM#gFyM#2Ww&Fa;Ix) z0QDmNiS8498E2IQ>gAH$E&>X)O9Bc+Bz#70P;f`WpOJS@ghlMbA-m3|LJWNRKJ^tM z&=Z^gns62vY)cOWir0Ue!W;}dt9VU)+M^8R{^FZYLR$!g?$2fh1SPkGj{JUq0I zMBUwg<7dE=vIkNJ2LI6<8`At75GQ0jLhjus3jYzXGp_*2&tvY5!N5tSq+C15O)tz> zSD>uFe6Vl)NszUOfp7>NPyELAKv|G~BTLU~4GshXCX1swcpZA2M|6fKApH&3B)m`H zgh%mo(?^Z}@GqQ4vfJAOn_5-+3^A-(#MMSl4j5}IL-m1buSq*!J)46VH;CKsJI1Dg zp-1OC)?KZFi|IUY{4@xu*2GeZS0thvrhTS6s(h&}&jO_2_jeNThTad+jzTCsDcG4= zngXG9I0#17v2%uFp=~|hnnATL?4mT7lPzkq7$Rl z&~*tKu~%y{wSJL@G$oCRe1v(8jQ!OnS>FR9QOw8#A;vezJikVPw>}yL_XC&AUdjI6 zDrx%|1NTF8S`_%6^-mrUH%xAGG>W@i5@fGe?~L8Q0Ezp-Ul5e9=La3*`%MZIm7n%# zi~dF>mB7|FqZ#fmwvQpdXwE@Z@cVh87}>8kLF0RSXXr6irA=btsS!tKVnu1ZQtJGs zCE`@cSdPeWB&i2r8PRHkP1Oz}*_&t*t(1Jxwu~tdjxmNu!E}96RVa`8qXCdjt)LVG zWP7(fK=v?X>?`UAb>j5JyG_tMKcyrI%vs^*F+%Ntku&;+s8QW^cffnDL5~onMovtK zbPSEd)7F&`*ulMkI&G74Lx4x~XZk>nUH(7hE&L04R^Q080_u$U2YJ)sp@GP}+(0&o zJzizpP@Ay1OD8x`rxrk+f#Q(UR({aAOF*7kxyV19vu%w8j!Gq`n?bL5;C#6Jb$4&*RR5;I4 z8WeBHTVVfYC3a5Uh$Fg)h!xmb8xTyxE=z#v`wkfS9fvX^=u7}QN?*(EVP$7M=^lAt zCCv0PLCv4foM0@_QfMj--X%R8D?Q5*%|Ivy?+g;8*JBEep~COMjIpqd!4Upm529ZB zo_~1M?XL>Gbn;CPWQDQYC&7lfO5BO|{x4Oodkve~6_A?^(G7(3-Dg@aP>=tc^uI9a z8NBEJ70+u}s8BSe6{EkSM`sxRt%L*`=eeSF#4bcDyoSDL^%>_WDLs)fmRow>?+gP- z#jYx;K$xB~BqQu&S5$R1sF!#>nTxA#aEJXIF4!0WOekoAbw5zXaE>G=?s(;zu6Oxwcf5(>9ob{Gv4q!n8|r9`r~lir3wWo3ZQzhNQ(@(mM0 zP<^-mhKc^tKP>36EeGqd1v>u+CVLCt3JO%vy<_!13JR$G-wJ9OJRZS+;}Zp_9k_<; ze^XHBeg7{9fX*TQOFQ;>+VlHz01e2{b4y|IAqth2G{AgI@p9<5G#z;{vSB z_C0N(hsf~YMtTg)cK?C)_P4Y7A80QHh(p@z_(5;C0aa!EFSF){Il#2E=QI*rqLUh zNRtNAbq4OUVWQ$J;;Yq1QfkGuE2jGczqh-TMHs)PuU9>U(=U^JgjM~jAawIA@Wz3W z!1Yz^AZQ*lQEz@TZLxX-h z=n?nQlH=}i(|QW_;%+3mpJTctnM#h--`l4Y_KsIK2l17=GYq*ZbM$UeI~XDj%`z15 z*kLWk;xx}ePXJ1U5lvDfo*7mG%(Tvgna84iGHLJ>Iw==T@$LU@XDR-hBKN~q%SYF- zJdS-rFTX+@K#{b}&rYOW#QqnyZ(xVB;ORdb}*hXNaf6fMZ!iko?_P~_3$`ZNbqcb34|Tr1UerNr~|TPC1_wBQuhSo zTJAn9-sCunqm)`Tb6D0W0zc0+)sSWY1ruW^|CgyJL-u{q_H5-!t4`_{PJy8pEa!k! zC(q(QMRtRF#C;jB=!^y0kZE4{k!00@=<6 z2x3Sb!2)rY@aK#!>k*EzS!ES3T6$tmp79Q!tv9i{6c3%^F!U;wi64;?#T&l|+AraQ z+05m-s!PUo3B0nBmEfVWpL%O`3~zTrW_u`Hamw~y z)TzrPv#xbC1%JAPc1E07^+`PqYo+x6dl9(Dq;5HnOiKOsG3t z@00Z{;fe-7PkZNEbo#6y3w)6TxXzT21lGvHbFWtosvc`}xoG&Bgu0IjU-;UlezYHl zX5r-Lr*X)FP74Z>@`lH0m4UVp40~N$0ZKVCxLqanDcV=xjuOjx0rMP2Ld_vL!t0yD z23I}MA)TNXTSv8SFt)=>Hb>_oeRMMMZ|hzl0B_t>9fE9UTwm~8Nml&27+YjNAPuph zv`3YN6K5;^?f~e&J8;l)Kk!q%e?RA&IlAv&_26ms6L7fklO^k+*s&7?xDOkp8FcIk zAWbsa`v%-ZX2|t$GbZwND0&JFAxa!vV)4yG7n-^xl1D+2!8e;Y<2mH1}cCQB>72*@qNSvO7h; zUha?Q=8C`VL7(?)-FOuUT{fRSbFXgeuTOOkR}Bw#GoS73&yU-BxOzaaeBn=?N?p#4|LfM{oNMs^?L-|@@G)#u`dL40~fxisB+p0l*>9&bHdUFab z5@SOt>TwATY_(k`lz$440M~oZZTmz5F?*?~Gk+y*vHc7L<)ub%K7$N`r`_C65|M1V zYcBKoLevjM0Oup53u2;Ej&fP0%w@UzAG70|5)l@MDY6S>sK4|u3k&yDKnNGL>5-77 zlseMNAL+RG>&^nAL7j>@Vj;J8w#P}Y#7=n3VlWNy5n&$=Ujiy7hq<+n`$BBnOT3@B zwh@#}t(9)Hr50?Gu)IA_d97CNjr>#-)v!LcuFOp`_7F_L`9FW-%vn+8#_X_beSl$- z%vO(5a5+`3oZ;bg|&ztrq^(VoqQhH1l+>j^7WVO|aClL~lQuP;)c# zd(7^F4ZBlKvfo6of=FCJDmHC`Yyg?=wkbO%<#f;g&Y%bDozD%0`!#v<#6jWY$u&|b zEY(mW7|LiJLcW~auobiTxykTA^=p{ihb4joMINWS0N@7e*G z*gH%cp`E$ybje9WbWw+RgVP(;p2+z1`z>k7tSnjDe;P?Qi2m(`r`Ms{#isq7nRs!M z2o=a^wglaK2St@OUrWVhBk0KuMT80x8?1wz&J2k(eMn^f3;Wau8qa44bq3Irx{+^o z4ODZGDMxl zSK>IWf>Ka?d$cDr&_sS96J72EgInx85uXsee0H?MlR?W_6d8hkh3tiAB5dE-=|&$h z!(Vsrbsl6Atp!}}2RnL%63>5UVuxqucCm$Q0fF5>Jn-e^$O02o0JOytNryU2aU{?f zA_R*_AGV0^TRGnxI(wHRAt{FmjAz(!FB=N2k|~RWKeiB4lR*A$W3wX1Sg*OXj=bBX zXYc(5ZwmBd90=zj5KF(lQXis3k^xkiEETwE6tv3}jEP@wtrxCFgE|%X)e4fS=g0t} zWTQkB+)ct<@*@88!w3k}eJ!k>=h;(E=ULR6wdM#J*#L{+o{_V>1jtdjYV-RoA+0@V z(3J;viRB5(;-znkz^$w>y92plkjIWN`%nsV9^GRg{y6)l7A%3bD+|GXNpVB?YTz>>`Z}W1fS-ly;pGP0oT<&G=6+&e;JRgK974v}d8FzuJ*eFM~y>t~1EZPCPCj z*?^|5SuMnu5nFyKF^SCMOjpK||CH0D-5@_dC5=q!*GBhnPlKjsy71gFF|Dt>W>iZ0 zcdJ*yuQ_1r7{71C(=}za3Q0-(T-`A_ymL=OW-JobDtqHC;QgXxvU0aYseE`55AK0A zgl#+7pTu|E13{8Fd0u2~u}c0y=^-Ua=H4v7sNT2}qXx6SiAuypggNFiMVsV`7cEPl z$Ov=gnl)P&F_J8yv_~@pdsIHGQ~j~Zi9mGN)E2($_+4egyt91*&vj~~r9f=D-sq_kkIgM@U9yiU^Zu}?@!o0DU3k;vnUToOxi27=hV?M$*sNVK zflKx$x{sHKea{ELl0)nX(5ZK8@Y-ZVP*%zV7BACK*xj3u<|btNWmf)CFnG&P!xptdN0XgXO-6A|?6fI~fi40TrpW|dDq>m`dfHH2` zq<)R>e>ql#kBMv3wGUpmre+sZCHr@?O@cf(N5dt0TSbV8%V-QFG4{LIhI;W}7Yvm~ zJM<({8fg0-&G!cb_RmycTzE(({;+L)%DrB=Z^Ho=VJa}|sIM+lAXaYmg+9b`1=={! zM`IAy_8kN0_i0)t-x4HP6j>9s7XU(}B;xmd!{d$L1lEnX(mp?+@5{;?5-Ejr?&|1X znG7o!bq8;P=xj)W&O+vB=ck zIGoRo$P@u;Q)=-VPj;RkRMSLpa+=iguF#iIpqihdqlPv8DBO(or01u1(2Fa*S-AaV zQzN+4l~Q^ZGHwPviL1{*QK2yn`9JIBbJzj65MXtW#XfHiI$;9pHFs*W8?k>J@0*{~ zzChbFMkrcvx4bow&5MR9=+IrHBl!1!z31U{RR&GE6~5C)93@hA2nL2+f2JpJ=OJf1 zTd5-{xw6*h6?m&IdNv1dPztz>bb?O9was%bug7@8j5*Se8NS4$O4RxKwA~1J-Q1dM zrC7IWuN`k>H|YEVvE^< z%FZCnOzkGzIG?{S?650o2sjZ7uLge3E}Ej}ut304t;MU5gy5-kdh$Q~Nui*?e+>fn z%Iz6v9Sp%JJK~B|48PNR8Ll|FH7}$@J(&vDFp2zQ6l;)pSvPHSmf?_aYGqtKU(ZYf zq&}vl0SQ(A&h1V>JQ$dj9=Jh=_6Y&&;=9~mf?$oEDWQMHD=M%LZl2^e7f_=0vc5 z#Dtq``%_c0y&3EVMsp{*D^ias4 z+4lVA+td|ubb^~)>Lgz^*{Q7BW)kR~mF*4V1g4wPgPsGf<*tlA=(abpOHrXnLlOc@ zB-oN!yf{DtIuwVCi(jhYg4GiPmDJgnONqA<$9U)tx9Q|7c0Vo_QvF-c7umdRxy`oo zXAdHGVa=8M!sW9*FrszxufR1ga5pk5QB&*1M-tek+-|GffTflJcMM~SOIq_mB6ZIA z1mrY1JhUEi)Mm^fj*k#~g8>r|(pydytAR#WZ_w2Aoc>cb)-IQc$j^N1}`_1Z00p~(KJv6E)Xo_^ACJa5HHMO z5G`+BYhY&AUJVe-ee5!%E2Y=^&L-`sCQWy3xNXsjn)6uGl{~o&LQpjAo@bn*9#K@i zpv16Wqi+aTR>8NnJyXy77Vg;k&bLfG&zKpxq2%-=b3iz-#@4!_g?W9>-$?+SZ}nTM zcFp)f5Kt`HZ;9Cyt_a;UB20d*V!2h@)w4^e2a`oi>9?K6={Rg5lRl~zViw8*kqHJn z;VL+}1MBqF@iv&4r0LdD8b`)jChLP=camcK2=y=Bx%icAOiuapqH_sL^YJ)vPrBq~ zIm5P)lVNzD3Y0><#gGAx@Qm{e0?^213r7qiXI(V}2H?n5!l)>2mEG`;7*L*}2m8p% z1Vy*QE;Rp{skk06iedT5WtKs-FB2*Mt`BgQaH zw@W0u(}a{$?34Sk=Zk#1Jp>UJ0&2eY{RV8@CMYe|rzMYlHn0$|@=dc!#n49(nOSL2 zIgpWabpT~vY2#h`E zT7~;E(ETvvqx%VfF`pTT6xHDmz4VV{yu@>b3M$p(k4l!v&8=on_6=xn8xRx?2rEQO zw&z^e&>E*IQfBL{48Ea#47ZTtIk1Wy`U|3yOdg=%Je;AiXU=g(=z>R_g{NZk&!vQ#6Eyp3CEs$0grw9{8d}gAuM58dFnZ&I3VnUCNSsA>y z8zZx$aMyA?QjA@5)_TYD0EpI0dLZe{2UPm_s6JuFncUC};~YxZmPNfrW5r!`( zD{8m>DLMBiQdfp;_o=>2!gZFq;iY$8hVfN3mra$To9Qv92&vwrScs^^cW6jG#Vn9^ zU}u%dV|hMx@82xjf%GS9FW_}bnbClrU~EmomcbLcG4t!OPU`YiQm@Lx-QKrw)7sVy zw-QyEiRK)vdLGOHI>VJrI$lE(ckDVwl^>!hhHRDSm)vlVtEriR-u>RQ{sKob7~+qA zbaH31Aa>W$6Y*rMaI;BqamE^V+$##!Be2*}oaYA*?>+BJIabmVYg04PQ=rkt?xt?! z(^fC-X~>FGLY#ANFK;Zs?15EqIh~~j&dJ+*xp{e6uz~tsir-`J;^!!vb-0N( z%GNHq$%0DWf(b2Ofw>*8dXPWkEeNeB>Ylg^7s5?Y=HQY|mfN4iSBR@i{W-PV!Dg{g zM9uh-vN{LSP8kJ&veE}GHPYudmN5)K7Cx_Jo83_A!W_WUY4Gy2^A_3N*wuP$!>$~z zCpX7Fxa~38vHI}W(FT!qfpvF|5NU?Xhg{ttJs-GmI|DmCTW>t@1?Bm1ZsA@}uaZtM zD(Ad%d6Bswk;23-?#VAtn4lvzpkp>qJcwhIYC8Y+LXc-fJ)89#;|CaiV2x9#pSN5) zX2%PJ4MN~y;yKGD<=Li@3YM@vy+XvoTiDl$edEWZDp z@{|pbgIX0RaGSQ;hT(V3B*DF4M$mA|zu8AX)|9v*B)USm1CRInIE(cPzVB$wGo{~Y zzl_OvLveijy&4${x!P-e^6A_vhb!14#A-5p(`a8VZkD?lkL2ek@#2 zRSFBk3~lMTanvgn_d^hcck(F2*kST@&(+#>p!Mi+SZ#pkYoccYrymZ@zA9R>(kcyU zcvhM*&#{9YJRE?`Br+iGZ{N`W;y{#QR~o*|5-<#u;;Wp%z4X|614hBQXf8@N0N~is zW3c?fr9LQI;2M$q6?_r9{N|Q7j+L@(E7Z2er7wS7&N$vxSp86Jsp3X=d(0yh>Hf#6L=3%Oo#`geL@JfnS%-fDlbUH)7%KssK3cP>+17GmR z@))qn6I(6y_>HN~yS6~iCTrIW&y6#KoX zn)uxK?S8*R@FYTUPgqqs9IL?u<5p?EtzSTSE=fLgWtN zNNFfpmlZ6^AHIJ0BXPD+ix67(^%Z<;=o;^w#V|)7DVGQ8kXe5KTEF6pX8B#NL$WUBH+e%0n~b_6i74crR%r3qa5ReNp%VpaEX(fb24TPm_0Uo+todcH5xV{S2wq-Li z%PdTM!3jA%%K>3qqlJ!%nD7TeWkw$R7AB4en9FfM8La$iA{wzruLHT`U8sK0EdM1!?x#$2B*VnY;7xj3J zSP_XQ1n!Y5S%eEHi5#_u3qKIxQ?E<5m-fHon0H9)+srnSf;))IognM~Vs4D=^ZPn8 zvBe=pmF7*uV=%2@VfFV5VX_Z2%jO{Tco#Bf1WH%2ziD&mbOTd@T%I(`eMsx5!|}0n zT=*q0ewsfEh|~Ozc1VAM|4#1Ln*z;2;vq<~&Lr@N0lfw*90NPUrqfh<$aO3hf8m@e zf^Q_Tdm{0~v~KM+!|J~7L`OCv^3MwWrPbH|4+4{&nEk-p3NA<^o ztU8Eq|5b~LNu)YChZIVm87u%VS@7on@4j+0Ad#Iv!eAy7+-3HQt|OMnRyKnk)zB6a zMJV^1wsye$C7a3~rT$tV>zR1iDC|$6G!HR77}^)h4%E;=0B} z&Yxf9rpK=#MJTiqtJ+EGvUPiN33^?eSMMvNOVXPmp+-hrF5!8Gey$`5n46>8#>jn& zyXG%5soWz~kH&*;CU5bk94?=|bSlTz3CEW_o(Z?GLcR=KJuBqeXbS)v-Z*Qbl=i$Y zSlLJ&mbe8PKihFMeLcNQta*);!9Rkz&8{b=wN#I?cwQ!@M$_8pK-wdu`wyqtRTDrtIJzgMb-8F0MIiOF#)mlRRpZ8g7Rw7zwl zzp|RYXxDtvA-C~T186zi`Bl!&F%{V%(`lpTcNjAJ2Y4U^gs2#vtW5U*#+>{>41x`s zg3a=`)Imz%F8|o6Ms_?ZzgyBV2_IxKc|u8Ne&9tLkDb!Ad{w@%RI+J{owAI;(vOS4 z(Jzd^(?3Jy?foFX2)X$Ivux=Lv_yS}^XuA7fj8GQp}tju&1OFX{3;R-uupnDK}#YJ ziOM?@sY{L)$64F~Mw~8!l>hDk{`&z7P&^Dx3wi%LHA?=Y6a1zDHsrag{yD@oOWy@x!C1+kVQ0q~Nx$SOi9gZP zG=2mDE_WX!b2UW>;o(4G76q{3UtZk{Z8hFNJB}1xeH2=`9we!9hJ>186kPl_aC{~r3Hi$i9QSX~m<3_Th42aoAXU0pM+vK)C{RZU_1=2rKng&GEp! zd@-sJSfQw)uUTef*W|;S3um`rVUkxqU2u$4&+KAF=ZmbBo88q}ftBky6dR`3OU*#H zpzR$1XG%TOS0H(9A0C-_yh}?qY90M2&reqFK9-b%WA}T+nQh$t zz7=mB9Q<{Kp&0o{LD{wB`WvlC9bT{X`1yBJ;?>b}BiZKAjLS^925@r28_ypEAtad? z^@B;3FeqsI5sVt>ao3<28~Z*Nkd#DLc5Km-`1?FRz-0t^)_J_w3ASt$zS&Acu}6mC z4h|vi96{aN1-&j7+a6CC_`TnK2JCI%RRQdM5LiC+w%b8hz+?n7P+yFBdPz{t-1T`vVz9k;iU#9% z9UTMtu;);dFk(#Lj}D|*XW;rySA?A?Zd${w@VE;X1fZ(W=>G7`%1GZy3aTR*IWVWRw?|uH0U33kYyNiW?&e2yh?$b7jh#vjaSbLU)`7 zG=*LPGbHIk$YJa*!ggV|EZ+tC&RyrP-Ri7!=Pe9w!i!V!Npu5w{*5NbxL`3d`$>Od zEJ44^4O;7ARMB28{GqLfFT@S&rVN`yaL=Bp=Ea(`Slrn4vrxX4_2PXGT8~USm0`9{ zyJgxo9s6|`(ZlTf5K_@}R@x8Y+6$ENLn|lsskwiQhM-5tKSm?cwR!{oTN@6%G{RPs*SSMyn=Y+Q%IzZPI=>l{2UhOozN|j~7u*qe)lB+ueDS$? z(Y_yK|B7VhrfAC>7|i>E7xT=!k$N|VPb>4fDZ`nwa5-J907CS_%_{deWNq1d+ax=^ zfJE=%1Edc0J`s8j#iuqi+dJ8DaMU)Z=UF_K#q+iDQuXes6F32NOyZ-Jq^y}8;Sdj) zTGWrI-ygfSkWgL7mn3%0p5evQ{2ofY7tDVFHgLN2bANFXMJHepLzhQ^x(gbGwFQGu zn;kR~gM1!^6e)l~kt%=zQ&3(8>$7wM4zyZZH26n*WG9foNAXJ%``=!&J_p|N{y>O@ z@De^TJRJaO%!SkI0&~VrC;~-Za`MjBtT;7LFPC{>&~^2w><0eHQxx&*eN!9pYArAk zR6lU7E>bMup=o&o;S_rzW)vGL%C4pjKgyTf60(pxZuzw8=bS_H_M?{b)SkHczB)pA z<~=1Vyor}f2NnWx3`9B0h#uOjwA%so;jDr`yU1Fs`Gne80bzo#$oGdl(1ABJK}{mi zYYxQ7w}=3!7`%(SW(whyde*z!R`d;x!2{dL< zT9rPj8@t$7#~Ww;zt9`IS}t9#kz&VsxmQib&&5!pI+BsCwf_z+qD&k4ydd$PtboA1 z%E3Bsu_qG*&;YOtf`D`Y^-=O8oeIrw*h^q}ejftZ8n;-e-xeg#p+}2JJyf$8-%_7 zXn!!B!nwV~m^qESiuo-E&n~E&St{E7JP2eZC6^C%=MvxG`*9e1SP@Gp*hOZaOM>(j zTSJk=eAo%Dt$-d}+6mRD+a!Kdh#7^1(vG64iBF61CWblz8vBeHtlF!z zY#q$O4*jf>L$%}Q_nKEiKa;l-^?X%~tZ*}_e zE3&&xjf69myW;xq#(^t~{ThEEN?Sj@aPzrHk`2v zPPDxchjA=0u}wWOTCm+GOqhz6nu_DK)pNDjuNZDqW+&bgFToi6TC-n+o@zOyd zI3tVPc<}1^Ko$>#MeO29PsAXrJ9}Qd;=vAQw^|7PU%sIj;{Rif=DO+&{L`l86#{7i zupn!OB^vqff((q4w%o7msV-lLY}JAj`~gaz7S1)syUVe+GIKu)nQdO*J#Xc$VUlR% zpG|koRt~;664IXGs74*YQ}2ZVE%*8$33gKO+FXY;&4^?KIB-Uhd`NJ?sR% z^7Fq~9(1HtX;GOvJuQ2$G?|b6)KJtVUGVKG_+t~pJwjbgm;GN{tlPb|1y9R z*)h?SIR1WVk#As?dOh{UDfj(2|JwqYa|TEY3@nlN{oLKxqm$eI6hq+qOh-Na^Hn1+ z?@M~^1B%Sa@v;=+tDEvy{noim<06|~Z!`LH)pLytX-Z3_&z-vxQ=yNX*${jITHw36 zEI;vNC)($1gXSjsjsVu4n?2!3PM-V*$2=TObwt6%bj`^|Va*QN!q+;D_wmspo}`2( zFaB2BVNUWSQ>0?V`ZDN7bSj7^Wd;5_lnJAaG(Pg@$HtG!*Op5=v%>6gx=M_D9HlN8@L*SMW%KYm1SNxU-G}KzjFn9 zt@gCPx}AabL_TZswo+zhU3psc>~(lNAjB)Q5EnOHfUQXiJ~Bns5CoRILo!|PX@JX< z9e>lMq5cABaQ~4Z#>Oy$q!#nAkil&LOhh+8O6kvVSpr7|$wRuaNSN{zo%pJe_8T+@ z5WI|hTg{7iZc&<1I!dNC4JVRxvN|MabQ#<_5KOjwJ#-vyXQcTK7P$CkY*24-uo!xa zt>jEP=!3$^fv_=CY8~%`+)no0JiF_Y!bzUd)dekPp_-7h6oNN$xwO!O#La<#G02I? zGxubd+?`?xhm6_=_oy&46{Xx(0$9zIoG#f8-U4n6}x&6h5T zH}P)%Yg=K-KIQZ>j-S4}97H9cZXX$H`<$|&!=3+sMngzdq|BuzpMY2>{$TpGcyp`= z);uo++YOk4dg37=CEp6t7c@jby9ytk!Htu&v1T*m{;~uZeaUfl6+>ynxf1n-GoxZn zz>xQGb{9f9*P%b?58ZBQ5+Fvj;aYg)bb;oZP@~n#F>^y1GvR?470;Ud@+E#o7!Ys z*9^11DmTdqlX!p<9-x)4MhDOz>(KPfDga32U(h-P*7E5em(g4Q2aKq?rJdFQ01>{} z6ih-R%f_PiYvHr|9HxelW3pMzoLG?`odnIf8FE(_gzR)c@kuduHh~?clJN;Gg}(w^ zVN9Y`u&>;TdM|mA>VF2*X+Li$SuD?oNFwHy3eZzmz&uD z$6_zsXf;!(*9V}o7P0WFJR1C;(*^Qxd9QlDydRf4>t~a%rwBQGK5yeCk@DAkS$H#c z2;HAo`tNnCOmpqn_&21Iu->)js%(?R!k^-q2?!)wBZs!@uSK1A*R6T@=On%5qVr=~ zW*;~u?uMFAx4fOb0CSRugBk~=()n|e#2~%r!BuM>{%)={Inj+ieSj<^?+MP1P|(Yjgq;*{$c)oU6x`(%kb34~O$`-xJfugvuBbmB#Ad z{xFBW0fPahesL1&sOcqUda0?Oj!E+BiB#(%ghgpvr2uh2UUX|f>^eF1F%9W&N$9_k zLDmgcIyLptYK~UbDGe(+p$*bT$^{6{%C^6)ydM0A`PxV=vUm92o4wTvUz&Ly-j)Zw zQ(Cr*X#)vcif;afBd_!F2Ij8SQ4`kpMU;&dL4t?0P*Se>$2(hej79RlrVN@y_sh_B{Irn(H!TLl=wA9Ay2jC z-jd!s$K}15G{L=R{Ci{SBfu>~Bhd6$H`Hh^*|mTKgeesv=88feA*ZA~AgNgjkU~p{ znObmB1|y{-#KhqFFC!7o)VjfBkgI8&^iruXR>ePvR)!Tk`g%`@R{1rTfRhH*FxFW;?t%0d9z$6`djO0M=1M!@0PypF z&*&KI|CiBWs{JpcgQ@NdXa|7NVX6f%IEKWJcvYJagtQqIOoiFze2# z*=R|P91=wgGp?!|N^7n9IHO0OX^b|K#s-JXaY6no1AZn+*cW=Rp*Ux!`H~=ssT)|w zUyCKoG?6hJZ}3BS>8k=PFjNgwA3Cl=Uwg5~v<{(9!Q`}7mAuqw2APx~QIYyOtyMR{ z^3ymB`2(l^)}wB4i^vO&4VbDF04>SZn4xDpPC9q4@9|HkOJaHmH$2Nbgi5;Qac_z* z;d|$=RI|&kFxv|mObfg}b3DVQeA>+>!yjcbfzM0VA_8#5l=acxK2r|Wpz6snf14wtn>!eJHB<4TDzx0b9r_l%95jfhT(FgUEE%=L6X*4tYO zE1k`NM{#AW9e=hiU$mg-A87B^WKlXgdnaeKl5ZEdBfLnI-QNB6r8}9%#VG{O6&dGU zw1X{N*d6}lLoEtjginb*DM=^hLD3?N{gBOW+c3*b3Wp>n37JS6{j2>Ad1${!IX(eo z6$mF+0mK*=)D2o(BFu*&f}ov$xM1R*K#r?^7?5W%Ey0PUx>VLu-&4bdDL+nPDOEJ_ z9?mr>8VeWQM2%_g1*du#_D~h|&lUHA3tn#Y{9nZv%owW91sAX7?T5gBGjCvAL~(NQ z$2XeIR}OL$r{-dep6)@ih16r9Rfna(_YNrr3G@C5L&H|dZu25p#=SvfTE=!%9W`h@PLqfl6ZhDg`~3`$s53&^$RZAxcm@D_cCW? zvJGP{(UiV(v31c@QiSaX?miiBiAba`kIZaMl9EjEC7R>Lmrn*;tuogOwa+19pgmx) zsTT{d$_WlLH>+tH_L?n`adP6rQiTq$JGB23ZGBITHI~a+e=zsv~1KsV<51^YZ z5;_vn7VAC2_zZzOAQb4}a-l_4s9qlZV6ImX4v@ny|g#V1!tUwVGKE#Et4%j|KV# zARq8I@Q{;e&L4A#u8D>BP0H60i7dLI+;1(V9jA6E_k>yDV#{FS`r8|9I66PYet$)b zxI4+N0KM#}IXlUo^wab|wAuMS(g?rVN4Xr3<#vX1d`Dg2+gj4|Mts9_@psIDJPD%mLf7}d zQT=3Q@r7SbAy0G?gW0r8P?ZQjoWeO+twpRF=g6(l!=@^2A=n7i;?9J%H3Rx)^%Fx1 z@@n(L<{#;2Ne@nF;T^7jQ4W1R?%-w*nA|RsqYMFC_b6wSMC=|;O5#HRnjC^j~ZQJaDYgE)!3_bawE#%qoP;qx@b(4`g>?+98zi`mRdfEK`* zYKrxFs|Rs2)x<-Hp-&)ZDyHdyzUj6R;6m-mN$Y%*XqfZG(&4g-gEO(Apur9r8Xp4{!FB_9~{DW#-5!aZ8S+B`2*z93e zNlHl&R7__Q)#Ey3iJU%2K*|vrFXe`&Ouwr!;VWQ^^hm&5^`tfKA&H~4_^z)qolq7s zARjOQ5IUQV*Q+#0d*i&ZgxSzjW2hDC&23H;1YE*5~0 z?GTD5YJ_I|$R=Wvlnj-jK_+<{;eSgywDbc1cQMKA|Mk=x4{<~r6H4lOI7Sgw(@K6>Z2 z4rsXsGnQLSiQfS;N+9Ph_4Nd0;CVeHICQh9P>8|lACt-1v*Vdb<;s#M` zdc=p8-TR=;k3=b0G8GNmOL^3A&~PN{V{eVdGgD%P8sPVj0M{OG3oOiQpAGu_N(qe^ zfs^Ib^NZx*zTE-weA}%CKW9j|I<#a=5UwSiBqd;onJ~pjf)HSvaB@EtjZbJ}66AXZ z(rJoJZ82HQHmZp7jx9yZoElh5AAsW;r|MCG`pYKcj^i1+XWHa7Czx;bYl)()cGY*+ zJ%=8c;^t(X(#uF>brGf@H@4d>oB|hP1{2QFm0XLOP*j6Bxa7pDN0ik?an7)KgK1BrF6z-96X?9 z^>3$cX8rXP;21v}@0Y{2XyPt;a)!;;a|zAY_hKet*#$Rw9O!rj?`9$VC$5Xzof}$i*z$j77ixW=!rGFej4v8q%~P8 zoDD{6tXim_4QggOiA$i4FQ;mp3dFczWe9RHSvj2zTKIVC9})GL4eBx|3?6lvD=z0U zmZOW)U2y3Zgp}#NG1wlXc2euk%U4T1iXQ_TPds?kMWrwHE`sZ6dt3uu^sZ=5wz{*+ z7B2PXPBEP+Xi=+I$V^z{485p{q&;~T4_=(wNudEvP+^a^6f25wEU0_kM*uK~T4S&U zm|;l2lGk?2#R5?~50i{bMp?#WP40q*EfRsnAR zA)#@Dyxm&9;EwEGcG#ynI^HPE))A}2z%1cr|)q;}(nZ{n>ugimeU-inq9+bMBR;Q?HvW6WIo_i?V4VgQWKS^W zLz-KoX}r1?nSMhAhP=+uN;E=uFNjpUcC?+5?z~@16}b!*n`GoqKQOw$tEvf|-r`zj zXqtQ_0%y9t^={OjTL^SiHAPfvW^9!pwMZ1J$HP;QG?H<#dK7MN`c!+2zR971|61sT zic$R@r)o)cQ>H1G^FFF^f0zgg;|F@W2F(_OkfNHe7d-ZF26KfyY7C_3FvM3z7qNAr z{H@pi$=%<{Hh7*c|GqO~j7eN=gfVU~eKl z<1%2q|5QqBNDXo&)XAp79(8ZhYdh$^@y_JWy=@ZEtpjQNs(D(8mC<6hkm{F}m5cza zLDzRwl9NKG%8j)2{&B;?)Vp;{FF2km8zQI7<}W02XRN zURD02hNZ>1GwR|UCCpO(u{_|j^ctN=ltCI=bBm8hXuHb|3AW%*fK3!edRSijnA4-_ zXhd?Xf|?=n$ok7Wxj1Ir$grxFQb{YVWubCrtys@dH+f~UUvINnk4eQc)BtP>KT}%N zVj-RvT5#xAXfqwJs*x}ix*C0D5?^L>_K_%JGf~t+Nruw99*C!rrx79|37ayLbUp>W zL$J#mOmi!Z0vq>~a2g=Ysh`y6{z!R+?Ko+jJf_ytG^B%B?Gz$|x!*N-pZ_OUb|4B3 z=Aem+KB}S2AZw_ZOi%s3i#sPC^G;#`1zq-!f#H*-Y<{uhn01#e(GNL8291X4g3vAj|XAPZMERxFUyUr}pMwGV6e? zf(9KYCCom9CE*hAKXa7WsZqQkGLA56>2uhz zr(!hmv}a~fQnL6^N9W(ZLxg~4_fF(=a0SK(eb>JPzlG`UB7Tw?jq;NOXPTC4)|g=V zy`8I@wGFy~Gb1-&E{=EVu&U7+8O^JVdrdNF*F|BdYgfJ5*i1T?KT<6^^iUaMCrs_o zdZG#p)jbOfbe?09H#*nZ7%zc$Ftw6tN#ZaT;$)yeut8$ia&7eHN&z=X+39Y*%JQ9; zR)|1+OHp`)uR7l!f>~ zne?Q#3@_{HAx^8cmY540|J(XejtwuU{}f)p?3%~>sqHVzQA7myH8IZXrTJEYIxEYj zkI}%BJ{WfabNl32A*F?Ez-Fyd>n+2I<)()@>iE3N(AefW?*kjItx1@$7##E2_`Zvy z5oU>?(_vt0n9WC^4aZ@Y`5LYMU^L%jByoM7Z;!a~<>Ex}4#pm2^GKcq&hhN2s}O^Z5^i&(o06f%sXWh@J5#7 zjDUcxjG8Uv<)p#R+1~RuZRhatMbLSmzg@n<6Wk$$iElRVWM^cvdz(% z#cVaQ*2=(%T+%?pl^^f{X?9$jiXVXh{enYE6Bd$p1#y%-Tcw9fHG&wf=EUJPb=Xic zDAj}*Jvfo+s+QyvXL=F2`Xq;i@7*63(<6)wPC z1acXbv))8VT@59;sTANM0lnt$*b%$I$!f0WvTY!HoxuF~XK7uW+0@)G7SMuBU68NPc=0R>PM9su$`|^)KXmIWXDFVY*U6tEF%Qmt z`2qcJeplr23pqnf@hpTP? zfdS5}kDac=o;@>~aem`!B z1i%S)A$h*jB{AmVoH6HpdDGWCqW@O8&OF@pZJhiPQE)hKVM@@^Fs;Er zSLAm$sE~W5G5<*6*&(BZ*Fk5Vx|Zuf%hu|e5(eJ!-xU3w$vwRnVUKLH&AZSO`ka!V zICU>Z(L?G4WU{ry`{vDXt!E@P(DFpr{PYW&?nxfl zu-TuH-^%;9jQIHM+3=aBWGiwWrB!oE=i&%07B*tfn%=b`dHtQ8OD^9#hE{*FuA=FB z_cLv9eLSB>JI3(azFv<%x8G(Bx7BN-ciamW!xVi)RnM99IT~vCouRkbpo!(n>wTM2 zI}49@k7-T2h~(5;V4OUT2>n9dkE&i+#5)${!|g!nX8J4*n-`aUu=#}Wgf;>82m3D!(fDa3ze>YmZu&!vZ^vE@4FT5I6%m0mwy_=lk{I4qU4M=z&s;Gu^@q97eKQ4!r$JkZ%hE z2e|>-qG^LT?sKc?R2#2a=J4?xajpB?1WAX`j5ya}Aa3HF#DL;}*@$#0<8CEYGLH1G zn-|nzq)4bqPYkf9635`?m4=?w?QT#%BJV;CK?QE^5a{bsn!ZT3(`6f=8cNt}q{kEr zrcrKYf5buQO7_kb_?zzuQ}ov=Pe0KX4xqteF3amN8X%0fuw7&wgRNx22?kiaS|9E$ z;a>&w&0AM&x+8j5T!v<0PC({%evRyW@Xn*PY}C%Ix@&HNQC6RrOKdcZ(#N?gWSe^O2DKxA-{BERp@6T2 z#3qxlgPC3B<3TPX@Pbp&YKyRlg^Z)5jSTV%UVkmf~C+adL?)g23v!Kg{+gI48?-dco+7dJXWV_Un)(^yiR#{yUk9C_AoY zv^+$r!zfM7Y`ejerpGo|9v7^Eb_I5S5UXr-jKeJV%Az%R8GmBpMx!{loi&WAabUYU zPuy=6xecoqo!fw^Q-5<}hOWBL8Y0(l%!Cg;J2H_QyfdSAyE2{KENW2k+SPMO^<5g5$I z7?Id9%maNCBzS41OmQMPNkjrJjeK*eQoHP(Uh!Wb)9u}yseCyRCQlRrtNxQ5u>0r) zQUN=P9)FRKg~DE-Nu$Vs4d)lKeu|HmiBk|+pT*xOCI`xK-Uc2?K^upVADBy;`)tWb z@yb$-A}?5LAL!913QRVy$nmp#c}1pa)^SKsz_JbHCR>V@KFE|k$TP3NijR}{HEz8i z0ZkAGF#WCp5$r$hlu}Q0I-Y`ORcw`eIqO zk{MKcIaMF8U#p`Y2gXpiL8uPjWzmy`J$<6fxMloegz+JX6e&3{lM|&Z*jhyeODrPk zZ&L*~hQkdG1KU{4Nll|H;e0fwStqQDXw_6uWQgD$0atTHyS38MS?cP>zrBz2)`ue9 ziyYodG&#;jLoAAy2VqiMgr2Q|N^V~K*Z|(=(PTj$n+HWPMFHux#?XepdQ1q-cFMeV z;Xa1`)7lg|))o4tSLqWcvT~9 z^0BB1gn6Tw_*KnI5Mj>jOJGTIdcF$p)!AaL1Oxmwbcy~%kLc$u0BgpFDR^rtNfWeP zY=g#00;@y>x!!QX=(lvx1*~3fC4W6h`_@SLh8Fc`yt+2OKW{dtx}p_3$kn-q9~|O~ zk8`W?Xt*tx*cs|c$nvv*l{L6q>w}ts&{bLL5dUf!Td4T3uHI8NEWex6HUVFyBI(Xs zl8>v}!n7Ja+-~GptQe(zo>G?;YQQK2Gh&W! zuRPO;AS1j@%-x(6MtzS{Z`PEJNIsb-cpGxk3z5Ko8~Fl8kH`~EcGNOgdNfXaTci4I z=m7BnPwtx~`*l9eKgSPGHvRpvzbzvujr*sxn8SmLH3nxBs9{kH0UF33O0Ovb&81D9 zA>t)N@G5m_6hS-SNCTqR$-cQcHt+;&ffORY3%$iVl{+IhX{md|n}~7^+yvKR=e!8G zf)3@F@wGd)JubTbusu$w$`_b&A?H?)O{cAK(ppiUU#?p5!QT>!bYNBsh4%Ffoa3Uz zrEb){*cen8JUX(6<*20KtlTxc>DPgn;PYeYu%W_bF>u2@ti`i1BYW||yr!_Rsd$Fs zIin@7Sk*8@r{Z~?qF9x9SCnQfa3kKFWN`;vv^&bs33O-}$>mc6Z8IMVX1Z1pQI>dd z7Jcy_bW`$gY2h#&>8?Ly`2(eOSWTz}LzVzHl&q=>#~r}dCA#>#R>r!-yD<}1fYdbf zd@sbOVB(O@p!`+V7++BodWf)Lujr+~9aAJ3GZqT#q$+lb5jCbEr-skZX6`O9kR9KV z&O?_t`W?;Bgu(nV;gdcSABiIvrB;-J{~IwU2$ z=^3G{9BSf2ZT}MMTVCFP@9RNt7^3YP|1(>;n@~5mWi={>tC?A{W@(8rgxzYubXjxi zeF(=rL@ZJ$Bj_4jYJsrk&Kqqg?uprUJ>q@O6oCus%7onAedL1p)fI-zcCsQOu)#qH zXZF5RCJC!=wC5Yl6=SGiI2D@2QMlW%Nw$i>aY8W%Q_tKUF)ccA8Bu5Tx&kyJK9uCA6wP6mmL8B9Jw}j-RIWGrU;QV+cj#um0u|h)} ziLIf{{~?CPUf=3z<{+$>j(a?6vdI}PDUf`g1Nl7C?CL8w=@S4|fu_Vr5KtHfyBa^yL`)UmrRibg_N42`8ew=;@nBpw_y)Jk#` z{@$P?8=n2g_|~O}d52a%L493t5%Hc|qf68h{5VrN$UGp3tLQ`ht&vCNsOMN`s&D;z ziKekNb|`2PR(AcDFNW$!%W)N}3OCy17i&!U(9u~zxkCfs{){(bn0Dq&F|}zH1Xv-({HdApygLJHj+-nAIn^U&l)=HD4Q91Mm}dzdway)=m)%0E>esz3-|J~j3{&IWG-}8QZwzr7y_I!V>h^$-T>+SQw z?eQ2&8n?OGlX0h0Hb;rB*z`}Dz^)fE^mM`d$Hp;;KoBM}KQj~G5wF=P|twY1r3Of8q*;M8p zTSAva)Q$u4tU8WBlJi3!(ek{+w6H!QB8!^lz#&^jfBS{twSkMqU?ntWf}I&y3FSKI z{;^+sTB{m_xeL7f7ly}IXvS`#+9sKswPj6ODmRq!0p8P|Rmrj_%2Fk~9pINOJX|S- z*5_yO;lOGANJ`|R=)xz~nHSWh_walPJY5R+Eggy@A4(jmO|h9Zo&*Iio4Zg_?lFqyTg zN-yZU4|)LCP(5&iNN^4$_Y+?dd7*S%Gj76C$6RP)QvHNPP(8<8CYgkr{#X4%{m+waxE>7su@AfvpNZ6!Z*#1irQoC)w{I1%?L4qA@_dz}P$c%=V~Z zlb1sKH`;Z7O`);cqU#S8H4L+AwkXx&dL(-NuHsf531P6c7DRfuErkFoz{*v%`vto2 zjePnp3n;Wz2Oo$FJg6?$ z27SyW_ng+dZ`r6pqlZVxT6+kxD{6=e)*Wil%Ug~phOa4`fvp1%0=TU!_XPsdJY1I% z0YU-aeC`P~2GWRQ7?>?SU z0-?}%3Wd5Ja-ZHlP#x>O1h#HJyl}dR*@d_i@?}08HTMYLcA`X-NiLF?zQp^G&k8WZ z1Dg0~iQa)#mx0h^KDM#fqgfX|g@y0n5v+_V4z#+VIyt1iYDOC2G_iq~;AlQ$rn+LK zT7(-zoGBu+Oz12u*K{)Q#gc;^<@tZKe4tlBCL=qXqI?k?A%AJudf02TcV%bT4EQhp zq(x8+EN;UWPo8gPcEE+55d@%zCXwHor(x1EA9@s+6mKn?r%8_gH>^@1sNZvInx?C27bwG!{^@h=kjpzUtTj=Z zp$OldGe>Q^ZlZ78XX~BNL{FZ8%xFPbs*tY}yynFCbA0{<9{!O$V}(Pjx3?sS9a4d9 zPW`4iu&yXJ8=!#jdfi}5&ZISDI*pYS-&#KEeM`0%w#6cPGwwZxkW(8SOL~6w_jrP$ zqk|5%v7@D^=W}kmVs6{u)K2v)>+;Lnbv~v7dxo4|!t0=?n8d5-h+IV0v~o%kIGHO$ znNN){oPiwV@BdhuHCqQ$NNK_u{v?+e>RLH(0+^oM*hXrefzpNZxr{L3a0BE#yw}!URLRF^Fyv z)>P8SF60C*Urlg$feO!BSFK?o4zli&+5@AXd%ML;A6;#6Zp+#M;=GSVYm>BNz))q^ zX1K}I&B_eu{O^&rdM{5no~80t)WuE(Sy?rQCiq{qP^F94sFA) zYSPMi@_Y7>g_Y!EBRdSX+b-Lmn*Jgk9UGwy{YAoPU}*ls2xFwyYouBl!enZ&L1Ba@ zW`o(lfHjuf{W(6C8my={L=y!HjQ8)aBuWFL<1eUDOiv@=h*h9PKNw;q7f{dOK65p16v>HN@put6vG_t*M;?l` zaf*Z!Kqx#sN0E$D0aUbDZWM>FVh4Mtd~F4Lmzc~rBCk0_zz-O2AdxTwKUf}lAzsUt zu>eQQc!3{Y*n&QQn=T&#ktm?iG5^{J7_fS000UPk&<2r#7hq^gQG{bC2evffuE7M1 zR%O?Ua0)f7<-qAyv6g;z!f*`#o?7cI$Zn#KgU-lT+#m2h907$jFJm<@B<}*s+=K+= zxq!Bw=qs&p%USm1Gc~|zU~oa}1XO!iUSJ}&hz;na-D2Z1n*R+GV(z`^+p|pb3(w|h zfacONPd15(|C$L3D12!=HMkCQB{kS#qEDR?II|$vfO=Ikv`Kh&2StBK z@gdnw_V&xE5i9P{%Gt?|#Y(Q49hjRNjvvCf?FYM=CCFE3{N!gIrl~-(T?QP6+{=r3 zw)NBwzyqfsmQQ!E)6a1zfusakO3^^?umWkY&nM|PUAZ|)ae&$b7JOu1mN54^y>}s& zS&l+G-p{)XmZCWwU%tbSvV&A z8{XkWcq`6bv8R?H;zuY}MRcTHlt$wsKBW!LOZV-GL=#r&p6;r3+iX0@pa@qJSX>=^ zRRe5!ilpC4#iUnz#tv7BOP-{kQ!?d#gfUQ~g@q>+j0VD5tc|25cLd6}1fotX&hr&V zb>@y*JpRuOw^&P3^T_Cp#$1#^;HRD3KK~?r1A?_cOHWs7I47Wb8nZd%9fE0S5} z9NZ6I#rySM@&6NcNsRCL;^kWH6tUCl_L4%5;W~J)&h)x;Md2lfCVVcm1!Y{Kld@dY zU>l5jd@Sk9lFUgQ#>&zDu~ zFts;LlUm{YZoLh*#WgyAMqFN@`;1}U;r95un?#E)-Yv>nag33CP$QMoIS!7yDNFSp zpHzRhn3%wbC8xMCGJ-=`LUARiDrIx|bI(;ee4CQ;OBI@Wkx9VNOPs4IvQ;?=z)e8a z+m}vgPEtMY4OL!D&^_+OomETMa~Gr)>vF{vWMP`c#Y~uHdpM*6%-`F>ZZsUE4@%gv zZI)P5eH2MQsDTA^C4l(QagW64r#mSTm>%5Q=g@NZkQ;KKo0v*4)&UV~ym(}ahC3w@;A zcm#7%h>JG9y^ISksvplLvHqj21HNZ7#@xA>9=W9n6B_B?g>0q$RAahoBb%WLP2~x( zU!7X7n%+uPh?Ar^+@m;o{*x@ufu{#%L3d8Te9YErUp;ZK@N z?IFT2Li;$CEi}ov;2Kp-W-nY&)}&6daP~utN5f)^1_szbAkJ%wOTA@^&TWx!lTDSx ztaN7W!4JIuV25sHOmyeM{{=zcvdFmvqe&CDd`54JQ+E_$VQtkel#Y*ez-$;6$u;4L zf9Z$`T8|dFC32fNKteG7NK^dd?U=+cQ)qaHf($wiqV;Kc+C{*x;HZC3p^0Cq>H!D- zVpg|h*RZ^0!OTk|*41j?U(m>)tfH0&#k#g-L8dkGH2L0|5har9sy)bb7%wK-XoVeJ zaWOhprFeyNpm@$4o)Yn|)|1pm*#E2dS7WOLX#KT!D`QeIlwxER+e0Vq41NM;48JrK zD;|zarZpIP*rvJ8Jiz*UkRx;rT{g`Ic~7eB8(AzatCBZ|FV+fcS|A<(Dt&C#yJA$FvnbT)yc=cg@UC6&t!6Zoe|*QPlDVzYfc=Mr;MC(c(17 z-Y<}DuaY6tb)7sEuNJ*RcZ4Luoai&K-DmhLb7ru6-HI9Q>Gpy(QVNv8qtI5-VB@DZ z++`7TwnUrK@eZ=rGAi!8k8tF-qj`^F)zEbNjS<^}5$rs9y?6&(oq=suCJiEM66}VR z!i|T)Rx49Ot2a+B`D1P8O%LN2cZC=%OsqHYd321l=X1PL7A=k$VphyT39Cq<9qd`i@A| zBN2x?dG5hc_LGY%t*85Ro|qK6NKBm*A)U!lgMzy6hV3vSYN%Eft2UWsr!M&eZD~40R-v zZ<0)$s@sQ0b!TbaLZmv!Qs@#U)j3dVheKDDF2Pbecjg{2wNuE{&iJ`q8?xdWIMpq5 zYKP#d9XPl9$elx|_GR}S*7PnpQ(tM#J)ElJ6u5*`?F9M`u(n(Qn;mBeuR6?wq(!Up z=+m!qD}Ft$9YmLoPL(g|hcNm> z=B3N=ch_zli-367{oH1K$RQiZwLgXR;X`l#Pvgj!9=br3Va8F!`@YY4xG%C|e~^W{ zzjreV;m)g$`6Y@;FM7vR-mv?pPp2p*3=ahA2Af=g2JxCMaPGVWLBcqq{ocHw$d5^L z+=@CX#yz)1Z&l3mpAWo!gS5K}7}rLoe$`Bf&C(1qp}apkwO}PZW(u>O4#M6F#%Bp% zy~NBTH^_zunB=1jK4Q}xTv4JuvMqL%1nL_ zZz?qh+$6=J>te?F-RalDbF0^RC;&XLyGV|6=UH44PNMC*hx+&M{!(<(dEN-+w}cL$ z%-gz0zYpg9YfOpw*51X|zW=fC`Wf^EknyE(7oe6{cBs0&iAwDr-W0{{2~Hh3SHBm# zXF2s=oTlJzQ;r%R85G6YUhZZszoS&{c2AD$z)c*xTKhh7|C`@l7Ukh`6#Ivh{rUkN z9#a;jv*(QC1Iyk$x_jNYJ-@6Y=;TZTdb@{Y<(oevx;*DBA=q&Pb$H@gl+Js|>Dgyd z935d*>FN$!ZQWsz55hH8m4O^&RdIVVT9kX`kJb-L>-c>U_UJA@Zi`Il09>yOJ7dbASlr*M-Z<(T7OxORTjK(l z3lIVJ*1i4rYVZbJAd}0%fX;;)zX8MY>Qg(m1QXN3Y~#f(jhb?=w-Xb*fjAIC?Inr> z?7;?V(;uU{V>5;cYnlliSEF};M-tuXFq7Da9Qnh8Zl!_%X~H2&UjXVVs1Q zDbsj~WIAe0qDSS>$}oxuhowLy9*H<5L4fFFiK3~HOy>y>d_*Pitm~VD>FHGPa*ra} z{0fJNaTvxgK$HZ*qg0Rvn}o_KL<@X9O&!n3G+~dj;LOUp1)8cTfGL)0gfj*EDuXRQ z1(@-l8$Z9rOjU`4guH@`mufO$ml?p#(Dr%XC2617P>?3+Uv#4C8H zAbKkl=8>#PjH0uPH@_awDnA3@Bj!;oZCBOngcGQ_K<%1s?e`anKd zP!h^6gnWj*^l3$+EZk+t?+8TzM+@=-tT>O^i~W6{csbQzvY-CBe{(c_zE4TQakSh| z&HZfuyZWmAdH8(}zF81#^C7M-h*&dKON<;xNUcY@`p8e0S*!+MVI~9)ideQtHL*u5 zS(J(Z(`@YkTahI2#oXK=$^k_lSw{G;95w@-$W8;u5vz;J`8vqpgL?o*J_z9&P$YT* zNmPQT;uB7rW_yWw#!JMBlSG)W_a$4v^Mn)1_I-4Nf_;XU6G*)k=E&m-Mf)(u6N!2x z`N=f&zsp6I?;FIXjho75R7m@B)mY`t-A89%9b&(6E4$DL9u5R_-7rMoz(-2%N(Z1?P~V zJ6`}X(`+Ip)@})!!|u0TwKhWPSJtb}k!CUSDqF`#OvuTSB_J~w)7|4d@$&+EVqd64 zX$|*~3U=q4Epp_bJVgXXO0^{A@#b5#B85u-;=TjItGBc1M*UW;vi9!Yu8s6D6E~Ni zuC6YQ4C8%Ss+zT9K>Tz6NMh`fC{p$|25vE5fjRW9QDc?#e0Bh3(JQxW!CWJhhj<6~Z6s3bFIral| zPNHa=X7x=Kr)*|J_z8ze2x3Gr@g?cquCTWPt?FqpIJwQhHA3+O2KWY*=UPfw6on8+ zQZxi}v=C>47ZBF2$itkWU@_PV#Kk7tirK#?@X2OA-R=M`ILann{H{2dnWi&IR?I8% z0T!nXMJy%}lRHFAf#^#d*A#gO-wa6M6hU85)HcoWWfdpgJVUTTFlbc?dn@E!gG7+4 zn#Ki%Au47ZQi_oeWGC__qP|NRSxs~cV8M#=B`z)Ifa{_N;3ouqM7L{o8ZguI_m)W% zJPM{<{Cif={7OP*=|V4(AXtN2igPJCJyKhsKE{z3B);4jP!{g*CcP?sHBr*X( z&Lj|D5~f5h89p7rCB#u9HOPu_l8?*k4C zV{JFd?xRDQQVQ!J^gI-EB!iMxw2C`B6(ynkr$-_ciJ83szyI+_K}G(rndVRYc<1`x zvi_e3ER7#Mkm5fr2L1oxljFmh{{Q63(}Pj}e;?&R>ih0{8IM=Ec8vp$F z4OM@EMoq_`f4EoWevYU~tAC{?M2rlm7JFsIbr6tSd1#Vcp^g9}Ap$WJGBy_io>WL9 z38ExImo$$hh&C#BSx0c7{qK0dCh5G6O7>C7UY-3>$$k$?_MDU0XxH<~wrX`4#L)#M zoOq-uaBXexzP)&#SFWIvYtxfBCX^!|z*u_IG;CT?0x|XS0f>SnuCN&kTfxX@D|n6e z0FD5mKB5A2Owj^S6nW`#H>nw|jfy1>CuU%hWAgo-3-2C|SBTCM%$u~&)d@c@)iunw z0t=X|+pHv)vzr}vAc+MV6h9qKj~aK7Wv8ny6vv4Eoh4d71UEx6s#cBqP`ImDAoLN9ITu5H7IIJ z^gaRaiNfO?(PjnF1Y9Z(ZB-9bbQZ0RRh8nVsP<;@Bfde+Lo5OI>+KpF7}RrxkA90o za_wfF*RCv)lw>o3EazB0_&L{%wXD~yVu!5gMtsB}4jRl@!1Rp8sFBn?gV1Q_yoBDM zi+p%yK31z=RVvBf#X*LGKs50b{HB@0kq}#yON*z@hF+{o^fM_=mV01dA^g-D&aOIX z@A8_J>B{tlC1wuz3i9kG(SWMd(<^nz6kHI-@H{|S21}53a`kq0c(7Og*J0&fM|%yB zOW%*D;HB~xdI8>(2u(NVQZr>Cj%=qTuUVZI9BuuyltH>pk0MbeU7tG$5Em`&@~OLB zA-+PibTT%bVJkwI)RUH_3;;tCErF2l$!!F1#5jV!ltbl*;>7y?`$p#VMw&a2dU7gG zH4;K`s!2P=3PmNN0ECuyj`V9o4cc!2UW&_z;F^BrCa_B8Q;&rEOA^3nxxXa)n6U)0 z{gWpr#|Ldo(QE@?5uS01J(K2tmet#s?Cj1jZ}+V1m(e7+iMx}U$4XU2-9C}_OvMt{ zxf$qBsoTwUM=nN=QFHsnN=^SO2Qskw*P#DBc=~ix|9f&Y`hVX`d8qo|lu!p%|IT=J z$FFFA<6s;{FW%DnVuFM{HCpeNRVy*XRBFlm+9fkdCK6f|ZCNo}UDZsXE$;w1r`aUa=7lnc-s1QMmGNrjR~GT2?1G>g;tm;uZ!i+H<|nNC7t5;63?Tg` z<^9x+y9MXWK~O5poJh(-L*6jZZ&?3S(f_C`QugX~FfEW?|MTSF^x&kX|9SG{ zgMCEVe(8mXNB#Zp#7a-9%Q0$vMvYH(_D7A+eQ10t{KQJ{Q)ywV{Rt&^X$6~KFH$*$!F1Rik%gbZv~61hTLCM@Mckb!wdwFE)m_cc!-!j*;RBSwq$z$ zNcjn7U~;&ZzGId44v<6v4l!?ibt;C^yj=%>ychmnl-w6 zrQXD%mUfux8M#=@jX*0&%s53bY?un&zybJSovBs#Y9o|4BAQrCoGEB@jHrk735ROV za;ibqITcc#kwtbP;zT<(#T}<$miy*sE`0_+r=fe0;?`9O)G zbx)h-!iho%;4nl!h8zX!G(LwkVc$~BQ59GH-T?XjC<|kPiQ;7>#AW44dx^w#8C_8F zXVmUFD*?h@mBdytjQ(1TI4vH^fXcnRlD;C|c&hWiUiD+@2)170d5uY0D~w3EY|ZRXu36!MAzGp&JwklADI)FB}ALO6YPQ zMUxLRu^ZX`Z)mCK2bBZpP^~Rx_2cX36eD z%*BO{+#m{I1W@GBbu3+i@`pKAKp*2Nn##>LYYC=SEiQY&DFc>CzTp&dw6s4MW@&?} zR+B&<u?)9#PsN{60Y(gOk4YIWrl`7k+_3Zqn zOtIy;Nv*R&EJ*E%DZy#SQmECWz$W=u>3MD4He-_{`>{ZQ6G7@RMIL5o50D5c7a
?O}UZ;<{3r$>C9h_W8`%}%kotT|A%vBGTiWP?2_pll; z+k3xR>ot(R%Tjk^r{n6P-D->dS1$Li*Rq`z3tg7G7E3ZW!;CoSuN-t!cGPKkL2p0P zwK}NI+9$(#;-q)7*DV<+MW;{dtVt?#11)29(IGYIiCVz+(jMvWm%5jujk+QYjoqe5 z8T^rR+{<&`G@!oEeAPK^DU#uOG`-A&v_Xo5k-y*Sw_96mPRcJt(4I;drlzW|TWQuu zo_--J1ZbH@i4{o1;*QhKT5^x9(fzc!jP9qS`)Qv+j_#*z6K8Zk9X&Kh56#g-GcTiu z=IEh0dT5Rwnxlv2Mj1UcD`oW196dBg56#g-bM(+0Jv2uT&7ypx9-5s^>={d`i#_5_ zlV+V5*vQ@<=SbopuwoM!`IBn&rO^aGn&3wh{AhyTQWN|bs`H*o8vk>Jf^d?Cd<*@7 z`_RV!JUlo#eDbsw|MU3x;B<`tc^~DwJhatMf&_k*B=G3b6;06j3Q{gZ;Kvk)kYXW$ zCOD7+p^&bFH4ydQpUuGR{Os*3a2CgG`sgQei*69z1GfmkfaP^z5Xc(hBxD>$KBT_t zRrMqT-^rMIKJk)JYUB}sI28TmKk-s{Y(=m#Wotsgxg=#EflVJN{kQmAj37zRW(Wcz z4NjtgL`E6>g$M;0j8LH&6_Rg2me`vz5LvEF~m^VTp7s#pYgPQ`@ec!=4EmH+|) zY?4A#NJ*oklmNj32Z%`xu^GYFgn}@W`uBjhLf$nX2?xIm>J&oCACHANqizB+81Dq~ z$%=$XW|kufok+$lXN>JD%qJ=4lXSxNzbhfU+dL~%NS9)1q$kg3@bUMZ$pj{RwX?Sq zkqGVlkx^u6B1La?DX3xX2B;+8K#rIFMHxRSlB zSSGO+9xM-2kiF!hDND^`|JGXK5H6MRNpNmO#~I6Q9>5aww*9SAgv&gO(sYvT7YKgD zGR`Vtm=n4dOge^)iFJ~hS7VBAAV**}`$_DY_MWFciUYD%+_}V1B{#ioMT#n59H+50Q?Vl5&ml=79>Z0(OBa|jUg88dBuGN^ zPSh%oCPJL82-(<_9S*%5RB_^QN)kcX^5+O~F%2qZ1Cy?sa{FEo-|{qUz}tzZ=NOt8 zdI@?rcAocC=jCO{199@aFGoI}x3lEpF(n~~I2eFba!@5w$>pPfELp18#<9RORDQqL z*quzWjy9y1TwKXfX%3xo1<*BaI1&Y@50`HRptrI{(ex&ctVzChG06%3*NgZ0S+Z4v z|1G9ynLz4KZsKUSHteZF@HGxll_Gc29kBC4oThs_E5i5%-`jfL!k`)xORO&-t+RqdL%+W&7 z1gFZqkf`3%kg$9;mBd-{@~Q4YvD-+j!ur?IZDu;|j6tlABTo=}!;&4Om=46m?jBbm z-8Ha};>Lp_0Wn3^t5J3{u&KBzODDBWE_P1E^?+j-WPWFn=rtX$=qfYpK9+k$KA)Mu zT_7!7iM&#YtJN)`zRH46lI5z7h_qH6ia3=_DhD=DJII8Lp;7uVTkG>M5niHMK( zzsvfPc3Bv4Jjs4ZnRF222)&V{*g{>Zik7$vAk#Prf(vO$tIqeE#e2dp)Kza|&d*dA zYDWkNsWEN?dg=CFfxcXMRN1W)l%7||C#sPJMx}B zd3LPFM)oc+YLYR3xj~eQV@zJ&M2+m8ndjoncZCF!aKbzosFCCg`@b?0{!hW`d>=sY z6QTGo(KZlQC~%fGOyLyQR4tK|)j;ipQUlhFSjyMiW{RnI<3Kef;1(S>b+$=EC)1

c?5`4YEjEkSK82_kCmaL_Q3bm;(yy%jIn3G-|n(32U)h}v#=v;6$Upay- z9&2Un-qvm?RNGS2Fh7>#-K9Lk^{A_|-ivS2pid0|?612v<^8F}j0qTihlx4NSF8le zpO3?k#JWGn7GwqNYm+oG(;+;%uD2F+V0; zz%&iKZ31!8!R~|q$-FJlGudv8VOssX_ey(bsvaeY z0)7LWGNDc_mTm)nUTm=1T$#<#RI7DvhXP86gaKHll`9FIBfq2#{-^@2I5%o2^a{W% zlLc$Od2Q4!sJ-1E>x8MmSWaCv^2dkln!yBB`6G89{7>d>6Ms}c-;qD6fbPQ|RcOB( ze^gN^_@f5RmHDFrV`=^VrbG=dOsg<6-8)*F1*}${_h8D272jE?cWawUeJuD^m=xY zF$9wXO1NMU6TMDv{P>^h@G%g-KfxP!}2ZM}Ghb99nPt2x^Z+gf#3F-U99y4u3SBK2u4O+L#x3RRU1 zbZMoqhVcqaaxV6b%GB?4?e?l0tNQQ-`YdaA86pW{incZyKm&KwwJA8cb4Z%bs$M*I zDLcyq3WIBvC(G=%l~+%GPT;jl&}8w^+sX-#E1c#`AAI2;p~|M=d8UXXTTD!kMwEFe zi92A;l>mR{8{Q|NPdMmfMYYYNA_&)*8ZM1)eS%{zFS4amm@N29nAf-|rEz06nNfl-Qm2W0AC*lmT30CRwIrujn>Kve$1D2E45RE9a$K#B%M>`;w)g#tZ=x&+0 zR*`&OM9Q3aKUYbb_-9az^)9{J(01QpE@+0>M12}TdrYgUV^oiW))C{F3q)cRo_A9r zF{-$e&E_XZ0nO$e-dxjfeglGDD9J3XTMeah1k%%QrS58|2KS&!(eGD_a_9tm2wufC zh2yeB$$`(a% zLZuC&?hunMA4m3gJGOuRW-J&}0{rc7KOCLD`N6zJ@tA^WKNoZY1&(2w&Ol5VL$Q#I z=n=Tn=|rJ}<2zspXP+(K4<*;888HD(U?kBj`qs@kQ=}pzzWq62SGSnJI0bD8;xWA? zpnVE<1}{MSt^Owl-DyU;w%eecm0tYzn?ddk#F7#mi3OysczLW*xB;GzvxzbdOOyYu zbolZ`f$V4*uTNL3M2xozgcjFdzk)WC6fqW039@8qZezhDot7zfPwE|=zG(>FD$D%& zgl#uuxd*@@zE?}kaK@<5JRgQ1&5Hs+rNq3|$9Fg#Ew!c@(QQ|070i)xr{?ZxPawlE z8M>|%ay7xc@^(VWHLWQfr#QYD)10HqCr(pVd6`izt{LLLq*YKPyRKWACBybD#G+O) z<-?qae1T%}3oWgfb_OqsSLP~v_pbI-!=5qE+eg{>8=5 zr{{;?qIvVJ%_tS^403);Su#fg)K7&H&CZVwk1y^;F$I1Fdg&JLOQ_~n)t8VyrKV5M z%jazdTe~l#B}iG8A7utSJ$ZY2Uk21otiph%)x-VE{nz^!N2R`bBE+I^{yl^O4x#cg zEYtZKAzAAG!Mo#wpME_3aB*~Xc6{>ot|TZLs;2@b*Gr%q2<{T17pL#e?=?yi_zFX$ z+B-NsuN<5521ns5|8qc@lAlo(#L>zA>vu<2`yVcUJUY2NKG?rJK0R3iqRrfqgsmYAHF|6x%zN%bbhk`ehwcx_)$Dn zsUuEyeTBI+4Q8PI!8cMoB#J-10R-)_z9LHF;yKq73V4c81~yyv1wr#xIEy828S5WU z-ygl|nl;>i{g@9GR>aBzzvLK+zt(i}udDa6Y&3d9D?i=g-kWOu>g_J>QzZY2$~9}4inrOVUvX6) zQvJ-i3N^SJzud8*jM5ab_BY_qdXuz_=w!x!NntX<1hjK$z=8HSdj7??SieS~oq6v9 zd-7|f)E@X>2l2oD>mh)00Y%Oqh>L3tO#uG+PtYbHdL9~n5%|}?)J#>oW7;%3cz3LH z+p9`pi;XG$?)c-;E9GGOt50qaJ(pji0(aLjhImE^N3Wi*d3pcV%jljRa zZ@<-ie0REkczp5}oJ({8=IWARdk0qn1>{HoOuz(9D4Rv#Uw@Tfh}XKJr(5?KQY#T! zG*$Ven>$zE6O?R7-jJz>X7YR7AJ1PB#obY<(EP6u2_ z4wlW0C&twWBt@OE z?O3_lbk+Q;?8!1yY68YNOF_G>Hlf>XCD5biUuulauhCxk!4q=!gBFN;FJ8Xb>Pm#W z_Jgv_zeZgpOS_Vu!5~<2UC@+)`5ae24CR3chr;LjYOlX<uh}r!TP?RCHDX6 z@Sa(~7v=x%RnLD8ww}&^KFXuxztk9;>!9TVKc&|=UVgV;pIUeO>KVfm$Y%Dk0~7FG z4)&@G0#5O;lM9^MLLCFj-E`x_KQobEQE-1+xphAn&8ugE@Wa9;hHN>^R9vLPZ%v<- z_wIwP&xks=hdNUVkIHzhuh$0kJXe%g7g|d)s92=7JppTWvs9526DlYF4#F7pxcdPN zx=z>IS)=%lj7RNvGcdcWBnf=VE7IUWj>l8}_f zJQ!&|$ghl&+Oi4@_}(zTRJ8x$@-(Ux_Isg5;#JUk5#&|ZN+}ceJcx6#4YY3QWwr0c zeg3YA%60wW7x|$c&1ft{_7;h~sBX~8rL7ksQ(Jz@1EG5+U(}^rYy!aJF`6JBghI9v zLL;$NA4Hs8(D-J4FXocecEh{Ozqa2ha8V+?X12uqiebDDSYM($p1f1s=EXxUg+^25 zg)OfRJzEU7j*Bf+m6rgfhbV%L|{>2J4Exj_uER=@pNW8chUA}-Y2Xyt~ z|7t*&24~IlHG+H)Q9Cj*v0)UNimLM?>J;4IyojclpKY+zgCGXYk5DV+)^6|=dXQ|? zkuG3=`H3c$fug&^Xa=wCW_HU)lofB6!mvsEm5sjYHu?NJLOk%L2{4U=aB@9u4pN9G zmsSwhjianrjwTF7ajh^R&48|#`z=jI38ry8t6%S6Fg*GA{vgki`u|(r|Gm>63@Yb; zwx8~QeUwM}{}${2WqpC}=zi%SjTL;prf)U?+^V{GJ?E(79HCc8?6R`=L2I3_KLlQ_ zX>8*zmbu*MdBxrcJMbBEfyuQJ^S)qJ7qH*L83!3dBeh`)!oqmu&R20HY`)G4p0DOL zIQIs&?q9&E7$bIzIRY99bxj}wXCDvrvCUGW<=&CHo9RH9{9;YHmYOOld zx-xCaL1}Dqy_&$9ln)zMyhaa%Q^`PWYQ9Y75oOxDJP)UZHR_DjBGs;~EIt-yiT3Bl z^3Nb~pKJAb>Da1upq8c?h|nYxvqQ|nsb=2>hx9_L&j&R@3C=67Rbc|%Q9?)Ii z)a<03%Vh7^+AE;WdLw-f)EC%lH79xBGIh{+0idyElkePn^BhzbZgV?r12oNV&8@`= z9S?Htc7i62uBHDzSyVSPg{%By)XjUExO(2Jx@E~yU?r{H$qMyj&tuNH$1DcTw)@-( zTP&DW1^ZLCo7q)EaR-818XJBoDO>k>Za-})<<>VPB|469jg(v5Au_VT%VfmuptC7r zrH<&A4c#yw4F)x2$eKxzx$ZAUR&Sa`jfZK1D%$$G$WS~dA5LBR{MySXE6C{EC~Hio z<=nvLC#GWiD^UUs7oom$ukg5`w@tAPV%Vk_FAtk z|Na95SS=mpnzWNZ0ewu|!INkm{04@D?F7Y6Oa@nC6tLuAsPvNmKYQ=qAGeJpiq7Bq z6gWMZU!)v$tKTi@Oy*uib~4&=Y^~)ayF0r#Mw3uCMr?usK*^d(?q@$gJV*j0!IvI( z65@}2F4Tns7RV*LMZ>MeGH%i z-s$mVIvZ5N6OMWrelnNf^ysJvPv$h{kFq52Vj6%PybRLmpKkx(5_o^Q6)2W4QufdE zTuVZIyZ6d(jbn8R$A9>1uQ=v``1#b^mXBHEm>=_SINXB~)^~%Sg4@a74G#TNpjdQo zhd30hCJY;SHMw!Zy(}L|zA`AgM{5PYl2CpMxkfl_>vxvI|Zhr zulcs(8^MR>ck(1h!kdooaJV@IxhB68JXrosOoPHF@*BZt<)6rDEc--Gd)YU8wkug= zCbb~4zb_M60roTUN^l1$lU0Bl3FHToi~}3Z{e+@ujy)%zyEtO zoy~ju?>Sm!{V$lS{sn^o2yOr>D8f`!8d3y2iXcb+o-m!#8)F1#fdH>5r1zB@2)6kb zMjKhwx!mZ>os;}mrxTKe59^OcmZ)CiJgh_ulcQ7{>pM9tb(|?w`}kyLbE=E7_N~Dx z4V}Ac>!3WjSSxek`d?GB`%kzF4zy9KZGrkYQCT?-7>0yr1$e6wHePOowefyA>J5Th zMWk7TJb|mMKNot)zCJ_ESMta}a|-lk|C$iaI8B0yIKhZ5{9X2>6C$}vtT+~^eW=+;Y88nQ@b*&@|nCI3%v92$UqeGi=xcN*Ae z>Tkec6Oc6wyed$mfGSu`sTU z;%04U{Gd#o8{d0`BErOiGiNP@*AJs^bL=dC%vN$u) zDZJThI_4~lzAV}djBv97M|WKXC$%7}fLYHa1GGR)C!^-OsR2`tS4}A0wsVu+jh~Go z%vP{{Ikj##PN`*EH3E_E7^0Ug;1x$&9YA%ECqb#~qrwLHXN>zY;REa&;yID@M&$f- zF`rFkD7xsZBxu@-s@xk&_{2oaq-RJN3tD0H|1cKph>yP1rAeO}!z7rPNAgchVl>Eg zQUk3VQcEB*$d>~mW6^oSrIYv|LP*z6Gn?QaB_+kg={mS_4z++!V)aRsKC8Ht{hs}% zBIs$z{Fh($ltz9N!JlH}ii8TZrBnrjY~k;NT!0)@1yc343OLcXvEDM1Gnua5L6My_lQb1yP6b~Y-B6r! z6R!~s5l2jzBx}g9H-s_YHpag!I8(aE)Kqde8AX!;JZ?#q2JwGg;H>)=KwbX-V!Fu3 z|5uZ7AOC-jRucdJxY-{`IlW@)N8=io8bp@mQC+R?xm^mY!t+DC3KLL`V?hbwPvKf5 z6{+jIi?shHz^wAtB@pwS*0={{I9hP5{u%-+;MhKMr%0O8mr6%l?IO4bmi1QaC&)wy zNsF}VhGmEkbuXv0*?4KW2+11L|8JN{ll$sLl|7mum|34qv2?o)&xCa@m&HO|iZh9+ zTc%aQb-`>8F15&Wt_Axk(8s)3d)cgO@Ub{NBivRFYDmp9YJzV`q+mJ$i>(PSXCT zA@bXyue{VkB;*Oil^GFvR9Ebyv?l(aD!~49{@;9(&;OsSrhWa#XKA0F|EJ6SKg9o2 zAjo^m5A9AV;-=N zgR#pOG?6ajgvaTh2_!vH5GxzUl@(MF5K1Oz-2~GdA3T#Q| zHLjZj-2$|H=PkgN;oaFWOlem7ifjBer?2bA**J}`=pL4)>kW-x3%P{V7fM#!A*J6o z^1g;4DQqhxAUx5Mb^vCfOn?Q7VzB!_ov&!QUtbucx0W(L| z(ZwtS7In*tG{)P`$IMSpx1O4Mnvc_)%imN9!cW$v%jtZYZp%H-PfqxE9+y-P<%9dR z4$a|cKdBV!eePdHYvBLOJ8&OT0HntMpUuXr{QmEJ(%1ifmiEc{|LO|q2e|$cK&jVX zxSjgB9e#z2dirH{ynZ~$(L?^%tXTFq!2xx1c7+3Pzfj|37ol}= zt4q49a+hoTT?x%J3DghE+3Liy1`IOS*Z}E-)p|H$3`akK7vAe~bk53G2U& zr?XZ5{+G#gHRDYRDBk%|7X1$>qxh3s|SeC&#m+ zm|(O=@;ijESjd)P@U3OjDFDFAQAu+7|R?o$XKi6<WE;A~}-XMLq zY0^j}3@SoT!9{5NtVViTxJg~znKx38ZAhXYc~7dPJnYYnON8za-fa0Pm{?LTH=A2X z{fEw`fbrzBsX7r~CD-gUpG*PaN>?y@hiGzd((um! z7enjoboC8ovRk9%Z*w^^GGH1PDkWD~NycdjSbbyx*0isf2PqjN;wN))B>o+8+-Yti z;^*X~M|KejQOMJIK_57U-)6=5GE+7GMBbOi(FdO1RM~9K3@lP-EXBhLEf2sbdyu|c zz{B`tUsZ)J;@VwgXS5f~JXwm;KfAIj80M=O$|-hN)gJ9EB5PV682;X5Y_HvanKxhV zB7Ses?I8bZYSqFh8rijf(vMEnEqfV_3*A{4X4}H&vm11O2tJeRSWH22Uh)`yrlg*} z6k2{)Dx(S=hl#st2~#2DG}THR+X7@xA`+0z{ojNPwh1C!0ntZG75Avi(o%RIZCPd- z@%ffzd)+%MUw)6e_>N7UY`pRwzV1p^UB@-oc*W(qEUvbeYpuyjt5{o)xvZYe5K)~y zjvZns$VW9pj1^vIg>?7-D*S)EgPRBY{(oo?|6eY0=l>_m`MA&jc$U`8|2J1W-y#rE z;Q#^2AwUa=GH%u^B>$IPPayw%O9(eI<{;mWI2rLRQg7#PD5zN0b|ZS04csGcG3puNA(FQY4@AYO9kg6B#`zWHwgB@ z=82-vNAxld0`(!2@QHX(9HAq(s6B zfLu(bj;X+G1Cvz~t3c#OCz)x`HzHFBN{^@Et6PQs*QWQA>;Lg$o{#@8=i_Ow|DU6^ z(Eoo+T?4>441M8KD;}w0am_`^7sjP-RlDe=qC)#joJi?OLg1q)Aon8{AurW&rmHB^ z71*t3ztI3&%iXL+IEDPmh5yH%Wp}Gs|2r7sYsC0aWp#AR{rN+K`d{POESLW?o{#(c zAD^W;mH}Rm1QU!B9vCSeD7}&~d50D5WxS4qpzXbk`NW*HSc=*0HUCD|h2rTls-ZS& ziouTD?LsL^zx*;x5ij0w2*6;Ag58L1kG6!|3{F8r(NNwX6a*R>-SO;{=rhsHfd01O*YD{0bxvC8G&#B1d7KpJnRasJCMr>?hznQaA> z8S-L^`Te=FqwMW88i!{xk@*xXmdC|M-%t`qCC?D_--N-v@aw+D0b=)zqur^zMyUwo zH3`Lwg~x(%Vd$Uc_U{HqYaAZ2?I8dA(98eyv-LLs`b+TVKY#x6&DWpjo+58cz(BK| zuy(VxHX03bFKeO#7)8N77!Fn8%OS%)0>j}op&lA~B)kr=#~B#jfGy_{J3TtuV7`sl z@|GwuUYW1Qj?%7<)GbxT<<2SNW!lI;@v1n;OC$9 zsK3>3$njuLE(354ae#a=`0Pq3n+h-Ad~I&Xk|5rpZ^epW`B|%B^PyO3Ip8}1=o0en zDLCTkQ;LKR;g@nfpMuxu7STPk|2C^D->r;azrgeq{HrJ&=^ABqAXb|RB>u1_ayil(om3e?YZoH$n&jm7v;IpKEa|c5IG&FZp zuhUmkPjr~thjx;A5sA;#m3S7!L=xJ6rG|&+c2h)M4Acuc3AGt3LkoEUiZV>q+mR2B2n_dTpTJY^)R#oQk?3dE!tJ z2?w{-6e)gBt1ygVxe#ceJ`yM;TI9^0k&muS(qZ*F<>R#q`LEgL$B0n=pfu1r`9GWI z>wk{N{r!*6(_HdjOggwG6hN@Swzwetuh2UTc-OYuUj{FgWhsehYPA*My4 zDBo%<;#J431-m-dH3s_u3T;>i=J~E`hy$>n95Z-LfWjD31QG-Vi4)8JzXyL}|2_C$ z1CS8zHQb>CU?I^~xg<2R2VA8{RELJyT61vFkT4g`X_ zV>L;a`u`HU*RtoKSsKuQZoO)s3*JXRfx&R#e*M4_U+K;1xxP=qe-HlK64c27VJUq@ zCs*fZuU-!S>+7qE&Op=N{=^1AAJ(#uZjJDV^DU%YXV(^pl*h0|cMS+?onF=iXo98z z;;F`*J8+WwqZyZdEDn1phF7zDmy$1k|#+y9n-zfiWb|S?2nS# zJ)Ha}+yw{aUw;xA*A?sk4$=^Zn}?qOuZ#bU=hM9Zx9aczeV*20{r{l&0l+nhxh`5l zi8`0Y;ihKcr`)7Jc?UNYQJrBtI0TVA0V4X=0upn8 z8DN}}a1-1EiUj&XDEWXB0B;HQi?n0_%hFnu_^~GszM=3IQxfh_$VYqs8;92T+v<7%x{BORR@|F(*67u?K_TUMhm~v&$b}zkK)OR~N5e{CM^9 z?e`bwFY69|Xp75a8f&lT8h=3kIgHMHSxidS*vX!HG2>+Cd@O-GpZfPg_<7FfN!KqZ ziK_Z`JWo1zJkEMAf5E(l#6H??5o-i}-!bAZI{-*eN4G)27Xxq%yde@c2p1M9$z8*@ z_~FaO-?iv3H&&YoDtjy)VtQ>m#kZGw*XNlRuw-B+ zd1u5S-5@SIJplXiFs*QIa43AGvUjYI5nyO{i|9GoMUWye`16-wGM>(bXO@~xrBDnw z*{HviH4_{YV#SqGpiw2_`e}EZqt4jY{jq24IwufaLP-mSL0+m3%Ap>80X(u>3o$E* zbw@Er00sdt*P5^(lM;GTIP0D>Ip~qlgWQ(AmSo9cX~9UOSssY|-Ifh`8E8({XN4b2 zE_A`Z_q5RwEv92>J{EaLC3w|I{$w%Dct`% zS@ibbvotAb&Vqp40Y-KR$O_e9a1C$J0GQjaB$5RTWWtKv4FKPKcLA7S3w)iFXK7|3 zTJd_xSH=95G%{eIVCi*PQrY~)sNXDMUVeW*C=~>0b?NBVD@tD{yuV)7fZGx#Yr_m| zL>c0ji0-huUPP@U2O#^^LEX0nTPMMwvXcx==lkun;BQbW{(f4u{HOR92WW%*r#$~V zUaV&M{h#He-~V}*CguN2nPLaB=}t?qCHoe4TNDBx34i64Fk>+TF++YsfuFazvW{{! z_+3Vtfmy+qNWL+!Yi|C@M8^~t=?e_od<})>yi7p6WF8EpCM>}ERApu5`qv)nLu|i4 zG+6)hWg-4IUG@7v&(bRGzw{93mN_d^!R|t;O*nC$SUZsWhia`G>7{Jg&)Mfeo z&Mchj^&dx3fOaV4Fi`dNp5*@TY5xAt>14KC_Ur#Snp*!+B-lH-{;4?ay5=_3Yug7K z^>f2DUw}8r&H@~L0T{eRj!vThdT2`mA5m}%DHe8$9qW=oDg8kbd0#A#^Fi#5{e}^x zL$}|!o^7JI_$ z%?cF#6w5(v(y1r`QfU?DV$~&P+JW(NdG_5w=|m;73?^eR9fRro5l15|IP}fsca6r9 zzT9pk8C&U*%;#V-UbPGamoJ#Ia4?IbjE${euKwBLB!kcfrWHnUk>S9gY{?sV^v82P zl~$?$A1D2@KL2x8IRCTi^FN=bNdfaMq8lX7^#sI&0gx5I)0=fdUp`WtqMvC~q0$1l zO-eOl?r`%pNbB^UhWvfH`{^STos;Ok@++Z;OFr2rJ8WESrM?{4dFr3-#OVF(>s`#a zq{y3FM3ubFVP$q_fiiuL?~{uPQ*5lB4qVyk&nptE*T2Uf>ihqpN&Ih`U;nH5w6Fj4 zEUnW2|6W$FKMx?@z0(Zxn6ZG{B6wCC7%2PbId_JBWATBi^)GBwcJ!l1LQY8#AbOS+ zG8YDXQ>jq5{#Wzd`H$&*yy*S^XK8Z%OT7e~^9=4V-b1hV%02=E1Da)5*a#i8 zu_aoqe|5iEo24&Xt^L2qo&T6l`|}^q)JoTXHqZH`ukY1sz3Syfc~$FO0dBd}gAC8= zRc=6Ux4;9qu3X;=14mcxRSgEoRfnakIDqR`i}(Sp!TQ%#=Q}F@Cg;DVdHp||&HDO( z&(e(bUp~)D0u-M$lmW?=1rD`uq&?%%M;{KsXPBd1*;Nn8>++fhj&|m4gKCu(ku1m) zvp)f&%vi`t5eL+Q95Ka+1i^Qax~w|aQ2}Awijd#AdM(3G(93BW7+oA>BscN=_4_b= z>)x8n|Bl9A6aR0Sum3%r&ind*&(ezWKX3e5Kev?nxn2Qk1c&f$v@38V!t6l$v`=2M1X}|yTEUjey z=U0B)HJ^9#aJZ>nnbmSY;$!Wyg!)S9{j?^J=yUidu|707^T>aC^eZP#LUo~|SA3g*o~0S<-#yPt9F#xraOS5f1Y9E%T*rZ2_CYz$^@c)|AaVul)@DQAJuF~f<|9@h z;I<@Oj$*E_hu9Q-`}MST^1qu8SRen(%l}zl|Kpijx%|)jfQ3gLq<$w~@B#Avk$l2( zh!6J*4Y(z~VR^5u{6o8gUY_@@thJQ?onioW^1pch$8_A+e}A6lkpHRVzZ5?z`P)I{ z=R*MzqMbqkdDK4ba6mH3s&GKFaT|vvYKE-d{KN;HaX~Q#Vru#nSXCUvx;((vd(X9b z{u^jb zBH$+0dPMy4Y`)y^%ivdvDeHAxQmHOKsN={OvP&&ST?R=PgA?A<{ss=fp;~n zbFZdt{Hv4zhKDt66no5-k5!-w5yuq1JIW~E$w@YO=Vf(lu@5wUx~+ly*X#7j@_#1d zNk0E?GG6uhf6vkk`ESg#(g2BoZdci<#PVw-y4@PWA-lVZ?q`mRmC5ZUXG=e0^tNcF zCUa6PuT$?+zi!EFMsGh!Q?zd%p%vvnfj*)~Kf)k*_|3nn)%ySQ{Q3XIeA=J?eU>I~ zcKR0L5TKCL`-tFB-TQ8o{0Q)xLVB-Ce~iF|P!B->)YWRT7LmMPD7crm7o~^t*N`C} zkmO!@a*KWB>#8Ev_s2^X9Kj&S^vKZ{;2RVo3OUjxNT94(76~Lm?>?zkVwP(vUP7fI ztCA!mv&K>ioT44X@}4Vo(|tpbFp7fv1m>?uu)5d37|`QLfSUC`n@tM$zm3Pe|Nksa zuKz3KkX4E2hZH1-TBJEM&Dd%#wfVE=dUtec*_OFt`XgqSw$f7jfx* z;vNjpsQ8sweBfsg3L7uvU~H~#UEtUwJ{k&>NQf=pACgd5d=&i@V_GQnmRMZS_esb` z;#>7;ncZ1}r~J zRDTMu@n#33y4i`~U5Mx?eP6(L%t{8GA&(;75VU%^5!_4}RSWS1w54j=6q-6~~ zkHn!9n_Ri8G{RiQLaI=?srJ^WjQ7#IGXPk@KWEU<+CgMglI=XhMIJl zz50+I8HXHQ$AJV?+o|<-Ww#cjYls7|pZJHb30GIzVjtx3+5Zze7`U)K$UA`6@!DY% zCZcQTxmc&_yKMx!e3p8H?LSRVoj8Q7TT%;06$b4-)SZTi-w}EfkpO%5Wmx};46RSJ zIqg4TBR`S@SY!W9my3Dc|69)b{J&>um4=&Ly73VTMLH$9RV#92s!ylKC8N{zFIQhX z)cotpVs*{I%O|9+E5ZeVvd8+4u<#|F+PeTA9APmIr;*e z#hh$XFF%YjA6%Nf$j{lrrIwEh2w*|6FxrfSH=pzMt!^U1xKM3B1t5Zq-4W_{>@I^e z!l6K$(5j9p@-cg8pAtx;?skx3=&v8zp$5~eOA>C#BXp_2H0sg|uy?a1F+&gSHG|Zs zV@3k{&@Kgxd}mK>;W+ib6tB+`|C!8JdHuf}_xT^s(f{VPN~zUZIU1 zD4D0}AseJ+@N0=6() z*fnSu1wwhpN;x}_OvpvetsenlhjDbnsu#JAB+!YZyUGyU_b1`>{18;G zL?UtplKGPBUF7+WZi-d4lD_C{9LpC?6Tdx<-Z=16ll<(i@_}j`qy43i|Z6#lfoJy@I zIjVi>OKzo5hOVF1;w@#{o$xiK4I!Q$62WbOB-0*S&A*k^LhDM^!&c{HY)*cL$(AGD=rEU5GFjCwPIMCL?`YN~|Ex`kMCbW!$ zOzhjt0qKQRG6hq@fLsfi{wnivDBp2`C3IU45xl<+7**18&-Krp%p}S&|hD)b*WmKV$pW3K?FGnK{DyDMA=F3IV^{=!b z%FAKLU=id?jbp)IWH54sb(tG!k6{>84|<)jdwI}0>dVM4^{GFEsBbDjGsV!Db`9mn zPs&=lJ6UjQ3YTj_iy4C3*>w*JSKj~ZY6K6Q#GYIupGTt4v49mEAw!L0}d5t&Jj zf3T>96s;t(;d_4(R4wq<>u9CS$PMwhx?%`VHuZQmPio2SxXc=H{IzV~e`MSM%2`+b z`?j?!NyCorU4I5?K@4ifXkJY1aIrLYT=rgnw^ani#-v-Cu)v+;i*hPb!Z%su?%;#FBql&8f|*xW5Y0bd>uY=HGIx9Nzllb{}#9 znQ|62f8G+j`vEWXSJFrQeC5wx$$@yns>hD7BLH%eh(U_GITM9LZ?^1Jkl+M@W}r>< z9R61Su=llIW}%{&J^c>HK#_dwXxMCvJ^l2&+aMj_k*)hpmDQ-24`9h-cz6c5u-x1L ze9|q{OqK2dB0J)mG+#9e5Eu#w-9Lf?AURS26CB?4-6CvR1-JF0*B4{qmx{Zo6M#=t ziNqKK84|}|tq{HOvoaIx05+>5Y=gH8kN{YT`U`9)WS{63_gN z-LoUzUPjZB`T0HAQ?ixFODqqrV%%IHAG6ODQhPOoYe%RvmX$KEVmHlWRl~e{FCwV{bg+J6 z&=P`WX0FQ!D8vgqLDN zf{0mjXviKxi|HpDjGZ20%RoRP8=$h4Ay{%j9Nwt%+5vhNzudaDib)GToDcC& zM^)&tBEL1SF;9vOWGA&bRqW5rKmOsp$tv`oJ)J5!omUm@vnMjjD6|NvTTNcpH?f)S zy^3|wa;_uiobCJ?txg71Pp_uj02Iq>M7}D-3jiN{bzq4FFC8#nG?to0it#&(+0%^75~{B_SVWnYy1+T@EGa$&S(0 zB;G3ZB#){U#X;f(Ng#ef)lx!Bwz19Ad+n2?+JkZKqv%vb8)DdI1nuhBIH3lPZuUCg z3GLKtd-77$KA!?MhX5~@sV#s&79%iDziJ5_jTwoqVxp90srw*K9pWTfV_dh+zd=zS z9d@Cb=C_G{)nfeFm(nMhZKsAApd<$J76>D9M1_<=xckJ3gZ*qjkwgP;5{Sj{yvy+~ zB{B35kjFKRivaG-V2*!w2@{n9Xq3QEi-`wFaIfMF^uD}CV8wj{Ax^6E$6rn~2gXvb z;(lflO#o;gUnDL97s%dr4kNCPfvAMHl&x?{oI;LAhkY2m1CXX(CW%YNe;+2T;hesP zv9AiBIZ8e2ANzov53*N66*&_qMuQ$R-;zi)lI>@SHOX74UWEz4XNit!G69}T_a^LtK4!?qvWzqf>K$)opzSgaJ0uYxl>fs0juYpY=JLmhJ^So7OM_P4pC7|5Vn9O5<`HtE&s>aO=`x z$A!0`m$;Pb33O^aAzhmmZ`8I7mUo57$%4q~pvnY)sDgj6ww$Koo~|g%yy)b8_&RLP zjv?5T+R(;2>5u3Znp0;pYwpa}m|h;{*q1&*O>ia4SBuNsk%ZV~?k$cejyyH~IYf+i zTxybOy2?DJAK{&hcl0WZUlrcNWzBgwGBGIZ=^*I*w-g7Bf}Fcu+Qmf0EH~$ch*(2? z*(tIU_sebF;c>Cd_fG9* zty3{Rl%}}VH?ZwAvGi$r{IMI?F8o)LH+%Cy+1PViN$1= zC5j_t{8Cf_hPxAKxue&kG*r;mVl&!;{&K7Dp(n}akXvx=d~~~d$C!+I4&&ljW9d&_ zh!!5ymmxrbz9ACr7epo>ZgEdRHZ(0B-V}mx;9$l@D6i2zO}OEfd9?DT>1de$b+!M* zDI~5i&|$JH>kApyF{CSnL(F2iCK;p`vjZZU4+qpUU~lbI6_Fb~3RUvTP!i!km4h2v zRZFb4BH6t31VFC9MBq6|O84dKFY znk|l`(TUqQ>%ChmdRZFKYdt5YKgvkKuVZ!QCQwM|j+~m1<`pO3ZoqcU>QO`HN$}3a zdl<%lARQwjEW+^CV-7<@Hj>4ji$UVPHfIZ=BY1H!V7X?6Eh2Qoe`#i3HFe#52(Cql z^i<{1YQj{jvU}5-P}zfmTZGt0u@=y3cX1y6Q1GGG_iMbIhMvMFqPG{wJU(+C&D8pL z^9?`XmZKK#v1DY)KoxkL|5;{xpOHruX#6e-m(0B;J*aT&4`QkShQA%DoFXL^sE}Mu zWi!2~@r(Yh&viORg-L?{lE8eSJS~P#D}zHwr8yQy~G}(F=fP22W(^K~=~u9WOmn z$@x9_7?iVV2e;T@}?;R9x$Th1@f^6 zwO1hHD1x&11HnNNJI4OPq=*;KhLKhw@G{khvfO9CUZQpm)Z&@ zbM#SL_E_%C+3o)z&~G%EV@0chmM3fDq)Zim724(gw`-Bv41EQ8q;`EPy&fih>PKOy z6+Y}i4kYF=89-D#`I@sV6n=MIPL=JvJTFt1wZpvpmAGc1v6ytIl@k-TKs?C%01duK zmvoBjQ=u;F?Ai>M>Z(bWhXMWKrb*Vn81rm&5P`cTDB2xT;!zmz#H}Tg%MgZCUwGo+ zR1$Cf#9fxBc=GXPV>Dfn#G_#Xhny~rh1Lg|Yz!DyMyklByl>yZ&#>EM{D zhCL+s(Z<)pqio#n4)nZ-#^o zNQd;X>w%dy^XYhAyq1Gp7T)&Q^?Fl-x_@!rZPnNi&{5Dq!&Im$dyH}$YucDAhJnWaf;DpThThtIgW_ZM>H-eja|h}NdAZ_K1b@SP zq16z!#pmLo1}Cg|=H^|E7g}j^V35Ml5PMutm$eI@lrW7Eg#!(P&IFIbEt+n)H}GcLd=aVPucXU zC_A|F2o+wFjK-+iX|u}eYjLW$fjQKFJhh?$UU7iWPf5w&r41M3QNjA3e}l0DV>kpj zx^oXl?R4N$9FjgpO7p~jXL2!!{3|i2}D(p3EftV((o3VxXDi}#EeC?6bxn6`>{16&!VPE zbKHKOQF5m^m}I*h^kg1C5)QM@A%TUHsvA)N0sg7ONx4Eq;?$4Ir(56(BuIJSF6*`_ zv(Nv?EgR(1%fMX}^E2DtoV&$21?zR(7|E)Oj&y&H=c013#8G?tC_5z9co<*2P2#i* z&TNhqU4|QI+r3??Sr`7Ht4o5>Lo7wOn0F_5JCXyPh4*%Zz0P_M3HpZ{Ymepd^QQz2YHOi8dC-PzOh@|k>#7D@L2IcB z%gU#d4UlDgR30`nMjQ0VsjHZ+3OjT-JoL`+Uc18Z?fUJ?_-B|M6_`MZ%w?rSX~bN} zgZD9Ch2lg?PL50^d~I^xIm;uDp*z>uGg)#dKlge6WxULVSe>O<8plZ{_~ z%5`(#{*rMXAKXnlHxF?(S7dH_X2R(>_M0y})g9rld9Hi=j7$0YAM9QB{u|H`UavW~ za0-lc_DvH1OnIU`lGOpxROFPd9dfzIVyStDMel2Y1LyrUSl+WPR1en4u-;=zn)~`N znXHu+v3(FIt{!29m$@IU=Y%cIcX?T_JY<+Z9cSY=DE`gF=S6u?#q-ys)azzVB?TjD;iFv)EYfT(9nVX3fd+3%C?v~@(43^*D;hAn) z^!Jd>DT8OOH>DVTrXWoXXuS3FBXC6i=BiTDb=cBipzX`qr2-0Ho#>8l@EyPiZ z=cfC;i==;>*h9tr+E~JV)IpkkSpLZR&@-$WEPK7TIfyW$P;QEr^ zNB%>)Xp2{NJqp z;){ExCN5=L#t&_sdOOeJkp*K#hVFl=vK#q2|DM(IIh-o%$|IB8ZqLBHm}my>kdn0Q z$9G7)La2>^sKPw5K+iMg@O1sSqB45~1_smdUjEcYftd7vmU~MAvJp?Mmp1$i_7~RH z+KT8Wu)UigCs)(!>zmfIj07u-%{5P{yoLR(wN#$4#hW0ygmF2Y38S5}o1OwL1-#Dv zt);ia`d+_C@-MfluX1#~J8H0mdSq<@HO-72+b24Qt$YcBt_5SB1Y@qze>bc@wdY2La|E9q^B0}t=kv^F~w~*84|#zHzh$ak<`0R zt7TlpDKXP&-7CtDDLpomWk-MLvD#}|DE1U2Y*kOgbiNQXv4WiIyW^@CoDJ=bitoEH z>~vO&*O!m{S-2l{u(26oBOR$=Gz|5y6%!W2-ccG3fCHfj4S`|xkgUAH740Ow(JLj@ zEHN>rxi8msSXAegHScoKp{-BG$fHv^gj1oX7dKFm-IehkeK{K>B@zei#HxQNGFP=# z)pf|vOGzw2rd7A}*;JsGOP~uC>0G$ct0vW~0zU2w&15{qr7wY-k^}(+f!Pd!rk6<+ z#(KV}P8?4>!b8T`=Q4Jq%SO(Pk%eV$(O6F=!t7{2QFVVTKR%~$>Sk{FF{b|-;A4$G zN*+pkQZYWS^4^IY**&Z3DWJeVb;LSjd+L1rG4XiO7=m3<9r^ZucnpkO*sjyP4mQw= zYpJv8v^DmN+%@(oik~yn!{rlBo6H7W`t9(M3K_FOr_*WI>=&8W!kzOL^Jcu18!mJSSW;F5C)iY-1DnX353roovL9uo=2Z=$&0*O?wfsVzgp5_@H@= z8(HFuWsA;voz2A-c`d~jowb!&SwA@Hf1?`L?e|M&NxRU(OU9;Pa1uG990ZF@E!(;C z8`9deZvM*s$NgiOs-V0jUDigUt#s1=c$LEhSl(a;Y__Ck_f+GRFKLeK;D^?ebJk1OK!JDhzwksqDx22 zmK}QKHGXi*rKICQqPHn4VHRn&9Ff&eEheKdBXI)*AVDP8xp6Kbfh%{}C~rsPoOr6P zKkt3#PsqEVUqcWQtwaOV)}W6dymawjt4sUH;`v;U6lQpi6(*P-;2l*2uH!QE_+qJ>CPcq@rH<~CLtff>_d{$WmpyP}xua0Fj7LkKGg7r$AFL?hDQ?v)yMR zCn*l*Vq>ZKqg~kbG|Vi?SS>~CWumeeJIT$AtXeXm-XkSlHeDC)cQ1zhZ{3e0Lub1r zL|l(rEyxy)+=zCZu|{%QV_y|FQ3EyS>t;DRTqrt#CNtN9jfu0F^t*>B-XBxy#x<_L z>h%2U*2meG53N6eU0Enw)=*nw%w!ksHA8phfd9l@w6Nmh@YZC%_vyjGWei(aHdJ^> zVRZ-&uTfAwVHNMB6<76DIaXkwq$+dWE7aR6tm3C}_)pEZGoO!RRQ@k@f8XKnizkY) z62E!k9Nc<6H%pv?`Xy{#P98$bmq@h(7LPaggV}&Bu9MX`#C`|AVl+R3%G8DoXUhtU zTvwaXa8=b1nYYJS-keR-jYC2_N>2{TBg&iKITJMpXy_X*IF=p_14nC7vYmT8*EYZ7 z?T6fRaq7Y1%FyFnhTJ!ooo1H%aV^7bIdG4T%}(|;4?aujbBdH5pxx_dQt4*cXD^9= zg-_);ElZwj5z-tjcE(NB;xICDFX+dvS;+yftheULz?@Xa#I?*W$3@Jb_8mv9mClzP zefkYlD>L7$CUhILNL%!UOa3)U9=Lviv`tLh^87Fe7tWOu!MluO?}9a1k|S~bJt0j8 zxI7%*%dgY3@m$uvs&}#ROw;VXo)V$Qx+>lJeu%RD@IF#GshK_ZOH)0m>ES8hinrV} zj{eC~+Sdauw~g2?thWPD%?1k4xft(QzfCfYabM0r>Q#cHj&hz~?!06)xc3$ADvl2l zfC<0~p12Gd0SNEFg-npf+xk>?xJy~38_(^QYVAra(l~A4$k2A6BTIG#IwR?kOv69j z+*kt&>bWo`r>bi?>tTO9I>j|kYw5Uiq-(VQYMxw|4%<6pNg7Dfb=dx09$vJ=YeG1p z?Cs}w)aa?9f0dVJe^cx7tT0hp6&JlhJ#BgY`<8(%Rzn}LB+VYX&LuplgstflS2zOR0gOm`U0a-GGmFo`j@0K z4(8!0pIBf4m6RIvs1MbC9z-s$pcm`5X;+^6GS9l)a#!k_s=C0<8$Nw^QRXgbSuQRS583I|(0-Li`mhxhEN08XKWuiSxiwp~J_@l}amtYUvwA*mEgH5ASM9%+&adSR06!L!Pq1-B`m zg#_phnlO=M{>k`ItUX3Yu4lF?W{B9Qci2#ay+&y6Y-`fp;DJ>4Jv&72&ox%jDe>EV ze7<*AQ}eTd(E_6fcV65DQ-FlAgHHfe%=#m8%9|aF{_JSW*(>tFgd1?@2O3)dmgN_N z6Y+?A0R56iwAoPlg{pUIiY9_{edSLOL5s{hU<-HF+iJEwkDYgc(A9-i-^gbH4n_(t z@&{%zzgl-I?0q@V5ZyXTXy6tJIx!f=CEm&l<`uK0HGy}0fM@iV+6=~oC;@MzXuJq@ z*8|LfQQRwmNKtb)h8Ip9T6vbnd+s*)sXYr&Yrz2q0V4i<{~gN_;7V>rgtQZfDD&3evQTpkikTCzkjm#+UxfeR>c4O90290EQWm?x*byROK#-@$1kDs7HVM5 zR}eYwx#daljtTaTlpl#|jAWv<<3#}loDF2qP`MGjfn9s)>~Am8>~>$D*Vhb<*UM@Q zozwSfOUKQ?$PcftV}jS`qxB2V-7UP^Wm%`Y_w%jw8cim{AS^7P`?BBnsi1j`&YjT1 z(GiC62#0^yKFO1e;8#BY!}P|2IvoZ&2m2$^yqY)#KqkT|$%{S8%=Pa1Hj?(buef-} zd7o2qXXbVM!L^CNX28V*vYN>%@DDGTF7(g|sGHF@SWk%b9KOpZdIf1gSQPNw-VlIo z|5NhQ*W>NFL9pjQ&F_&?gd}M9Mn$+y*_@<{_r5)p*{zWiAL(T_7^G(;hr#kstJovv zn-R?RI(>agXdnfy(o|r=`{g)%$&3?gHh#h=Yrw6RzuE-g%#S5&CY}3DkZ6vo_cJga zimVoLiRO3S<<{u#Tllh8G_)tpZnL_>z=-!FnEsS)uC$eL zIwUuT&!3VKau^f>2PJBjALm1oYG8`ce1v(i<@YfRa2{ms{KZ`r#^ep9ypWtQ;=V%m zD@JI2L%hRWo8lG3u_43+d$>NF&chPgtY=aPKA{tYF^N=vlRaK&sJ%r&=YQ8Y2U6@! z5P?me`Omr5~w0Wl(sN@S_}CIrcbXr3zCgEv$uQaj^@ z-PaeHCV7P>+oL$#P-T`G7obHE>&r+sfKhc1st<1P$2D6`uvIiLw#3*HZLJ{TM=(nhsRauiKbcyHx=hV$^)yJ+A>C z=3fXw2}=Pnhr%2cBAxJ%l?L)dl0FuL>qp}6ZC&pP2cd>)Y#OO|w)G8jkUanJ??zNa zsx@a2$5+Xe!tpGEiX%xWdn7uKgO%6=lOU*Je<uO@tmbAkg8&;1q1*@}w~x zq%}U7tXfd5Y!<43(BHw-u>GslmK(?WT(--SsM!t90JFg}vxZmwNCA?H%!zS?PK)YJFA#!J#0klhnkxc<{|#b%aZOZs%|g}4Cj4_M z+GaFFjH~?*5_R3U4Ke0=?=z)N1k<=MQ@OpSo&xFg-n-hcB0QlY=VrS>vXrxg!{k!p} zfvEOIox;mnJ#Ii3;)?_}>_wV0)0Y$MMJxUs*3S1E`{Jg{8-V0?| zFwRp0x2kFx9>E$t`sz+BtD>Fbm{#ST>k+ua;9lW3iX=W7{mDWb?war+hT_aX`3VKq z+4UHx#V-QYJ=hT&OQr!_)wPn8Kej=yY#^Yw;JKUx{>I_p&zJJcs*XL!8<&7hw%&J01c~`n>7wLtd zo7}1}tT!GA6X-F%_#9o>^Ssv)T(jpPR2U-mF+w9l={S+doM5d(R&T^P!SFF2Arqz4)QPu7otMZYPA;!(AceK z2N5lr_FX9HKN0+K1a1Dt6|3I=AZAH0Va&iYORk&#tA+=$EhWW)?MKB{6h=hiYOIE9 z<$}eE#N4kLlMNAo%TIsr0m&+0f*-MAWw;zKu(doFN47aL2G>SP1dV@^m!H&+|3M_CBRkPi=kb$DBF_#Qvj68B*;N z%QiPz1NPUGPlVcozsO3*F|xvGLJa8ZJ1lMl&=v~_qJwQqiQ^d^{gu>7GLK;$5Fa+Z ztP@t|4wlbxw2?9tcr<$9E@b9j(BMb$JH@0b%eaeG47^s8xbjbD5MGn)CL4{4qxw6& z{>zEIavzo0MM`@bXde+lo1`-OvqfIWqq&#FV+NRYX&?VOA~7R0+C*?^3DjR<->%Z8 z!V~3hF+lSi$&H*CsWn8(9E1t6tETPc{>Y@t&aa$Uy5(D;6?5LnHG%;=o{rmw_EWS6 zs*LRti#sCzGe#Jfj-h%H99by#kT{|n_4KAx3{2)1v8};Liz7#POPiCJ0lA>K5k+0^ zp~n6AY#_w1$Bs;(lkb9Zw!zL|^~M7-sbH0HcP3h{5eQ`mSEmSDinl0_Yy5XeX;n!2Sb1HlbY?@Km z>cpiG!~Rx%#ydnD?19eDK;kI7wyCsLelmzZsj+wT&oU%^&=(a8h7JylX*kNW^)Brl zA`%2Tsz-WMQ{=-Kx%4Nt?b@3JmV^6G%f-rWjxG8eN7&MWvt$22kvo^Hd*P|8VYC;O z9{Qxjrxwcy9<#!GhsQK-pBEr49Y?MeM&-BYKKL}qy78>+JxcX7KN5}Px3+%aYeb!Z zX%XTS?|8B!JP|FEa9JP{w@0`!K1>qzc_fOYTZHKAI9D3m8Z*(qZ91?i7U@07G*UO( z-ckNU`|Yg$;S2U3EW$!3q`v~c?(yVnR&00g?yF}?_vxE-06OEf3SFA$iRBu;G>MAz z9sknnn|i9F^(q*>Nqd`h>^sd;J8fUpn@c7xSMG zz?jNic*k5kbI79&vxrj7qIG-qReC}m4ZL1v8QCe{)oYkOI>zQ`6eE@M)dH$8Czt#C z&mSf~dhP`pJ{RZc6ywJ~Y0;+k+Sn;&{E&H9rTRVGFkSe7sz2;VZr;tZ`&cuZ*;>Zs zwo!q{!zGcj>z>t8(HL}c3h5XxXSetc(ad~V+eop*i+I7zFw;?=xv)y{w<^7+Ski`3 zqyTYxEwxBbK_sW&ook`wUvEdyha*Q-kY!?t`H^5@R$b1{b!dPTXf(%xD0FfVU51eOR3`zOqOd?Z4H@ zpI`ZLHcwOB!Ke3#-!Qq_V7k%Aq98bAgp6?rhq~>Wj(6e3?Y`gt5Y^eeo8M(5wkMN+ z+Ccf0_dyGeL~c(Zpf|muXgXy6WUbL~SaGUM&z;YqE%>`AF89`R(jAJt``P*Fts&n&|j%@;8CN0=RueE)hx^&4%2#(IFR@* z;V8^O2F$cy@}yUGPf@X&Vu!vpY(`Gfo9c7Go`jf z?L9-fB#G)>`tS3dp@F6rLqU_JIU^&%SN_jZV?-AXTQ5dK4OL!C3)NpS9eMhz6>1jTq++Bfza%JpUODs^Or zR78_^oZt069}Tsg9S~DH3Yq11R2+CC*NWK*dblDDu?u`pGn>g)4FtT?*7Gi^FmyGh z&}1a;-xRU%ok0QC^;;z6a@g+(5jh}P%&819)7Q8mKd_CVAOyGmfK+`tU{fm84E%Hq z{Fwn{0{%%oD#6#C9@vH2LPmOUsbU!(6z5VRxe7**vFAdAdNCp{K+ImK;~>UoXJ+&YM+&wY&Gtr%`P$4mHF7UH27B!`hLqI7j5*{-Vn^~J(ft?J9`n- z@5Wx$Z4a1m1caq5rv1QKR%##|9G>H}bX9`+1@JT_jLR7;3?yrQO!hWxeoQ{qy`-66 z_#bU+UjL_1(7B;|>2tZE+W@u`-8@O&r{OvGj|`WORXy;liM&YvyhI{5v9N`ScEAVYw<@$<}}i_9I!3qU_wg?316{!~K;yui=H&;qOvvVxOiHk`p~ zMN7N#GF=0Q^BkS5MMA!Mq(lQwo}ts_O)vshRn_}y*Nh7%;le5(|6!1%Kpqcuj89)_ zJ6mp=Il=F!JKF6>1ABIdPt)n-y|2<}r3Z4$rvBnPiz@F$@sy6F3OUv?k~2tW*4FqP z5&pnW?)xt{N6< zWL-5THRP3r3yF6JM|ypKE%g@GvX`(wMCK>YK}D7+fI=>h7;PPJJ6q*reVnhDVOelH zme9)*5kI4HvY5mdOVK>C)?L>A>QzGIW}_iahYI5H+%Tmn;bFrhOI1Y;)TAWAhYOE% z%Zr}Xu?iNDUbMK6TIR?HGj?k#HoGpHtX6kUZU33E?t!O(USrn#YXvQHL&pK3-Tkp- zqgeG7piiHqGf=y>ch+vX=+j@mXdu6_746~6KJ#L! zb3Nl0EyIatKJ}G(?aRV&av}X}ly3w$ns_$Az3Hy}N*x6~3HN1;8+zG_>%i38+F!o* zrLS{EEuchhQb#I&R<`~1b4GCbSq67^o&M$TEL|<6ZjPtcCZ2Vlt46x(YogzuZFE_k zo2cd1ZS)$)UaA#elm96w>RyIj{`VK)o3F(n*)i?XqSs{MFho`WTf>d4k>0s7ZcaO8 zS2M0t6Q+Ibvus|w9DJ2NzoJCZhGHiV=^BI3UNK={o7K5uH;0#c?W<{CSH*CwQ#ix6 zGHrkCL%L*MbHtgAN1p|iWfMl!vmucRu+OG}=+W zA9Q@~gfL!N&Ai4gRsXV#I1(EWn{4}2J!r~EX;Z`^t%qh z|28;tPZwh|hH!}rDe;FU(w9aIrcN7;EFG2xNZX%mds-}w0gTD|20bm+&c7VC{%;~L za!*I_ANOGd;c)NwVTeNt{?bre@5u=M(&5KKz~eI6r7Y_s1rG4Et&VBpZ-yB&%70t3 zTMfmf!~6V<4f`6I4A&~3{%`K`HSByz({1~oX-(vR=Qs22r@s4x-t7z~dTal;KYe~h zHo!yafBOcWHLn0I42D)ag4fl?S{zcM%I%fLTA<21F^0NBf1`XLFGY+;F~bn(26QNp zbbqkcf@G(0*{P2=CO1n*4YdOeLH}Sq>fmrRgyex)$HEXkM8f?^hO$?%STCn6&FYv6 z<}>C_rz{_j*xv7PmVtHU2OmR$lE1*3{~Lnm1w77wZ|bE=2ab#j{-*yeY8-m0G#-3z zqJ97e%~O76_tXD8+v5Mw92-+9XY^&-eQmSmP`g(UCtf_QW+C)C==qEO?9keWQH+hA@^oPhiLIU&W zL6{V>0~(}!g`TY-m5h@y3MBFqE=6$;;%> zC_yXodm4RKFiRP1>w`telwwt8Dcfnp1)f|GL%Iv0V@5`Zz4Ot=vu*)S2~c^Fhw z_sSMR&t%rQ%Ht&Fv~}|$QBs2(Doth>DXE9}lcY(1NR$+5pTk3)Nm-WErQ`0iawk9M z1S^mpNxJ$Z2m$bs+CUz4*P03|xx!^ZO5oRsc{O{KDIEgtiA!H<133Qsnyl%i&2PA5 z;)QyF=(1X-HvZC;2D6{wD2uSIRdK$VS{7+Rs!RmGR>e-7N<^J#!c3oI+!74X(`NLu zh&RS(YoY+USAp)!#&U zUs4{n__XBe9TTORU_Z1d7SZ4D6{EIAqjt>b{$&5+MC2r@uHnWjx?G5Za-G{fQe;7p z*bP&ea#zjnsRzX%HTUGY<(KlODNQ4;3LTH!XG$BOtL+hsHP0=EI|znRiSOkKS~i9T zCPoO=AWU~;_r&QoBuNMjh{^7IW13k{)qz*0e@LsTiu0uIzkPN;GM)K2B?@0=B$=U*lUS-z6I4y{}P>p%KM3T^flRWJ6l4O8F77s|rK? zFVek6a}!+C!oISIXIcp_W{Tm69%d-&b|Ll68s|1WS;POhc^UppncBN%Zq8+1I(uV%KOt3>SnNkE!TWb3+O_l5Z?Xi1&dA{Aj^B zh)*~L04=dCaU>Y$^=fvRuNOH&lABOHxv$z-=2T^!;OeEhTmVJs@dR~TvJzZm)om?O zser|%Kxns&w{Gy9?QdCRR_PFeWtve9E{=`N`kh3=$tLxwPYYj1u1(VDx7E~3a=L2;6vlrlIGA`SpDq_W-mBBQR( z3}_wR$$U;C#0tf9&IV#%Ne3nIbr7ZL4s%_pB*D=92y8so9$1nDnse<|%lR?Wc_=2> ztAC?zp4{B~1q)+It#$M3t6V~IBSE5nQV_yKt&hm-lLMr$aTC#vWF))HZ-nIPt`TMq1uiwF{}{w5%SaTyj{qZE|%x*FIzwq z^|8e(F5do@;Skzgg?;^MMNah(X4A8`TY-)9@?G#CuO(AMdCZY-=kv}GuZK^I=?&2| z7M#tDY*)uv<}-V~PoMZUaKpAJLmQf#Oe`Ik_}Ihc1AYzDn>3pm54o(QE{lP05^oIB zgOR3&5A79Uj+m_`u@bb@eCQ8#AxQ!OMvekV673TH*Ka{c@%|!1e&OoHk-k3u?(Xr)sxLPTc`#@h0YTArKLVW5i zFB%cPvx}QN7|}fKaviI8QLP}k9te>kUCW9X7B$!9Uz4lzFPz(CywyJ|zzF5(zaCZ#NAfDj92$I;VRbtT9V4V=a@Zmph*3=x~opB^uC?7`7HbP5YDaw;d6yFk(G^7}kgyKgS zH&##^e8eX8tDXAo9*u834si^w+-1KRzH;(rkR;QgqU_v>vk>^{! z%V-W$i|5tNr<65YR5SXTx$m@A+ySRbN#4U^q9dK|v&|qMyXR1mPn&0@LHdxRK+zX0 zj*G^if^--I9eK51D%L4qlwUU*k+?aJSe83|6vB8Z9P6bO0bc#8qt; zmk<=5Hg80}>NB!Ta$Cgw1ks2rSbI)tcbF_EZZLJ5VjIXC^GgEy@t21s(tQyd z=%lsLkWh%E$w6TUmoJr|otB(c-*_$DjkP=Js1ABDt`qqxCV_5J1E4=wTIN;qIX$~m zI*LtgzHLa}hyLXh2`bN(qM6}d{*rhzM#Mz_o-{6{9F zax>~x4V@g#H6D*2D?c86a z3_0-nt3qKK(clq9{pl5c4M_sb`N|^OdJv%E968+8+SHS^u-?bayz%;KOsEtFc`8YT zq7aAPYVn>{5R9ogm=mTz5Svy$_fpOsNVH)N1`%%cOaiP{i5Z>v&A08XG(p@s$9oSB z_;ULdbAh7LyM{a!hBJl?h)OCu7vb~DHz_xC7TAJF)i+FvbG7^=Sr%g?Ky|rd*{|ZdL|YM0liq$n0w8kd;xXz4a7T2LR;Fb}NrGXT!8I%w{WMri31)H7{@_$J zURUmkk8{QG>pz5;?VN#sPL@y)RQ_xOQn>mZ1_TUodd;t=7{YPIxM6K)_=sGn(YLkq z)JuCfTh^{Qfd~QAtr#Py+1POT9U+QW`4Pu=!8)5VkEh83FnvRhL97Rn8YnIOG zpqmC5?dSe_88QZIo~-XocfTL*F>ks5?)Ee!>i4XW;lM`R77x|1D@$+qe_VZIkmyXb z?VPb~p0Q`n*tTukwr$(CZQHhO+cS6WSM{oHy&tJ`y1TMdNhhi9wf0)T#JmEIDKubt zMZ{!%(oSW!@^&F=N`>?if<*)%h5=mYrezv`9DckS-{xXm;+l~QrefAX%W`EHbg1+? zo6q3ST7uW$5x*8RV6m zAavF^siNVd)Q+qw{w@R#k54CaE455(U;K+DFt74rW^4#Alndgv4R;22?blhGk(YIH zt3z-_Vvo2XhAHNzgYAR$Nc<;gQ)fGUU4U6|X&}i&%x8g`yyMw_Sz*m?nNdu{Bfcme z5XThbRRGs-?cdiHAC9xXo0oTIKYI?hQbEEb^i|rcFj(n8#xv{;=7K6AsqPnQ{%DTl z?|>dY^s}v*e{%ta(6jTU^Zeb#5xp^v7W^|)(yL#u9dGBNP|x5-%AWSBC#rs2CwLdy z=y_bnMbHkp6;+E_iY!~We(-iZ)4$ET)lS2kka*M@+oT^?xgK;e-2L5*Ouy&;1g>0q zUJ`=aq~p~(*GCH7*qZO2-FGnm;CnVDKs6Z_Y1%K{&PO*!L$8D=Mfh;1n|6Mv2bhEt zC5c#$=fNrZXb>~H{_JV=Y@q?NZcAr^DtO5Y#jC_l<^D)&sap|FFYF|zh>I~1nOVMjcpEEmji$gVNp zI>n7=sm5YCOn!Pb<1~g1H0kRSIw3{M01`YN-A|MHfD;RC{EWDnes*%5K<(zds80Y; zzE?@=4g2152mCy2nu|3OuKsH(q9)6MB>+kZ8*Ka-LYtI!qglmu6izmPM5YdNn_}+=@)JVz>3eky z;~5liwu4tlJk{tKQ)!5(;`O5a5y1E|I`CBXOyfPk4ASc^w;lwMMympVnNn2-)(Ps! zte0+SC|%pi@7Do&nm+Ub3Lb=<`#{C@()*g%D=+9xCm4e$guKYGGq1=kRK}Sf255fk zT7J`O00_6QbSFPUjty&%ejL+*%~$vyH;w0Q$>~Ymg$cLQyZ7+-c(7bYw3wRDx$05< zsk^F_z~MMifO5v2$nB^6aLuAwI;#ICf&ztQ{dxZ_YK8sP%%LaTsrSMRtf_?yq1hMp zPTa_;E`bRJlcJk-33d_+-BPFztt9vw2yJyA6)F(~#i&d5#T#w3hVhpw49|m_x5w9=4bohLuUbwdGvJcWNY;pH&1jxPgEc&Ir(O4?UcWk#JdkC zeOq5>!?8&Y1=rC}*}bG=L3 zAj6puZTZr5CRCT1FL3+$>Vn#NWn>KR&zC8gYU9WQD>`8~T_1-I0CRJz31;w%#RB^p7bKsdD*a(<`d4)hsAcK(eU^*sq0XMo$c@9P-L`=+bi467LU5jHHorS!>;N`NYeuoAWS;AK-_hIC zh5-G|lLqhdEU408MoUvrYu$<6ua5+Gp^(_8JkDhv^cWG6D3N@6^#a5k21>YoS=NIq zzqXc^}%{PxbyjQpkly9s^5+Wa!f6vM!DbiHP3jr1Ik`SsYEcum4i z&)4(*`{&czfMQA3FknvP@ z+i}3KPeFNKLrpaexK3i21;c$YS=MoXG9n=#O#VIUNQ*Bw$s9!je|xUS?IKSU{cPjsCio;1dI8q5%8hU-X-(6zlC4$J~ z`8mPu=6uU+OW{p~u zIbs`R<=T%VMWqI0stBV%uLOX*Rn0u`oDEs$ty%>FZjLb_Xr2A8qh`u_Bo)*bBmP99 z&PYlZ@S3Na$FRFp@WmuO*_T+Ds-HkX2owGs zY@H|D1gjEb4k)%i>ctL8uufJO5ksK7>A5CdWLa%(WLmUu)kc;?@N05%gXU{f>X=@&0jiOh{@zUqzE} zI_qguf2AXboC%j5dI|1eRdrC}3DShqu^WIzR$d-aZ)|n~NEkXevx_!AhtZB|D6a}v z>uBwP(t|A(NlE^d>xm#EF;$bK-578#vfm{$rrx?;9Z9mXbR8x!I%Ljiko?zx*2*~_ zb}s<1m5uk0E)l#;2>DS;&gs1C%4vl@y~45CNm$xE1jQ{k%gV6B+N)#p``Gdkm$7js zqq|*+h;-yi#8p>qme48lbRmM$A;)=hM#EyipPf>hI=vSKp`oa zh{Fbl^W*OoGC4E6l59S0a&K;-3m zTem>g5{O0(1&z~hc@zOQ2D;rRTix;z1^{wtYJ)JCuB=`XnAkHBPB0`pu775n+>{T4 zyQ6oWDXO^efco4Z*j7wz(C%a>^ZXq-DaYhlBF=wtgs!z(O@eY1`g`20t;&-$tq$MT zEc;q(!n_ve_n-Ams9Sh8dRKq|!+&ogT`_EVe;LKYmcN6GLt(_KNFA^Ap|h zAtRw^oE!g;)rcUngV9m&vF0?(uR?m|vzx=+RfP%*gMBdN8h?EazgA9KlV8wo!9H79 zNm*D2GJkrKQ@oP`@g~6zdC4O60!(69HwZC#TkI}K*@pOAdWr^7FvW?{~gu z-36r(of6S9c=D@AMBELrDiNo^&QI#?22c<3g3|*o7KyI>Y8DxI)W>>UFETe zxjG?TppmN3p8j$qUW3p1a89^5qTSl^MRDpK`XWj(e7dlM=Zc3GKLnN~3SZ8a?m!R* zwT!8AHH&*f&tud4saHBQh&?7m{&V+7_mKj4Uj=fo0bLYe=Z+fuUXYkCJD+ScAqm7y zR}X%tYhMm~u!U2!SC|Zd762KyA6j58$B_iTt=u=1hsRyu+Q=D-BCAOkX4(z`*0P{C z{2G}iFtCO#-4I6v$5@QnqO0(EyEZ&9ZMtWL*>O9~xajuWtVt2PRl-;!DZ7k}w3!|m z4y52wReCgCZVrGV1nd&N9s27@Ic-!Nz?LFu{~>S+d(gY4tBtN~d)eP-)D1lr!7vH+ z$Rr$*COEo>JX#SN(g;{Z?h}Fx=1xOU0#MSIHaPpK(rI7gYEb2|e1#DrzF)pvrRb_i zva!(w-XfxuRvQ}!zkrjT7Te4%aLxg!uS1nZriP@{cF@z$-=S%O8CFKBbC4kx9){3w zo;3I=9S<~8NPDe6J9C~k<;jd*&1K902av$S7WINqv;tRsKY&s2hH_Sf!LwHRbPWs7 z%2pH!dl9hfHDbegr~8U}Vz&JRD_m=UHc&5^KIQ|2)@`I7T53IZ^JKF@Xhw8$Nf&{p z#!W}OO)`5K;~9~Aj$;?e_L?i3qcWcToUL(ruSvvh&$V_Y;H3@+>1{{FhDJ7rN>a{y z?i+uAqyXexX8=%W^gcN&j3ZmD&e+dgOo0H5j&LexlHP9#mFRB0{X?fi!5kW+i*2{ zy=JxcM6#SVJMl}$>kb`yE9r>`kF#Q+=xZYVJ20jX#;WUGs$pB)cHr&qqJ$f|e(5C!I^c&AQF13xX-AvQtIZO9R zZyG9Yi|mGN`KBGO^`-?**E`G&6VDm;CzU`dHgz%7=xAT3C0})S>f$cy-bO^ z7(+m4ST>GMaj=Q$%hrtRUhlfTKTpSAJfdP4-+1tM8RQFGGm-8O*h?zOYPc($3Wn@c zBqBM%PC4fhJRcS{OO2x90r9<`#N0>TW7EOpG8sS&dp8(xHDHCWj^;zZT*6kti7 z?@5KGcz`050VM$fApc)NMGe(T3^oxZx}|Zv;|hRxeoty-qT=F1Yg3E<cvtH)WUABJ5#*5EKa$PUX{zBFMZQ2*fmQpvc;-!N1TN!*$TgcDR8$eI9~thUq%5g2WA)iQ1;7GEb2B4k5=gpO6~^WbaOPc zpJ=l@fDI>o1>L?eW=^U~z)WR+Ym66{#(BfA$nM--+TrPm{ zv}GTzVaK{57|iA8A9ad%d-2)g{+Vgp@l~dH*tK-H(}Q0zyO=&e zvAu1P($*?IAfu;0=jVC9CY|PIS$)7aJay1>EKxaiZGdrNS<|-2&Cst{K^VU;b&yKx z&=^Km4`%--MtyGP=W2%bJA80^j>yDH=W=bD_nKZNUgF;?oaD%Nn_Fg~TRiItrW>Jd zuyu5TN4p#glD$LUwQ4X;!NX9{VoIpv@;R$HAicfTgoXwDUsA=?5ts@vq8{bTRbCRs z$_jS>HQ64p^l*ksAb^qUruMB5?SSOI6D5sL zG`Q^{T~fLDcBBDht9Wr5dbSi1It)@9bY$iOjxkGgs!$ZNCe(HpMcCzD8a_osX*OV> zS2}2{<*H*xEv^_QyS zxM=b@3uJKyMSIU84`{ zZVkW(CXIT;25W#Q6_iYkw)BgG3zxed@7i^+w@uAQTy=5bcx`x04IM~6SX{iI0Esjj z@KQg>8zL8D=qy+^Fo`T?qT1WAcJpto515ZK{gvpO1}6>XozHR0`zi|;s}>~X$wX36kBGr0xZ{f zKg@acQ?Bnif=iDjTJ5n}J%)sapub2se}^W58Iw){g;MuEA=HrYp4xtN00f9LlhGp_rp7dqMPpqnZW&%&h1ANLquypiMvJMjG^eQ~lGRV!|d3O2`xMyITKqKZ_4C6 zro3Mb+3BT0WlLIZu5_06VmWU{cN%dEfzBkuY}|W8KH$4E8~nxA`~am2!W2fiW^Kzx zLGv$EF$OzuKU4NRUg{kW56jU!%L{Ay$86U7Y%Ryy6s&m`01hr*0RQhQpz%5>Hn4`P zZ0Lxqrq}h}Z0z~yXRf{{{aMJvX;&Y5zrlDdJ`49U`@w@|$YKudHXW&(R8yO87feeT%~}M^;KRMD%x%Kz!u;Taq{$La3K!^w1e*3MazXq9Ju@%&dmz6 z!ax0zDMk7k7|&*&EGZ$%NE z)1%y~BJZsnD$+pMr>=Mb*sD)xyzTo1!8nUdN#ar~?ZRd)H+*Gr)00SE$I;h!)H^lD zI7hPW?GH_g>7O{*10zllJQGO8qkR2BC4#=B@x|mwN#+NuFzBF$04*^`gdvcrAXMyy_F217Lw#JRT}fwt5VBehH)>R>!7 zhcYv@PGe#c{}S>fa0&h~M;h;D4_ix(X3}P@42^bsW|69Xv@M`^?fPeYpp=w8)#<^% z;|Iqu6>gVcNDxKska}j%aclS_wb&J*NOH~oO$H@52L76-yO;Vk<5ltfu7e4YV32Tk*;e*AkCGBP?$DH5_+RXMgrI-!D)mm z$eq~;|HAA9c`*hpLjH;E`@;* zJt(N6#fR+i`wD$hn5K25TUUbVO*E+Nmd~C2@aBo7)ipQCUo;T+h6TLwp!Ita}aEIPA?to=x6Etl-_aWL|a$ zF3E*J;YjRFLrJsrvkZZs+s^E?EJTSK11${~Ei0`WM`0$7X5rzDq^Y2Bh2*Wf=F5Wj zb$0V#_4lSCa8*fI>v99DN=h|_xP@kpz1`w_`QH9#>C42&&pH#Qt3+s5{Yx%&-IFJ* z+z*@F?TwPKed`X9<=_m5Bkk_yh~*o_+c*a|^d zl6FNjrL+^6j$DaYW<1AsWzV*HRaefl#0=1PedYxG!+mYP`GQvN0l}FEp{HI3{Za+$ zD?eKE{#l~6)wc_T%K9oj{h^lqX!1rOLhSX@2q&MUt$RGjSooI;iT? z1RxbfpnqE83|FuVD^iNxxvhu`I}&wl0sQ9qXVip@-39y_$MsBdUde=VX#rJs zD$=bB38>KL=r6H_Vg8GTS!04tm6&KCJS`4%7=W?@FenjZ0rU}2)x@sI1my&nDyVZ$ zOy^D@qHzGmC38ci!xMn|)Nk!z`I90*^aq{Tw)h*(er2L(bEG*6OR&vVp+1AxDzY&NSJE{mCN+TIj4%Kmli@x@uU0(x&YQ?}r*- z|4si1?e-o}zM+m}dAWVE$Z?PdPGLTNuke#LjW&P26Oi({#6BAPHQsK>DGAZR z#ZD!BJum^|ncT(m;rzV6HF+5@2?+rM+wpmLKYBV^i}}1gxe@B_9?J3Ne$CGMIu$#- zy`88&&~g~E&nuzN_?3zqV0+Q&!(7#w#zM7e5BC3zrEZXRm>P%KYC;Y*#KMl*?LqtK z&*x}MWmA%j^0-Rbvaq?LV06h4(6YL2j?OleGR6qFRg_A@ck7g1%TJfxPQ@D-{Z%+EHiOqE?lO+JZenK9_TAE; z_Li>XsWb$wF|4Oj`6$+$PAEaEzN8tPMdYU5aoYm^_)+%`TRTtx1$?5LHW#{vp?bug z{IU;W^0#0DUp0A|)$F7EqfX=KG6iG4<21c$A<$U}e#vBmd%gF#tbM#aC_oVclB6qoEHA}woi?W$)Was}_E!b1B8nrJt11AVO5nTrvPa6R!5 zM@2JSTi0&DMR15eTsUS>J(oHcG27S$3U-NWBm*KgfcKz*jXM$C`R18e`LJP`_Cc=T z^U=v+ZXWETC=KhbZgp2M6E$MPgq@cGUQK`KE?5hX1qAaAKm-DZ*?ma_akJK%F>rs6 zn&TmvI@VewAMXw}shHd+ZLE_pVz8-Q^tDS-4B|UPUNywxkoP>RuGJ9wt(RjUNIW&FIT^&5WtHyme z_IDbK7z!uQbOGQhse4~p&1)2mSKu?ice0T-+UzqOcOUqL6>XB;5B>7l#)7^|IqjB$ ze$wjRIADW20H;WOJ*kbhy8=Y2w6jDmMxg-xP`>%9`^3DHif$E*h(Cl3HL>{=#y&Wt zOR-qpJ8dSxpN6CYgxugg;_nDIwSOBA^v64FG76D%F|kow|2eL^;SEPwhg_9OMQQk; z8Y7xG%Qq%q2(>X}Tgsxqachr=20FF_W0{^9y~lb8w>6!QjNhc10U=Xq4F1+EgU z`AHrbP0k+^#3rRE)V9#s%s!_$NQZS~JF>#tr!5_~M*0J=TfxaAfFGH<+1@z>goakQ z4ur$YS-A_QN)PFR4UhC8NT3|XUjgmH=RTmCjg816=LX#5p&83HCp5Gmxnw34t)Kf8 zcohqH=-o%w765H7+od%zx`^TTFEI?lcWuOO=6Ph4^g&O##L`R#ubI@+>XqfwcaYf| zWzMoH7E7mDY81~^>s@eKeg@WzmxUAXGANql^gR&c!=wOCy7*}>hWL1Mo@p1eWiic_d_yZx@qGgqg=ihg;?QjE7YB_4Rhtol`E*|da$?IBerT^j&Ty{B}J!`a5~u^tF1fBv}SRLL8k;*fQb(?#?QFY?gMlFDlp(2LRaq z^*4SfudK~_nDQ&d#6LsFdwk)cRW*=_ast3-usGB{$XGJi8N-cf+p0p~Cvdr8MoAcTFh?HNURFkl3bq0xd3b& za0h&RXiAO-EuQp)`31)|z{NU3AG3@t1})xZh~x}fcYYdINaZzorx6m(;=#Vnss7ux zK{9B7UCXygWblUHmYju}li>RQ7#l7N|ce(OY|{e2H}JoSk*9|Yj;`{3wjTnA4R;7jp) z?0Sjc%1iu1EjqwIw;6i8Yz$Ivqcs*5GpB!;RZuL~fAGnV)^;JdNWvqG`ps?BIRu^v zgS!z}f6^W}(*MypKIK`C$<{M+S%_mI+4sal+6bK}VCA;COfY*SR55hB&^(g_jTAcT zZ)tJ!qGO|b+#YXV=T8`j6?LdxR`wke<%u_`FgsLLLo@AIsEhoGt-PP~Rfdi;U@ic) zl8-TU3zr0YC+OvbMVfb~HrTWhHe36v%GS1b{$h$+4NnIz4 zqTwxwvqS9=$4R$EAa>il5kVD2X6(wdq>6!nT;)H4vc6#zc~$QFDekGZDK>SCa2t$$ z*|ga5G=-HPM*a!Qim*W$@P_HL`QTT>sz(<#Y2E#uhclI#J!UzAHYB{saPO6=9Dh8$ zuBHvR`K@yryUYzPA7a>=tZD4sZ$Zp4U;d(o%8FESXH~DLeXZAffHUaluppJuQ@kN% z>3S~(`NukPN~N>~9S&%U7+EumO1Lh*9ri9Wl%1HmbCv`~FVBs^qTd5b0Cc8s<&>!HfA zv(Ceu7I{#tmZ&#W%nfZ%lhrwWbpn58~BB26kK#74aj#W&02WQq|V2eSglL&W4PDrdfX zt?S~i|E=;pgr;Qg7+q+DX=a!O;|8M(P3tk^9#7jL)=0kq6o=4%IKE2}vK5S84@b=@ zuxVPJV*Ace;J@F@JT$4!`v_zSRE43G{0IKph12aFac|orWV_WSv+OUY?V>@Puc%L_ z?6jXu)w8evAHug(KBc+NRXy9lk#dz&uPV|(@{FgjFHpSa&c8w9)MLR3JjzEm=$kQa z(%!D0f>~crZ&=`~Z<6tpqyBdLI)`M5WmANoM(g0cr^!#X((Qt84)F@IWv7*U#y@gR z#mzHb%w1LHfHD~>@uN0)QegOM@@mR>ZQ*LkMsd7Cpht_813Pz*l2$xebf;xMooUm? zD2C(Nxc$z^4?pqPxTx+*qtx(hbiS1_#|EcXcZSmAlW8&Qpi0#RxjDdXv&SB{lCrn& z%;*Je8jL~ma)%?d5>)ur-xjH{^B-9Frq>cm-^II+{Rg({}h`Qlg}_+u@W{R;;o_F=!yIjpr)GF4FjimfxXK z>S*@(BnX*UAFP<0u+JBptZDWGD^~j8Up}`<8Jb*u zpK3Oa^cjjQtS&Ys?CkE6ZKQ<@RM4l6grWiue`WqXJ?h9Vq@;C572}I#mzNe=g^2M` zIT4;s37-ZzQsiV&;6zd6E@WKFF*Dwli4fXvjCaZ|rP=}T7{Ckrkd&xms?pp1#lpr; zPycItf>H%fMio##D{hB>)NQX2xIo7+*o|GbGwL!TgV z+ZK8Rw=8u(uuTrc#r3T><9W_-OV(|?7VkB{{PPEo%-bsncYMmnk%MfiLHM+NyYP}{ znUUK2F1;9}Z(RBFdxUA>@%pXuRf}>h!-tGq`?FRh+Do4X{kHqNR>Zu^<8A==apr3q z=6DFsuosHZiW;?f>fCOGv>a6=W;96iHE(u?~U2v)Mwok zR>+D-@$4cJ5~Q%kttGC@`M6n!(tssVcoZ^YW0N7T_{=|?O)yP!z^%!d-gdq3Z&lQ! zu-**DXv>zM7V)d00ZmA$A-pb5v=Q_FX?Z>hmtujf}E z9G@bGG(u9!mAW)8Glo%H0Ih_&VmxiSy2T2#!-$!mAD{0Rt&@H=b)9@wv*Aky>Wvzv z1yJK)p+UukwR+cLlOMHj?dwjDa$ezq#UDQ3G9*%nEQHOuqdOpffWvp(MnE5&^P zYiNd8LL=1!x{CJ0rT3eJucqV%vICka7+L`eVYjIeg!v7VCjfdR=2i4(5ik#f;9!$dfYZNad>lH-DEJ_rfO%S*XhUZGSn7 zohBhDGESWGprt-OoL@d?k0p3;mps{0Klk4E`y)Kc-k)_G)t<3UO>9}?%5c!t9ci1^ zsjZva7gQ!l_b5`x8L>7Xn%-JSLxSDc)df8!qD@c?w%;Mxjx_{0rDZmn(vvwPA7k`zjyr!MnSuhfJ=|Dr0r zrU@X;1({FS889`*b}3)EB04#&zIo|{jroTyKcZO$qh;vGaWbQ*;`QTfXC2#Vp;DHv z0F#n0f%b?+0aOnEqMpA!%=EO5pVVn8&~&R`6b#V9eWxt|XAYw|PIarh00Jll1)TWc za)yBI9GHFF?S7Pft>A6d!1i#y>Meh~4DjIcd5hYa`h0q;7o{T6;}GT2}cCOcXuIv_4k((05tC3DorDZ@@=RPp>dKQ9N=amnp|pE*NVU@@(%_ zC>1yFPB2L=1?uh#Zv+{99ZVO~5t_J6Vq?cHjD;Khg%}B@UN=P~q%y4hx7y;aLmi6i z&77g?0gGNt-#nVCzSOY_i?LLbUX?cO`Z$-RJ_4@_F^{8pnWRSBS@MtSAro-Jdc}pf zm#5uta?~O{UZa_>Sd}#JI|kwtiOnR1c((ie9pzf+WyTp*ds;;&t6gtZEA z+LSpSKh(D}tO;4c zc%2Y82K`YZld{F$Lo#zlJ#VYO)wi+syam2nGBpkt*bMR|Y}W{yIcS)OPR>(kI#2SM zC=0n$N~|09I+9lZ7Mvsip@H$=5ViDN_}+#gmMd#E{#AT&!XUH~;CJ1z?2&`ptpdAI z=6Bj?qQhl~=_t&yE21n1rR&Wq?E%!7>pw84G6CN9+0e7KCNf{79$10}_L_@i<6ya1 z#vp1VF1o+BBS4R^8z3ZCD*T0gmYLvya*ro^CNu?`y4?boHJdw)-N2C$q?ELcTMSk> zs-w=)x2Q@c*bw1xFK%5S1Rn%3E&@#7SZ((@%ty|&kOw*VF27Sd84MV^_1AE00{CpW zW{cv&hKZ8yo?#Xk4q^)&y9=-*A*5pnU<9gHflvrli(82E=IcAH-n}iA`f(#j{~@T4 z=ajq64mVusVg+I|MZ%5Lwoi*$WVId#w!N(vn6-o1tvB0rfcrV5SCz3M(XBE`N8_!Q z^Z>E#pT;E^^mp9PYJTp}Y(<-%N_ta98Zr^uVCVwt0jt8SqD__3hec$yDXg|h%|l%4 z?ldZwC;xpbi_2#}emY#eQj#!Ak@IYSwj3dOKS%_#TyyqszFe)s496J_xLj?biW4~k z)WE#Ea+5I+!7nog4md0|+EmA}!c&8uC62Na@<&vpj&Ru}h^TYo)lM1a*;1DG)ylgDr&DAaWXC9g)PeaLk`% zEK|6}a9a5>dIB1muLKkSfkVasUq5c=pX{XXD?bhR%5v?u%A&_hF z~u!R4#X_yXDH3lYePvXllDy5K#- zvl}F=njl^Ay;>f1jmpYN?CBgN?GNhAb05Ef$AcO)yal&a0sNTH&&*Bn!r6`Kc-A1V z>G&Gh6mU5^s>c5H+YLZ{PUfNbM3cgU42GgJBYi}K8#5P}X;OJnedQ>#7Cl|Z)QM&G z1CcQXyh~2E2lK}S^pp@~a;1s6(_yhm`gov72HIhA-J=UIj2v@0WQ`hueJC5iskg~z z1{=h2&KMQqnf>t5&E#X6HD6dDTHz4{k^V>YK{v4bZA2jDm()?pab+*wJkgA)yeF1Q zYJ^et?Bv(8i?LtP8u>1XG&w4;EoR``VWabeZ`r;e$=kZrapI?dnBGbYIMYr#e8)U1 z&WMmFhV{ZK8;8Z9t^pfsLb%5tv&_Zo*Q$X!sWQaiVC3ov9m}q0nN2;<>TqRCsV)3i za-@-zlbi0=@-O#`d&Y+g?7UY~GnD4$-GhmT{VV6ZJbPsCl`)QIDVNI1%h?W!@V^mP z;Nj4X`?xj^$oTdopp+JV zhrW%C&Nq6Y@5pL10T`Xlmg|e$2G5&EjpVfqm+1>QZt0Y&TdD3%v0dRSb$+;@ZrH-| zHpIVceqd@&oG<4AHNvx>8RfDX(_7!7R%%7zYCP=kQ5y+^)Kp2oSo#@LQ_-Dez68}D zUfBiKT;!#?5h5TDKBz1`rx-JR388$Ab~hfRFE~&;O;Ko}_fRpZnU=1es+sC{!S4X5 zO7(ntp0dcj)utOLf&ISyw1s=cE9KN=F~^%1bXv15`#WN7O@-SRuD+Tio+RLK0HL-I z5}yz;k)p*c=%HKzYs3=5elS5i!5$F{L-y9Vtt1oi%i+>XIOy^If$;bhZoII^@rT1@89>QTAM+9wT zl9MG^RtD;tQ=7IXNiy^6!f`nIryUu(-o$Ms9Tpa4+*5*0WDMqQ+zRX>B(iMQ??@WJ zGQuE4DI4z_=MMFou&!yEor|oMoOWqT%sW2@BRK=ZR{P*&s)}09I9B{;8E1}2?x^t6 z1!L2iCZ?y0y@PKv^LHrjbaQw7u|%WT*DkSkX{?;1?BL6ZXi^T9z8?92k*ZI|na;l! zoHn~LDNYTQESS!`%R1s_fxxfN2`G88V_y}KC<*BJvSgIc)m^GyZuIv45m!K1m|T+F z-ccF4kg2Y2gKLVw8CY3LMyYs<%b?z4c=5L<)Ocp^jtw@JWSx=FU8l2KjgZYO7M z8usr}VstOZ5eNCpVELOgVuhzZUf438FIbM+tYnh8rNrPcQPiznClyx(On{t4Do~U) zLFKAax8h$@V>F58YbLJ@o|&_ImxNve4fYTlff_I3v_S=Xw)8^%^iHE#PAonIJN zPL{i#r)&oT*VcOVja{ zEHf$R@uynrLANsQ*yS>Dj&;vpt4=h0wI%;5V^O@TP9Wx3xDyC52x-ahy4S_MIbu-t z&nRf`xq=J8oqLg4@t06k@c6@I7PIVfvO7lsP ztoxd1Pfzd7%&0}SP0?gxMf7pOCt*eMKI2OSb9w{YT1vdfutw~d^2m%7|`5ikK2($ zCGZ9gN{*-46#E-GIbOPQ+gU8LY}URfg7MNY{c!z7)<6G5<9Rz<-G(N!yX0#J{|qCe zJ&cVb3g9YA90Wlnw#0HgXcCqW2Mbb?N6iE0Jm*4qbsW&wwK@B`)H9cC+%Jiv@#)^> zLU;`SDXk**bzfII9tk_4M6d&;-SZcGxSzpz^{i#+Y+nzb7|84Vn=Oz`mn2@ z!tN#vJ8AqvF#gmHi25(-Y%da90DgebNpUnkXBJ%J=o}W(u%zSzj$Do?-$j7siY}7;$$V zqp8mYRaA9qB)ZQLmLQa@EM?n@whBwMt^~e@vJp#E4lL!UszvJ=hj}Kx>!~>_p-HKY zCDm9BgrhdvrppZjW?e%xYRBDz=#IN{_O~MOYs=5POSZO3mII<1VAGP8DLYbyqw~vm z=%I#M(`G8-2mdMP!YX(DmgXb30^U~5J74h zb>{Kh0%-Q}TzsoUzLpJ<1U{G7*^po9lz&*T;?+!TZ?$>*QHBOYeB{G!Ve`-eT zh`m0g@INMfuw2|g@rHb?ZZiAFR2>XauMJ}QR0vU0<>1)Xt$&bP|=U6djla z$e&^9Zmiv`ObnK$Y{0SS?RrO8-O^tLAXHZQ_ialLlhGZfmZ5Vq2 zml2y&sEag8!Z;~51{+vX{|C4M-#Hf+%)VooYMU;ir6x+Pv*)*nqU4Gw`|n)x{E0(0 zS_BjIrw7!*-Af;U+kCl3kJ@>I{jW#IovpS$*7d;t#Jg(OwQ}QHZ>%YHL+Y7IVJQ(cJI2j8;B zRWo@2EkAWm2f2P##|Z*--Jw|I?*?6eh!9zS$QP_uUtyQbm@*sb*WrHeunbnkIGfhr z-eFX+6?aU7s(mjj(I-IFRmj#hWK7xj=8_q~Y+$GNz7=QO($`v|xhuOtk2wJ0R=V}t z7tvk;lFFE}m=1&hM!%V>*i21nzu?+NxD`z7HZj^xxMpQ>fAG{Ykl$I*m)wYHg{QB? zT(y;JK2^YhcP>I-9v_0PJT@S+at*3n-w>B{X=qB^fu%8a4XSeQivg(jxCD@F<^d(d zYGnhrinSr%L=6QVzl}L77x3}0Bb*rk^vy$5#Hk>hCSW4@WV4qIA!okQoKYO2iO|4v zV_F{}8{zl5+^O&Ct zwr$(CZQHhe#3d6#B4yp>E%Fb1Z7sP2W1lAmG(D^*xcmKWWUQ}ZIK z8LNtA&EsR;^c2;SGrw{uq}TKW)6KczA*wlRc7b8dqf@Pv@5*|wRE^7e4>uX9h%<+9 zKn^#f#XM__2}?tbmKVF}gnD3iY1t+UF5veNiEqV0tKaL*r_h>LlWs;CB@ z5M0TOmnH{-PzxkgK&fc(juPdyk{$%hidLZ$0+!bGAZV*rt>uB+&e-yBG>9_cSdc%Q zU%xQ&jupBf%o*hhL+k@-3Nj6Uf(M?~h{J>w?e7I{hpN&-DPdFrG=xhPkV+&P6FrgX z$xvu^v4dSm!nz`}#F6)!aob=x49Z+7SC!DM$OnLQ*9Y0)kmXR}wtjr*0zIk zHF^2lMZzuv->Nx*5>DBmP$@f)(jE)~^M1}lBRg|&4}ri;VwqBvs^5pDh{J2BzX4Rb^u97*C`6$D{PP^_vt3@t#*M5?j_4l zalL&D&vB=l=a^q=7D$F;{gcO-fX24JS*@#AtIxCBh;^##x(1ETU4*YEc*G{|o%QZB ztdSUd`pk1JI9X$3>Bqj#HO}hxXlHk$SjTAN_CYx;vkP0-M(kCw4-niFl3Qsg&*DDN z2W;svn!o%8M`RyUU|tRiyx!lNF4mRvXk}T@`d-8QQZt{)U_sh-U#bnnHRlm7R9Px_1FySW;Li?{+0cb=rv1TkY7!{ zs@P>Sf~WP6&aX+=Mp)yocP#sd=Kp*pVpumkFn`&{miZN?4G)X|pKpit&^n&|vsjk* zjjL$Z7lNtp@3@HZzrl!Rd2Z`J;X3{75G66xst#k#u}?dpnQ zJva_-LZGu9nuInd(%A`1UHyIQRJMcTXgBxR?}@OsU-#Isk3!J?!f4c>JXQ^OQD{N2 z-$n7eC&2$*A94R9+5BBD`u`P(`5Fsv;h7N~eE<4Be*SNOpM>A1g`3x!Y@Q1KPsTKM z%^o>Dx8|7UA{@B}Yt=&>p4I>tu;=|N;!N3gh?NA20zQH`3=EUR)PE)g9zBQ=B2`2t*&=~{gGy7pe*zZsTXdY{5t5J1l$F2D^d79XA|!Zu;uPOR zSWmm+5uj~K^yDZ9R!ys!SsK_4)oD}Ocow>+L^6X0{APQ@?>V;7I0ms!TZz=E#ox?2 zDIs$H53WT|iBwB(?b!H*;^3@p?M79^4P_x|4Y z-R2A0XzeVlfSxIy0_7C#L~`eS#P#(J+^(qf)}1sIlTY2=Uk6jqW0%V;0V5NKQG?#H ztAf_+j$^{<->&BZ0KMxegc|bo%nx>yj=AcugLryF7?BSU!77#vLAM)t=3;Nb>9 zAf1L7YYmt8a^fQ?%#lbX_*y&ndbLlKs97j2Yy{3&&;+$4ATxAFw@>X0oXT`DF_Od9 zBggX8M9xL!9m--_X`2?9iZZ1rIu1bvOUwxuEGTzL8;cw?El=||)pZQT!-`tcXG+y- z372q>Q;PI(@Kj#54x6j=Cr&E2gr5UZTH@ABVpfvqcrhoXASWgLGm{T{EK}zpZ5rUKnAaEds+JBkv3GFx%``PE+<-b-)&0#OFWF?j;%b3`9#mt7TS|^n2$fS7_ULFgyv7snwlUSIBBCNqZ zp8yBA2i>*f#m61k9k4tStvVUrsRd-)J(Z0&7LUZc_WmwfaXG@CwevNW3yCg2#u{2F zrB(tDLtI%xQVp$aSRIp>ja=A2wTx%#Je4CrHTc!=&-`eE4|7RWUuD{2D#K!p)yW~i z{GS6tb%YeCUT+yCyLHo=Ew`?WOJtzbZBT&=eY93K6vUUd!`n1|)a-6nl|9&)?bR5Z z)OrSDyRAPmn;U0e=gF3GO``Km^tT3o|3(*usZ}h;cQLhsb@Fwju2;u%N4KzxP}Oq+ zrH;(s?DP3+|G&slO<)#Pt9Y^&=G~~dq+Y}H1BD<_@&5&nex-$3a@CYeGejK#UU-1k z6v;$qqMnl5Ju(7=fHt;fgRViLa7l~yGI(_ciya4v99<%-JfK53*HO8iCVr3<3a_^E z43@({=_$BpOh{8Tm}FpH*_*)b6nzu9p$pAS$=q?WLoL62eE5EyT=M<2^!^-97u~D2 zRnx;aJ&TV4D44ByQHZNUgTm!&;Ca;^MD%D0Y+vnO>_jjA*OB@*(vUS^M<|ffS)nm)o5&rQDBXqs<9s`4$|ncc%gz4!z5YnY=i_oa2=je6`g^SH z>%!;d;^t;|`^8qPtD~FqH3sMVt#fpt`FVC4c(cA9n zIBq7>k!;~ z#TT}u4~ENUz`(~E0=+pt*5^sZy%xB`B9BFFNukV z!~|MLpVNx3GAbF*j)?LY#}cW zg>ZN@TSHc^7dchJ*?uqwF!;Dtd1L2v+;D@FxTGd1ykfTV4pKdo?<$g?J#7n}5W)ID z(Y5r47@ry~y3%p(hy*5RfF|JkBwBXvh`C!e0g`QTh}8VtN^aszzvx02_VLkzrj)xh z$Z51K>3U{j#S`tU4gFSNsHif!`Afr* z(<~@X;d|&BoRuB&2h;5{Ze7VDj9W6aVf&!rMGRe88a^%JE|=*%ONHVTrk~>0!Z=5UZ07|jDdCjvaG(c7fw6N#TP*qzjns#D%rom_-Pvo#(CNiw78Yer~HB|p})VQ24KlA5&_kJUL4UT0-rW|O1quzk@I=Tdoq#Wb= zTLv@3cx1Jxc@vea-6fS1o|&D^*Z+dEQA{F+NIQ^4Bx*V^BsUPum}++gqK8|U+&U=z z%?<38B!fV7^A0hGt6eQ4_*_}%L3w@ayX12{H*tL`UR=a$w~a8aA~QQfzh5KYD>Y3 zDeOSxNQiDSR0n51Kva|X=hm3eF&Y5Oe;=8Z>GcwLmGyjqzQwdoGhQq-Zv(z9^JZ=S zKUXa1og~B=zQTigNNBJk zXnazVX^j`}Q}nhra0%CQ2d9wIFTo8My6 z-eT&Ssp?;i8WAmKpbnfbrFE04*xmYam`F~sY-rG?Lv#uRPQCih?8kMcxWJH#4_14} zLxSFV1U4Q0_JK|FMu1_T^N!wb72#nxmfGW=Mum!^U&C?c;+70-TBp7;n={!vzO-%$ z6{O*N#`pU-iZxsV-_q~Mv#oE0htS9R2j+Gc_GWc~+|=*J@4kRTN&g;t^4bgWVzOni zp>#pc+l7W*-1P;1I~&+ZlOB+f@ct>w*f>KG)rH80#*8H907wG7FnTtU+ELSE%jDgXw0>~VnAdo z3G}nZJZ{Kvq8W$$w~Y0+5^@@=pe}`+uS8{?=Uw(#-AY^}H*U-FKgv9$#0gGauU3`1 zUe5!AQ3ZDg7nZS3cixiJeE;s44OKNtxL)ONhhga^vS_@jznd115l*L8SlD~G;TXZk zGccRB|%fryxH1w8tBzFm7&A6)kNBj75n=6;kZaTqgxZy{KhkM%sfC19lq zIL1Ju@J%4M-JpaY{;1mtAblfEF6o!@(E`+2d1>aG@!g2dGsQcCXvu-e0|91$t z`LB;k2mL>q*_L_#m&~?TQScns4{NU5E<9(Q-*gvt$T6f&Ky$8Gnc51JII2;o>TfPC zv7Zu$HFLb9BaZh->MB7O^*qpSJoB79`PH`=yx_ot-`OLqJeb~5H+S&x152u>)~#;k zK2T-)g&zw z^VjX$`>SJ#W1GAI?LS&u<3}^DzVgIIAek5e^mc_;)9EEBA`_C5KBv);oN`l=7!$z| zcHw9|g`BhK>Iz@Psj6Waf7yU1q}ifmrPB1PVE5^=Re~;g`_~h7{*4gzXU3`>lDv!x z*T`(;R2N=fe^xvjoPluwBWa`<2BN%TqTi24h_u?yw+q1{Kaiad4Unu>dhtdcy^mqD zfA+c)o{CvkFi%DmncW1N8}*C~JG8{WeWiYb`?CWW3#>yG1!Kep;-@nWP8Rhhj9ZHP zn`oHy@bCJw$%e@uRl|X5O9IB6mD)*$auf-@DTdLUhG)&?z?xksJ?|F4Iq-r{ig2-K zcjL?iBdvSh#_n6eCK2ZjjenZKo@{4L!VTT{v?;oa3GKkn9F4jV`!-1e2{>Y&v+wkq zW1rK*+M{}MMgV8`_Di7?g8v^5^`yKA(=sC+`9Zh(grX=DOwA}`;|T4)F^So2 zvLB1wBhl;mOURawHWO(S#2Sh>4WYU#Fp+x13lkY-@AA;?XXgt2Y(YLUb%dv_NjJ$Y z5@I0xD4-cf+9i(G$>`*26`0>EDh%UM6&)Z9P>9Mma9J53lXz~>(J3i6!0VbY8>GT@ zou|Z4D2MR(+0&KU*WQ34Tbsp1lOia$m`sY)k`g!m-UQ{E$gSYMw;Pcg09_OdvZd>-ha za;Gar06p92)zY=)rDqRMSTOc;^b{{sNmkit!FUV z#X+|e;issB#S*~2(m3TrqMxI@IV%B1@q=>j#Rw(eoyXvV3nD`HSG4bK*!r4FEK#l! z|KeG1=Xo;rhPrIDU-ec=%@aTEqH%kg+Zs+bLC1p)bbypZiasB5adnH1EJ+=|{=GkZ zMTk}Yee$bKCuFomXUNf92$sGUY3T6ynUHLHxw()-u-M8TrHM{wD#;+{TjYK zcZXJd5Y;rl+g+S&Ma*NjDbwpNZoYjML-7QDJ16cKzA{lvU_;-jgfS54BKqO8#)yl_ zp2PD4n_p7le~|q5VO8oaM#ROO8u2XKapETGIR<}1(=0fNblrzQs&HZ%#J0y`RHK?f zIg+AE-{oqQW|rn3On<)LdfkQdy^;_EjHBY#QIZh@mZp1a!GOfH?dzojo_*{v`WrgA zkhdsp8B0qx45>sYbUZ2oPE&18HPubG%T}{e>}7fo3TMZ3$HDJa|Em97l8pz2QUq&2 zt0gVbQ|PB)c-Q}YbF zFyg&wP@{ty_(7mrT z=)2srf{(~rP}(=aG-l-Y8FN~&g}K6e*J_zm8xySfx=K%{$CmX)C4x>e!ieVDYKa$| z-h<^FGAC+?E;MrIpcwR-;P&*TK5NqRq4!*HBktzt$im3)J`giGI6HW&tA;$+$kD#! z=%olsx~#YDQ>obWOeuJ#*J@Y3& zx=KN7PI93ZZe5WxB9tazam2xy0=OO}M7J9l)~uybv7SWyve|O6?FJ%Pj>8_C|0^=A zNwe(rf*((#GWnIQERJZ^GpJfkp?K=ej%w9^|N1?3v;5cDutv@G*OfP!zV*Krzx=PU z#xDWes1-`W{_pVrXc$zdni*89x_{?wekN`=sEKn>+gbb$*D7r{IjZ*ThF6FSwMR+# zzPtU~FCGD^y8-USvOTTZ)o5f&)8Lch8YMgh1guiw}xN?KPRH|f| z5{`D%3+wZGd3v^=`irgqEfa7&It%NQ*3b9t_IkWOdmTCp3kL_=^K{~ zIy@uHcSP5*FHy#*hf{Od^Mkhg!s=&gd8#S!FQ02y8$B*w$!l^khH_O4Yq{SHx(U;E z%6VEk&~#M}N>dMjDrtevf>JdgpeXUpn}=QrzDE{`oC@yL>HHvoALi{T%l$?SCGtM% zVmcf-!yBDhXZdAQ`O6qfxY)`L^E-NMsTRnUDA}9jfjC4sRLhSSx>J@RT9U8~b5Qs= zfSKz|iFe8Dzlch7lAYWG5^`wef*vd(MQ6=xC{`9ibA}TlHsf2WX92#7BjD8)G$h2C`EH_Q{IGDS{uyNC-bLIor7kYrS&7f=Gy`;OkpXN@C+ z8~h2+YpCwio`fRU&MPpK4n(^K(PXL*UZ*!PT3?i4X$c_~5D$+sf)_uZ2*nnnTP| z-ljbm2)T1o5QD6=Kxm24h|%u!4c!afBAR~`wf9MH6m-HY!HS|jy{hylJXBdJ6thu# zPFT4;zZ5#pe*ei{NRBO-Z4{>SCd%t>!_2E+N~=r4fV8LuvHOiP&%}uF9uuQ1b2+YU z!@Fp1biamccD(`GP5lx6&r-WV#aG9}p|Oo-nvO}-hypQIn6dKSjGChJq`_x!tyBUU z6w`Cnzx(ENvC|m<`2|I;Y$m5<^gmr{a+IJjYk{D*9W>s`qTzRE@qU^g>2 zRVRO2)dSNc_puZkJ#+@a!Q^GAd1+h@Q9WOcgNy45bB_6JLqQR{Jl?B zuBe<^0JQ+I01!zJQzB+sSK?u94iEOgU*{m)W!Qp9B|F@Y3zTtMTYz?<&1j!2CjaWe zezRKl4&5#&Y8l+y*FQnZ*rpSjj}W3V?Pr2>cs;kaX4Yyl=}GZc3n8`K1|x^4gV-K8 zp3=B3Ds`jd^O8?~NkjE11tBZyp|l%dtmQ{(#DtXD-g8JzMSbv}AUK)br&%=d-LYsh z3Od_UHW5pcJ2K^&FWN$nCM5HNDaG5)%8fHQ=)HSEe4talT88V#?{Kvdp3wBkQl$s% z5BifZ3XyUU4BP-Ix;Hr-o+==dB4eFE%O>A@eZ*rQ0cxLaF5+)Z0CUc?qK%L40dj4D z?NX*(IbnEx2&W1tBeR`WWJ&1OM2DJAGe?(~JQLark5nUjb1qCS>Yzk)9}xcd2}E?J zKiACofrM{K2lxprGVcR4AK?Yn1N1uce>URYm7_3p){Lk0Y|5fBU^se17*2B-q0M8~A-J9x0)y_(VmZdbD%Ft3 zojuaWL0`DwHD7W__Ol*m)J%zhgy<0C63#))RUlJ-FNL+SYbibb)H;{~g=SptSvYr> zzkUC4{s@&5{R?IC!&m^RNAO__w6FysLug#b;c+^B1LQ@EP7mC6z(0+-7aXNdQUzRa z-(9X_r~xwP_{MV*;u?=^|3vl8i(yXitb>*|ZDNoX)~*)N>?+8Z!f)gQAs^Nx*4f9K zMy^e^eFl-O6!+PN+)}ES?b5IT^v0oTbd#(pE{D7k>;C6TpDr>x*yTf$)&R@NhIGVJ za7)Jy6@;o>=p8h+a%*%~^ED8E7$m{G{i(IJiETWmT5hKRNN-usHeu0)r+~h+L-z2r zYaDg^U8T>5qtQ`1q{yPlqp!u5Z}R8%}~9l#EeK(}_X(*5z9V zr+LDXmZkMXsVyazdM$%ojZ^dMD(f_McrG&o8*M1!`5fnT3m%O!m{iQMTBfu)qOO^vu`kkBL(7~ROKK9=Wqlx)v44F5G zwdW}^EMPW4bgYgAY!j#`iex?+6;hGyg#Bjq{Q#>joe(t$f|d@j@xj&6K=bXS zU$klgqB;GFmjcN2z!*#VQmG*(8Ph3@CTEtB{nkxtxgjQ4urf1ppOsl?%geeEgq6}4 zhf$$X1#)bi5BHy(`?>@5q?uIXWJDN4r&fT}AK*$>mCyT)wZ#E9w`EW4M91365raSD z7u>rIX*<+2iz`su?qqX9dQ>h~M4u+^`E3p_M2M8-HfF5QxGhrr)@x(|gyA&jVm9uF zp4`_3msdN)YL+)oWEv)^Ru3(2OSW&)JmZWcfQlypj#;Fkyd|j$d<)=#D6jrP9ar3& z3b-}r)=VZiKa zk_nFvy-T;envnubBgM8J-4W>?4$nm_c~aQ^uUaaoI}<2A$=bUNfXv>0W0Q+I;=^!2 zdsR9I5ykYs4G5u#HIj@*l9x#v@|r2{!u>U)4@jL+twa{xn%g#bD0t$bNyrKk3F7Gd zBcgbW_R{qYaWiHO0d!at;u$7#-8_tFHpSv{TvE$NN=sG82R76`4CuWmP`eQzc0<6d zp3+eub`dP-y~mb%fEhIaQ))jZ)IR&GRIw3k=)E;o)V?$GU$g(}PW^fCehpje0c3YI z|5sSr84YU3i*mX1f85KPe+T>@&S44vYxO^2|7T*Y-`Se}6Qr6)0uZ~{kQYMpIuPA# zkp;VMV$Y2{{WKDE(r;ggZp(NLsKILeqwa3h!y!Efz%74ZsT1~IhujbXO=mou-Sa^i zx+#Cv<5hT6NOw0(AKdphYhT>B(HxFg&OIQcIwh;tR3J!S8szwAq>95ZU@S@fg_R^C zvRDk2ZaG7=GX1RF4qD-adTp0Ho1w!+o!s&qVb8Qf&@4%!c#KnySq{mBPZT+jnPX~? znsmh!O&JlN)Y$f_&KRW;O&WOc&RYwiMfRyAEZoGXpQ%_P$qxQKZ!|0#a2Jcze3(by zRC2u>p219^Tm^k!(+8f9MV#$q!eZ1yunahOIQqy0s3oB@YyTq9=!z=&T8aN@68`$2 zPDn6ewo7A;yCb`PALuZ%N-vJmiogGQ3c~<_sQ~$k{VmqzmdatsvIJSXK??3hHMJfX zTkrUw-$knL94MacM{-0b(gDdR4BIWUMbO|uwlwPsLIc(J;rk^j@ulRzI|PZ5y_3bwaxl|P9L0O zVPmm-fH|x#iXLXW!Djkm_34(W@fKOevN!$2hO_#{C5@%XONVHdcaWDzqS0?z9?LgL z+GQ;J6l2E9Sdx6)3A3h&VH(sP%G;2m1@Sxc8tr?T$sjmHQE?pCbk0bzH5tRd@5dWA?(nIxUcNvWNER;^7e z4brCPl14&OErEzL?)Z6{@Vi*v(p^w@7O8od=p`nl>c-P%{ALyzMcS0O^b^DOl9y)x zfp(CiT)(X^dR+vcF)=3#4A-{?%^KwI=yC1^HmTN`gov#v1K3+xR>!k&2}4%D+;qx0 zkwd&8)l4#ZH_;U(&9{YiCvpk(k~T)P9j-MoGRWf||L9_Y&%4lz8?kg1mw?eh9etO6 z_n|?32RG?_SW$G-j-+~TjBA1_ngzlHIHr<{p&sqgS4g$RPKPPy86zL0zKpmTF+K6Q zdYm@|JHpLjPDT3)Z2++W(AvEUHEk@PpEGR>!nWl{B%Ej&pV;*_E?i>UzFr>=Nmg}4z3MMEQy(H6t!2x zHBOyh8?p`$3+vRvf`}`~eFWm2EVa9?zQK+F@JU8@{4I$y)a}Y#^_$#7yAMB~GZFml zFhHO;=Z#UTt@G>pQ?=PtL{8&?onYJ{x0N4~h)Mch8z&v$c|96ZM1t?^mur87Gl+T6 zbCqsU7o~H;3OPzZR4J45ho83Km|BJBQZyR7d0hM+pX;}>)KpU39=8Z{dg;R3rl{h-596hJxRBPy0`gX(`YETgJPE?|cpJ%-Et+s;6=2NUgsLaVD(CzCPL=eW!{w%_s|;yy z8XcT?jg_~PG>T>jwEz!HuK>ajINIa>rZ?E+Aw;GGVT>}sg(AJ>OK0pyVl*K<|*Fc1Gf;a(ihGQYb(rPdSbXl&3 zX0sRr?)-EK)qo}i)O2j#0E~MSe;7!>$SCf`w_Zw;MA2TRfK>U+bwQ@XU+IJHdaV74 zh27bPoKPPk+knhJpV(E>RUQIh-SVnQf5e4zCn0s%bD8%~47jwq*kLmJeyU4f1)jdkX zjc@fT!cMirb})V~nANTpTq=|5lL9<|Q3_{gZ*$dPEPP+9nD$}D%x1f+tvkVi@5)nP^}60pF7F& zRZ8N{^gD;HXX7F!h+&I@e$SbUc7mLfq9-{%62_0h7uz+gFr?&AQIY!Xjs=_8zpV$b zR`rSu;DP(}85@ydD6U6)a=3Mu`NK#cz=KdnDe@i~`I%usr7kmp_VCD`iMw-tf|(ux ze134f4sFC-TMysN8w zk&*I08hN)I5R2Xh3no?}0{n@g97S+rH^R~PqjlO@jd5xa-dxO$ZGk!vWYFfQLdrR< zL%g_Xp7vX+taL@bSFhtIo{LP`Wk#xWW?5zxuh&Um0^Q@3zf#E^fsD&qHjqD$P?a(W z=lEBfQoL?xkZNq4qRI(=w!j0VDY0>APgYIab{1sCUD&;LCCStqp^}hhMSBkh#ccAY zwyh%g7=|{{^h|-yQwxRR#J0>yL+~CBe`8}8z=5_TCBUNJ1HY>PW+}7f7@4}JEm8dn zQkHAfmTG(jI`M9Voo^u7MJ+SE?y`yX>b?yIvwYcw=U;Y%;N5=a9Pag>Q4gx)e`A4w z^E|R}*#081a5MFOE_emaJ0a>K&C+fxQcTUyauw>0eY}4>K)-QZ@w!Ytf?i+FE*jf> z$VL($l(h|?2Rn8{LCYm8dHhlq zJ(!hQPc6Xm(YM!byzj%a5&BWG*)TLHdnWw654;L-d!aiXGon&$WD-(PP~zy)up=2Z zKZxH;d9c0J&AC7pwzjLF)d!!}BFm%K+i{47pvJ-RCj@evHhqUE84i_o0IKGh%UqM% zL;r+w{aKHaT+O^^E!Zg2snE12wXm_7W~hiM%v$vViEfJ<#wm0)Jc>&d+u9zNXI~lh zbuexq!u^)4K)?eWvD0N`U}z^^XPd)w#1C+&rM$}r1oZ;!Fl+hyj=p!1{paO%k^#x^ zG?mTPx5LBH-o4RZ^@+>--EEz+_PjW4VA4-@K9)5&HJ(-qk?x_Z;-`t^w!ux^6H?J# zeW=pIJmEit9Dx*wPV-p#OGgfh4$EzMgJ|h@-BO4zkGb3y1W_Ed{ z7^Q(IO;v54$A}K3@#g9#CATED(+n{1vt4I37%uwV$yb!5ZtOf^?(BONPpf0T5Lsy1SA9N9q1iX$g+Vv?*y$i)yvZ|3(4xgTE zcd0_nfa-M)xtQPJDiqR#GUT)oO$2_Lsa8O%PbPpzyNQGH9&fhtQ9tI))*-sg6izM$ zKs@iNViERXn3~7hzDsx(nrjSBBHqr&@Q1+J((gS-b+BE-%u{lic|*{*@wc5HAcsBCSR_A`LvJO4{@o zbbTzgjVCkC6z^dAP1U7y8%{no`|+Xc4?Wt>LLZ&$-T@*o$EbuDUk zjL8b`o|e(6)HJYLDA48Gkh3#bZNc06^Yv}1hVL_-jp%0CFJj#KygD!&mb+`v_*`lx zdnrNb_oMTG?R}pwu*rI8+dt5+caCa!@SpGF?AF)@m*_(jrI3_0+$7*@dO%uvb-zVz zza6rYWuQ(SY-xrBRVRsl3?YhRq^qfTr3^xR#Oafs$v%Zm=Pq{hU)+WHes_f`AJi#2 zln8mM8>VcqST6L%scgL4LJKFtexkV7DuiNnBY9MIyigwa9gs`eEYK1V-dBx8nN!Ev z%$#RxWP%)rjaYe(FWX1s*3~I?;*@EQDHY^$JiOHSA;DZb0(-JW?Jo&CIFb6N=^9Gs z(9gNxH@si;oS)}=d#7lHy&nKBHX{*9&8rVUb$_ivOgG9^L&gMk;=%gWx4 z!z@#KYmF<%XrQg-lRNjQ+`Ega7|apv0L^+2Nh3gkch9Y8@nQ0xSY$EIlRM_bQ~3>1SHqh$w~UMNFL z79UP9i4KLdlDWUh7zPuTAD=c6Q;p;do#gaffz;H zy@N8m^3|=TX}? z^hAvnk!y~;r*_Eo$jRn@PQtV!xa6O7yCTnuYij>4UL9cI6Ofi(LR)tKwodgDZO{Xn zKwVTm1*Wk&fTi?yKs#=({z#-##pStE3F%P?FKO_cETs^Hs_rAy)99y+6msvbeo-LS zDwpxLmYIJvF;M+hHsce_S!i&zmF#pplLIu0(&!vX@_&8_b57;ll0 zG>bW`Oma^-qb!9=()gIrOLJ>W#K%U}x=Z&1QB8U!PPn26jNcZ{c01A7ZIGs$0Fve1 zuI*erHuo$JcI0g!q92vVVtEA>F(|E2KjWHR5gmayL)f7l>tAQ27(w5GTF;bIp!VWPIDxNf zqsO<-N>65VP6OH+zAQeIOr{&b&Cs3JZ9$HqNA!Y4P_-P*q2o^iq6d)&z@h1A8?17$ zwl|RgPAm2Ymd2o4%Y0%{eAS79cn*FOi8GgB4!I}eW z_?C@2x>cz(P|JAjiAkV)Z;{{8d86ZshC;phr&TTp{MVI9Jno~(Geg%VcVUHP|a>h5%ZU5|yrIZX)?pI=#c!wwE*^ERH*7*umiQtD_ zQi^hhu-4`r`N|DvA{nPLh9G`{Yj$P29^IAd_x&lK@AoMKtS4H8R()jRWTI}ZFMII8 zeiG87QF`v*v4o*NojI0n+chC96jgU8O+`u}Cr(6_)y_Df&z!su+mgm5g-Jr`Q!p1* zT`TKXG4F5bEZK($cX$l(1ia}UA+H--jp z623Yr2OTTNu=dDacmCuP!qVkBzTbLdM7BXf`8@3%;tt?vvTDG;t(-ut32uTAN3ezH zizw#zNaCHNt79)K!a=Ks5YHm<6!+tTe)(io29gP6-c;-Me_|}j+E_$0wF*|J8iO!h8KXeSXfu?#2Hs ziFMah*{7{YU{6VmM&gkJdzLWLRXBd1;XIUgam*9QIgga)MeuYJ<(vn}#pelwa~CHp z@`0RscGz~V-r;gAjtjT4Z{yh&Ek2c^gnposaeCJVG=7ES{0sMK!V$K}xWEtR>m>He zbSIh8LM!6hZNI54PKY$oul282RoQ`*TYAkD%^+oe&jO!AOl&WsHa%&m>twAK89w=x zt-xTCNr8-4OkP~udH2E=#okEiDvA?mQkg5@{fX*=R?4ymWU`Gjh)g#dB(y5r@&<6&vK3Nj5DnqgswK_}KrSN!G zW06?OuVVWD!{ z(u#W7*V-2+cS_jl9Vrj*q6d;)HoKoT?y)01lCFcj2_5=ltMG69E+A7wX|#PNOAGzC zS+v6RNaSZ+&(jSu>QrlX3{emm7oMqcLwH?RRq2(>=NRl|rglp8SN3IA)yfum3H$_21c*aqq zuwgDWVy7nZbG+VEY;4cEy5X8b%t&#N{mkLKrh00*Et}@i{1bry=gQ)T-@!+6S`IfuUGpGPK&_Qy#sm z%hvhsHZfAsKef~Du?gGu+)4Bs4;^as)4r?IA1b>{Jk`Ml;0kYFTv5`&%zUbCoGAm7 zXgPZwjuFE5M0R@qQZs3#Pehyra);thLnSiv_M{2o1xO8(H##k9-E{h1-(U+_Hk76{ zMi+;V;-tssPRi?Xsdvad(y5$kSWg^Pm zNNaFO^1qUe+!gIdEdmOTX;ICcli@jbM*iwR1_vybkf&5pG&>NE1h@YyuCIIw*@NGq z*Wk3EnyOrol~jpVP)T()U2;II1OvjRm#c|kb}&g@l%yoDu~Ho7#B0_~JEu%UGVpVq ziJU_XZq!sqzE(7Jp|NnvDI}(DDqu|Tm`T2gB4?E1qXJQt2|sMPcQ4PJh|O#<-ATqf zYDgHCU)s0603`M9XKOZ(Ql{H+8#^g{?R=M2N}dX@VdLWTs;zp=o?_71iv@nH8DV97 z+$st8187HNg0)CDyiGgs+a1_zpU8iMvCacKzbd5s;DV$nJVfe;O)|l3;KU-a+<2>C zVR|SrY41@DmBXD6!atcFiI#)4Zji~qyPiLcO<|t#<}!|E3@G9kp*+_8{yI~ZY=`eC z&)xFr$(^*yvA`V*rk7@;l8s7@ahe;KAU@pwP-QI`U&uZf-ra+B>b72exZNPPxQW6q z{kSica`31384QHi<&gFls*Y6Wdb=_W_JDN*xktSg>^0z0p>m zG<55L8P)FaY{tM-fsF0&v@a31j^$R)O^UELDat^pm)*I!khr>ChII|qVW-i(7X@!I zeI5ZJhZY|GK8U#EuC0m)5Ob|xkZiVUR4RM(rCUqAp@K>bh7Uoy;^Q`QfV0UEExoeaXr`1a9NbgIb>gt^{SNd zKBINf;u0)gi?Qmzu-ZAsQz^2WR#UtletW^QOmG{7CKP>*Q<@E`O0wy?lQ>si@qz z-p-|+F=KhxB#cAJ4Rw=ipWrb_9q5Zt&G+rK4-gCJ}CXTGKenKPLW zVL~2&5uq0*97>q>J2+%Q?)O3_IL(JR={NnaCgi{JhhI622)z)()L)SQWns8|qo#)c z8{zHHtms#V$L;%noJt;kJ$PpEgp#o%^!_Kz{}*wD@7Mn1*ZPcmRsrNtv%Eyvw(H5( zT5k3tTPdk$bcT)i$^T6u7BuUpt%9x{hcUwkf@U|}_vQK~KudR_Mkh-kuFa8x*7Z(>7 z`}1@A!q%o{#y36`&qrnY0M+;1?zWNrCs_Qq^+~0i_@F0{bLZrQPCuL(8b zaL-&c;j>td;9zt~OiV*BOXs6Q_C)%kSZuxb6?q(vNVN_{6!|!^-Tun{)=y-vXKGKQ z%Y8QH<67d4wFde0Zy6mA`6t1ZW+Ybb8P*i%QHem;)RI6M25%G%^U$0MdC9nEOg@(H z0hGkZ2EUdCJ2^34Du|>wzL{*YpK=6s#c>b!3T2v|myR0T`$g^lhp>B$vSis71zfgm z+tp=Pmu+|1w%uK}x~wkSwr$(Ct+)0*XWw)08xOxSSIili|8nHY_~s0^k!E8WVI|xT zq!b3`AFn-H8!fis8OW{E>QNxDSaPMvY-x%58G@E~r}iDl%T>l}IUjj(Ztc~ke$qEE z;~^>LRWZz>cECAKsv|s_p{bl4*o@mU1!XUkhzh@4DxJUAmmh(&Ry*0<3L`H>N)KQ> zhX4Kqh46-~KhwrFT@X`+6aYy}My-HV*H@sM8>F7mDY>tbTK}>XH(9RVuG_|8%GJG- zQi8|F+YNw)@kzn$ad((X-Z#;~hD|txeY{1IW96XprZmf*v4lQcubxXN1H8Akem?A< zKMat!%{K@RVn2KW+6tweS67!o7=c@9r87SV7Z^M#9lUPFzMl=}ogc#VLXWtQZjoIN)?cPW3hn81GPuH4ktd(YMp>s>b}f~?GH3k_oS zx^-KPX)?^Y3dYaryrnY{{oYzg3DRz(LZ_`F5<&0GFnB&XL|_imC`>%aSOQjOtU~Vr zsK>1cJ2ef??ZL|U(`Q}O&cw_?)_SE5w#jZQ0mmH6Wt!Gr_c~x@RYh*+;GS?Gbh3*5 z^YIMmQ{g0%m4yjo&$%(0_ZwFB^=@>tmMv&iFVsxSI+g)@1P>15-B53IEeh{asfG{% zP46*Xa|=4x=Pw+&-#zOCaY4je%P#jhPzvN>jRzw7DSfL`KUA39NKQ_7NsZkNx%j8H ziVa`X&R)+H!qUCD{hX6PW!g8cxVmXq>>|%E;|dYsNEl%FVT&B1_})85l~xz3a9j*K zOPqz{r>(*-IWWz-`EfC8Rb3kB8dMsjHznpAeh43VVS@lmx}2aE+R86XYXb<@Z#7bV^eAL>_rP+^Xoj4tv@ojk zaA^>2+&=yMagV4JXvZG2UpL(A;aV&?k%@4}Df#$2+7TFm{l zZkJ*N*WDi!ao#Wl)d8%}o1vDJ2G<`f&;c6gO;0qy5^=;!gJX3_Y*QW+nMBYNJ0W@Z zH|C5}v^0_Kd79`h)nf z#|i~+8Ct*inXGM)M(143;7JV=#0mZ*pT0z(KVv6I=Me5Pcrv3W?oK?#NqAm!`81=V zb}o~}9E*Q%E~mH|et&f6tC0F`1XH}GYC0q0yu;Pi1Ql)-mKwD-`P+A^b8<}7o1u;)PTOKH4-843nECEK_Iwt@h516B~@WqfNSp% zFGm44UMNBeqVu?iJr9VOMV#G=o)-n5kheS#gW0sGDwB=NmhOAheTgFbRq~l+XpSh3 zEr;=XVOKD!)7z|rb^GhNZkrEEPB~;2I(2A0gn-_=NJB%A-7@C$HI5=--SK|q2P;qp zwhRT=s`j|#S9D{W{;+!O=0`w zX?Z5JZg*Srb8za|?njrFD0RO585;+GEcYZHWL}@NG!ch%{#_XY`9S!VoISK50{yn$+i_}l>yo3UCgB)OUSS)pyeG^JDY{6gu3REVe zotqcKEKfKBdgy~Pou53>U33zRm(!=t+=tfqDTNhEPD@cLr4F%Di^xX4UBMLxDcSO< z@ANj;8Fm*h1RF+{JGjZfoEZ*h>AV*ZvU?^NpP+w^n!L5J+ElMG{Ny^%{IGvXMki=% zN8!Y2dM*_7jgWh^@<9uL?{ zy8|Q?xiKHL0V8Y;!$g`*uMN2+YKHyWNJy^Z4?}q4)iqG3m{~f_T-Q|n_CkxCsT0xs z3CV7v9F@J6UOpWR!5R&lG|{5ei@Q?` zVYVm&HQ-FG?Vip;x)7b$axYP0$S%cwlNrJ zDZ)rBV9;%^53C$refWWiIfaen3))v-DZg%lVuY4I^319MUDvupF zy({uF-LPO(;;6N^Al+H}l^m&n+DZiJ$f}|mFT5sIwP|T|gg+>5j|gEh8mi#}_IKIm zyG!k9VchxpiZtM@Eqo4rKbJdglLsmVuhy%a5k$RgUUmzkp*Xer4KK)B!u*$tm^Inq zR)1&AHk@qlp5BM*=wujB(8;kSiQ7kJ(E0xm+Vx6@z#%eR+Yv2z33Lyvf_J3(;5k5v zR&QZ-#}PtB`bCIYZ*yedFof))<@QtL$IgY|=P+8I$OePaLE`lZ1`*WvhB8TVC6^+k z3PlF4QV#0ybDMD1>!n^SepL0q<{M#KAt?MNYeXy;V1D6e_!GQ_)I*)M1bTb#o%=2I z+DhmUWgHRFV6qrhnbeO&Z`UTM4{Zbi+pr%MN(U+6{K(cylFTN`(A3AV{XSqskssfn z@rMUPVGhsm7=1U59`n-Ob=Y85D<0yV*_ri;hpE%QJGuwi2KxEkG<8*v%$}avmsskc zhC6*wpb1T!>*n1~R|F#RfcdOJ_0?01m^CF-#yMt0wC$OHi3epxtx#9&4Tw}1juTTY zo5}GWmL3b4j^&T-Dk`mLZ{_t_^g&bZO2~lGx~!lv$v(PtADTyMF!pb{Pf_#i3Dl4v z>iGO3taTmGXZRFR>TWlS^O=Y+?5$hF{g9d($92(FZ9SbV*aqW}W4D{9ckO|>7WFi} z*s3k@QBQ@3-IT^c_H4&F^$EIA@Aq2ae$(c&?xO77Y<2e@)Wd2!&+d4B>e_uUZZ-7t z0d5d2)T;v*gI!Hl9l&g-Di@4lOyZ;ZBvGVE`4IK2^-?L)Nu^{-v$ORD31hS(4L?Cn z5`k!c_EE5V!pAIHsOQh7_9}`nC7$fhl)1oK^_Y9xg0&F5NxSbnb7(&sG!p|1q8>*NmZtc5^-VkcEcQFN6nxnH4SMLy1PI( z7dL%#ej!*>PJU4~10M)ixE#n%j3jjFh{?zYbfLR!PK6kbS*FU6FE$>@8SXPL$FQ^_I zuO#wk1k3Fp981#qW(y)x$)#V-7u`8Ra``NIcHEjkW%)Wy7#8P{7K;0G*q!t9AHlIr zBt#wvBJY%~y(ZB(@&RrAJvG;<n3Fdz~mJz;A6?YaHbO_SoY;V31aAt`q}1}Sl{n%AWos|6i{Ty>JlEIF6P z1?VGRkyH3pWJG?dhBP!et3*nyvNiJE% zJ7SW~(-ofa&AjoExpssm4;!S-p0+2f!byk>FLoh(ajwu0cptJ5W?PO0kkxc}sL43i z(4HDrEuSFv!>J+V$0D|gYDHvYHr*T!4EubO3tsKU#oz|S!1?Or84bCY|q*H*{fjE&w5Q}JY(iW=AVS9Tpbq5VApoO-(US~=($D! z8W#NwCNOH!>9L6rYuN5ZN=O-MGB6}i3YWjn^k*Bn3y(FEVvR)Q-y@5C|F*4e1cCfSsW}IDu>^D+{+75>qHb^qLOlV zEsWXA+PEzTO(NTB-)o~Ep+b5Rwi-EH z&YRokYARA_);V{Dg7PFhd@ZjJuSI8idR<&^p9@^CPK`5Y7diZf8PpDlq)J4yEReEC z1yJjAXPY8e&P0DehZ)y}79Amo`r<4(OTfAoWG61ugu=pSb#&LEgR%^zM-di8d@xNG zETS&AQSsexF-m!zlA=Hz1D1rkT;?vKH@WK@71n`-E?n}V)Ny98x&O@m&{T~Gk0{Yx z;-?)Y7v}ravUAIJ8GCFq7rQiJ46bs{GA?j-QTVgpQp=N{VE|;Xe^W@*(Gi1gmw2w9 zuFWRuKwm3m4IAzJvNAC0g?MsUk*?1p%#sypsaT!YUXOv5V+~XMxNVt^anJ~4YL;tW z&C0)p++qd^Vr}JEM5uo(Iu_Ma4q4*pL3tO9$;8R@tgS?NWtG44JlearRfIuZ@AiRp z^h%jAt5muIx z%3oroA9fNFZF{LQh2^$*@4>1C{05c;HBi;5gn{Y+$`Qxy5%G{&e3{=Y;Ci|@{Ot~z zA($%|o8SxjvuH`9#lz|G5Y{#Rh~a#vAmQL2=@F-e|Glq(baD8-jB-?zlsk$0pbl0y zIzv?PENGm-z*T~LP21{Qve!X#3Mh8mSHGYdnE_?)wB;g;%f=}Jrqm)nH2kNMpbErP zT&3f%*%pEz7G(Q57LX^~Xwi`+v{AHEPYYdRp`nKjGHMbpdw?DGc8{)N_*Bd2&Jf+4 z>L!nuW=No)j6nanERsVKsAB{7YDJxTQZ`yy=4!=F?!Ev{&$G}E;F{GF2^*Vu0uI}4 z>DX1K8}-h^u^zG%(nmFohdNQ`mB!Ml)@?>{HOVe9XXqzd?FcEX4V6^)h)Hf*-o_0x zzKv@0N4kY~HL81ym5HB7KFU2W!-phx;TP#_nzbeUjjn%YhgY;yR)3Ta#hzilLWX?r z`&es)$#E`tcwppo{sVM5Y^A3Vq19-C@gdu%F8>p|P94xHsAx55oVKjqMwJ-02V8pj zcRE-7?2nGx$|~hWm89$^7nL0kTNCvGnwn|1N8idLbKY9k899423lMqoO?mAKOa{}& z-Z%TL^5)JXz8zAttUwXOG3abTqC3l^L-cil64MEg^yTBkO{_iJM6oJ5@PkpU+oGze z-SAB;gT*C}m=#0@YcZ(L`(VJndgD;g5}BcC=qNT!RW_=oRn87aXoj!m9h(fQEAw*L z<~~w1=}v5*9PzePW!EE=OnXxMvcbvAOZc_&+UA3#o**pWuo*21sB`PeO-n34KVd0` z496e&!#*t##r4!y5q^p+PqfCesi0j9%nzQgMRhp$!a+w25p#L!Ls7rz?8&Yiys4Xp#Ei&40V z`BSymYlh|&3J4Ko!@Um|fpEs3O;kx+lw_aXSP9R(>2(UUFz2SQNt@g_iBDkQSATyp zlnoj&LX-rN)wLiCq@=cd4U`-vx0X*mb^p}q_@zaPmfQ7D94mpd~s7_49C%}L2K6@q=m3L*P*45qw!{3E{d ztgikezSKPb7GFoTe~T~78Ax{maCgGL#20@5|5tqBUM7^mx`wwl)#%Y})?|vf;g&$z#Kyd6AZmc4Uz*GNuzcfBfph6z#3N2J z(UE*VnF`l7yO67-SN+B7{&W&Dv!f0PDbR)Wagi*KxEZx0@Og1v)`$2RB992Dv-bVG zeBj_vKk6FpLlh`8b%+q~;e6K2_!1&>bbnr;lG_Olr8$XSMu6fAO7ITPg>ZU4|<)WSc7(<;wvNujf`iKkXD5 zSwtY$@Be1KVEp^9z+s60oAsKu`j7Q05a7G`$9hr2P@soHzWvk<2WHawvvC-4a}`*+ zMl+73(v?hRye-Y=`M;x6M zrd@m?%JnSBlkdt%A?<&l?$#-)x~Z>)5bmtx7qh_pZhAuT*xYt){M!YDJJih|Ndq_} zABWF|6!Bv%tI#wkg;cXad#PKD8td=&_@Z49s=NfsZy64tsNI8Q0kM!bl_yXub8jvj-aEdm1VVWyr7&osn zy)h-(?T@sK!pRn`)Zmag6ynYbTDHTd{%p_B-srox!feQ@mq|d`yrA8YhhIAuLsNP{h%$w=;HHNYl9qc6hp_+&g#dq63q!SGTh3b^69^%*slu&F?cWDTQG0xZMl1h zh2bCAt+o_4yU=P@O?=?FPSI2}^GR&_%u)k122vG~$Gx&4GdU))nxXTx|;hj6no+{{Akuf;rfSkb!A#PV!g!&*Ya2O6}R%HRfAsNV&n>Zui8rt zMV$62gy8)()$gEjV;#Dmj4T^O$6LJ2nZ2qI*seoX!tJo+RjFP8+Yf=@*=vy^&Nzl!}TG2(jU_(c}6f@66+F|ojrt7{OH zlsko(hwGA-n45NLd6UuZR0;1fz4Fl1ftvZIbQ=r zD~wi7Hn+trq}j|Pb0feGe5yjyNHchQKbNEN%pt0?rOn<_rUKLYGME6yIRQ0!;{~@5 z`+@u{kt!~T^L5JmWa$#7Qm%+t5du{XPH*pekKa*gM+CWw8lc9o8LW%w;2THGPD}&% zL6xfA9#*(WnMz_gd>iFKLO)&WB;={|@4G$!R%5@Tsw4IT$cFR5z8>y<1Ia+WA?GnK z3Z&-rfao4qJZwrV4(t5l6P(@TXEwOLyMa;&4ye?ngqG4fmClmwt_F*Fpe0Li&lpTp zzX6FcG^as7&iWoO`hDI3_BGtAcFP$?Z{uv?eR+5dQKlM~IO7qwkXqzH&BuDoTV=YS5 zqqX7bTr=O6&{3~UF7%VDoIAU=7%CD2>%z@`CFaKWPp&E;XPe{*!wDAt9d(ETY`fm|N z?9Tyq?YW5s;+~#O>@SYDj@13bCm3jR6+pv+fpo6`2hXgYn3Jr(6R)vB+;@WhK3xYy zKE)nc zPYYa27`=@BMwE_hz(`>D{%~y!%`2sFu^nFD-vq0~C19ET8N^cZKhEOs6pW(Jr-JBj z1}V5-5C}{WY8~t3$U+)`8Ww5lMZpTH>>6K7b}Z(OhdWogdU&_ z+Mt%^Dh5)gItH&wm#W6D$`*AmNP*Vj_)~d`UNi@%hSerK-7qIHvRTN9dQw2Zo8qVoBTc35hD0FW?t>?Y6Uat*1!}f;a!5Epk;=aY`UM>fuQ@!*lzy+0bv@bgUuC{;^b^^&b?>v(ElhQk{z@pZy>}28wEH0A zKdTp{=aNX@P51Kle?%;blOneoiC|H@K4=)OAC*+H0dHl^a0wvGP$%VE@tcId({)yl z-O;&~lMzNj7niLZe&)kJIbYGC)99!^JM<~LO3hjnssSx||HKz76iUmc)y9|JIe?Y7 z-{2A@c|qo^?j|=IpL<2dpDA)6<2IZtJmy4|B%6U=IdEhA;eM3N#P0`cA;*!(q8|3> z;7OJ+E8kjbEy3Xdv$a2Qg5F9YK%x9zqC}HLlxe6yPAHd-r7}W4bycMzsv5eb!i%aN z6F>baRohC9GnKIUqd7cUN5eg zG-RI33+n$S$b7%aGray=kQHOwux$Ttf=n{x|18Mt3aS5Jf(*_6Z$U;mz&copX~#SG zp!lwXs4ACdE*^4~nAn-XH3<9e;O~00>=Bw(%Z7|Zq;5F)o!$wKKpF4)2Nth7*F9}6 z{5(*kAQ*u?WzLwpH_7tPSsCG4%RFOQ9=!%r)6IFhrKi*D5z;iI{`QsTn~@yZM#;NA zKF{}=_`w#tqH;yCShQk^g7>j5fetBZOd*bkgte(Br_>4M3D6d#;1knQYA7&l7qq$l0 z_p>_yZAWH*)(UB$508>i2QkHmRio+ToiXz$N|QyatK+CiD8nk~Laj>TNo;vB2Y;;@ z@lMei$fT1k4S=2$SS~m)VeIFJVkm^+IIZiRtyjQ7nQ65H*W)Rxw_~uR)&v!s{z`10 zJhbjf27LWl_`Tdme8fgrR|U-l3_E3XuG-YP*MO8BkEb<=`c=eQhy@$JMys$}z53;V;s0z%nG-ht}lzm1y=&R@oD z_oEz`ut|MtwsQjEDir}W(6TthVpUedGkVWh;I@MOp`dNq0U15fkf#>>dKTfUx_ov1 zg1lfeUt4$(fZV3Sjx!=`yjpf$N!mc2s@NJhwURWW6nAPtT_6K9M7mTN zoi=OHuDZGkA1BSU4F*P3RM08%8>Q9baVgzIE)YP&?`bfnLfb(m=s{KnYCmt3pD;`jM#N7pM`P|m5^s?c~W zg|X-(4C+hZCCV7jEuyt1cW21X!5P;nPWrSpF@W`XZ6 zs>xBaE=I?-8~~g`et8z7!%ivCHa=kgJ@9wzZt5yqV~r0`22) z9AbmvS~ehM?Z@9E?DOG#?|?9&blRE%E#MdYU#S{LfJ^;rmG|ExfXV*^Q~UsTodDc$ z(IcxsZJa|%uFPvyU;(fbCb-v`9-3J?BAba42QG_HUM9)VEXA_lb zeWUIZ#+5640Z?JIef1shI>;8SM&K0<=W^K!RgPki*l!7RN+}8$(;k2FqwBfF4Vu@A za*J9hhVMmJUrwlMzTR;5g<{mMnxWopgk$s}3CMB5SP6L*fh z0`y6W`c0cd6d?#93d9RTE)$szCrsb+9(6&vkz2y}~%&C&7ypi}CU$zP+5*$Y9pHN0*?NZ#OvTYX6)?i?25W z*VWVU;p{zb_FWBa8Za38y2m`{%T}T7ae?CGR@Lc@P3{+ zgBgc9lAOe#G(r?=7|w(if}#x2`j&@phI(s%7$+pL1+doO7F*mNof@b5+@!cU)uj3ASp}@r5=-~SznY>>Nx&QGmxYcD$1AXp{}%tdM}P3&{%r>i;NKQcMD&aMwYLA8e9^PJjgw6YCm1>y5 zbL#{t1xh>i>^!8Z#`Mc%uV8AALTgI#R;uvHJ#6Z&u0=^54$58p{ew>+ zU}!VF=#I>rUbHdn5U!Ny7za@RlXc`0jimfXOsxheu08%ldfR4$ zMmP^-CGn2eF-l}`Et~Z!gZ=pu?mL?_4`_gK-OJzv;U;W0xjpiNd@Gm-I=M9J5Zy; za$Y(%;qTfwjZdR?WXM5}O=!YioTK)&({_Hes+aMT7rn8V{n_AG-|f@5f9nnN9`fIt z@9+%tg48N{-7m$krtT-@O>O1^Z;$JL8<{cXA!%0r_;cfATx+1QMax;`+DTe?55reV zKk@5$TmXTJ-msiq@{_ys6RYh`oNNa^ZCv+6t2FhdOdQ_jHupGiksUjGUWWIuEmm;Z zazf(=bvX|2MH_Zd(1LWfFl7oooIu4nE8v~~EIv4Ld=ZIBPcPef#Ge85!sdAU7VelS zi!q;h`wl&!WwGg8-|8zdE{?_NoMCx*GBi4qRu#Ecp@%Kka*sCIfJrk2J+*K{A9CsH zwsbKWGUw?6*@OM0t+OE+Iz^Xn&Ff@d6_G_U*%5aMV+jsE{HU))xPlGUlp~|nZtY2v zp_)knt4!ra1htQUBi{rH{{l4l=UcyT>&Njo=-4}rh(@X-@4!l&G4`LBJU+29j+Ke7 zL3;lO_=Z6I7kpzIb}@$va%xR}z?&{c)sUj}08#sc0%1539#%S=_`UI5SQa|PMsEMR zQYGK=`e(h}ZhQW;7im~=O_Q`t5lH~|*7J7GGk5Gh8P=Ny^1f8uIk{7ZAjWM6zKaZB zO9d=!^+x&#UNm-_LXJXc^lyeX(7Tn1hK7-&Ez=Og< z>)6Q?`6NgPs<>X5_V?NG#4s?@HS5!;|lO`vM)%vuWH?Mmw13D(JT| zHRNKGucF92X zU`t)lf1sh5rH_(LS~BE|KOkg;& z51sXL3dS-iA=NLIPxFQ(#mK0iXQ{)M<=j{!Sa53Bw3qzx`A+ZNiI{?@r-6p}0J-#2f2Xprc6;m( z1F`{cc)*j5P5+hN2Z$dT^<3iPY{S9Z|7&;>kbUCuiB-D)&s@MQ{)ys!0nPwrd!QMU zcXaUfGMQt#%Z@OHe`uGkyJ2{A{|ACUbqap*d{ z{CS~G;C6cR(n9Yz^z8iE$u1ztc?bqy#U3D^373D%9+cbK)e7MXc^+#wgO43*Q}0CC zYX-1bkpvpHqA|2jq{dl_74IInOw_$BN2|QRTUcSN+sWuacV4Sf!OBTo*9jZ&men&` z&!9EX!S3)6M*4r_D&K~KmF5yv1nyVl(c-YdH+uYK^+%vf9)|+Mqyvs?=9jFAiDeQx z%5Q!wW<#Uyr&mdC7x|XNZ?@Db2uUiMxZ~G00-@Qb1?kdzoC{e-F6b%eiAz-7}W4LK(s3 zoT?(Fd?c1@1B{$k5Mfh)g|!OTVXYikx{8v_ii!{keSR(hu%+SGgb+sxbMCJf?z@>O zuW?^z)T%NuO^YSFO700j@3H;g6GQ_ILPp11dhZvE*0uFokW{A)mCy_IzNj!crmj_S z;I7h3eF)#n*n62O3?Ei5^2;pok9IFPSHBc<%#4;AD*bkCKK-(lL|hqdnrT{NSH7Lp zx@#!2FFl#F+i~uQY=?w3tc(_Re+#JsO%XHd_dK{C^pab_{t8>T~S z=ns90sjl)+lyP_U%F{bZ^~jqnlTzPkLCesOG`$nsFx)Hi=g2oxi(pJ&#oV&ixYq53 zD%lGvd2+AUL%uROtF;F&|9Je};d1jF*~R3#BH(p%fA-C7~VZf^lE{Gxy5q0hZ~*eO=W>!gN6jM6|)z$`3mXSi$Er|I?^N*QG7tG z9IA$)!CC!Fnw01yq_Da?AG0COoV21Q`86O{keuR0;K}p-gNwwU_j3h9iefX8MDNVh z6AUfU%>uFrRn+%A5_>Z0+-{5kc)gn>xGJ~4gJ@RgXFieHKiNK}CtJo+&+Sk&P-kD@ zu~6Ww#eKmthT&_*RN5_)yW{NpNVU<;BBHPh#g{vr2#J(7z6`%Kn^71v3#9o;n^d(m zTU1e)iK0}WceYA;OhekB>qRzuJ%F3>DNvtn6pe%VF)M37vly|fobw!y@L?IomuM53 z=fiPET$zJzV0Pib)bjtW;y}OwDo%kRK(Oa;6=&o8w~8Bu(sAsr1dbv8Tg91RWjD55 z0vA^;&W6VFBk;I_0#qC#K*hBW{C5@S!1wf*imNa9N5#=`P$ngk|D)mZs(&Id)R?D@=hKbFF5ubtU|AikW;M5nITcAw8lUSYN;b z=>;GlM%#n(Rj23g3~{!F=ApDxQ_A@lJB)5>92F`xX)l&fq9#=SmZhOSp|gS3^Tl?U6u2cI$Th1GgA4` zdtgvn?7*NUm%^>DS{%n<4y?|6|!^YqRK>PSS60Wy{nN&6L*pt|7FbqMCNDj=V!oE0WC%lHPLPEZ&8hxdd> zaRPknHcDlorAa1I7e|Z%lGZ~fLdvJ-^KN^ih)^s<4{sUY<5U|9QW&ZRYR^8wY3zubyp>AlSmgJ#=qx>Ty7k6&?Ir#^a^j_O7VS{wj^-KxEDBBoO$RzIJ z59~8|6Ak{0W!>RpP`*j{Hw&{XU~AstxayN2Rs1A#7;Tx7FpyJvg%%xl8?CJ1v9;*4js!#tYHkhJ z?sT4_Sp z_>XNS8!SgTmbV`!!apT+%w^rWE|xe2$mC2v#V*k`sOAiw!w);VQeTR=>~}qle$FI* zrPDj_k=4syp-9C+jc>&yHJdLdO~M1o9jAPB)0W`w-PaWN3?_{j4-D{QBul z#rMdpE^tThEDtipY2zU_UTtjS_J9y52ufiik2F~Ba@`HK9ko8iQ_b&{LNrdS{8=yKm5FfUpi^ZnL`%iJsG@!A*|7271S z++;AqM$j`U=Owu|w`SGhjiC7bp=0ps?$<{6K}V(I+}X@iUVl4C+h*ZoU%e|06R(EN=9h&tu7-{dOmi3K@m|ZuSd3g?sqP!IB-g>K}U>;;sqhYPcV>D1P(bTs}VMtvXgQtSck% zZt=AH#N?B1S}XVSSE5aSDQ*np{%E^+1&z`C!HJtbXzw@_sbeQv9iqEFv;1@EjodlQ zoX_N!nUmQ*pZBSG>CXr*ia_2+xnGhfA@{LuJ3;*fBR-n8RvU3OaU9p2P&sY&-`l7l z6dT{DCc)nj-r9s2*ua!#qFn6+n3BoU&e{?B-<0$zpB>?f@4&r^mZj_c9{4ylx>`74 z)$<4w_Rp*$fBOcrMi!fWGeaHUtATqG4D%`vvCr!3>=xxPn2RBUTlcw+^@-M_6Fpc5 z@u_P{@>jjxYTs}xh+X(7ZY7KoBTYsCBH5+VeIrQwK1t`yP&AhKQPWh0Pk`rE`O4&P zzqxmG3`;Ky)no%XP}Fy<&_{xM3#=rRkUk4N&C8L4D(Xj!qfJ5;?4cjg4mzI6CsKIP zp^}vAu4mbw7Lvwke&vbk_UD1#nO@+82c+Th7PiR5fM|h{Jl+1Shbb}OGgjXj199lQ zm#eUcUv-r&+C+=_UtK2c`-rfZr@QSZn_qgR{)}#t+%GV?L(fS4#%U=B>X3efXA4Ka z>QJ<6sMM1Nh1nr^O;gC(l9uOwuxo4}`rxRDfi2(cdoJYruCTxsB%5fP#G_?OaDP+r zq5U=)ef9X-0eT8rF+X;L&cH{6G^}>$VE)CDYv~#Re-lT8yAbnkB_;lMj5h$Z?ZnKOyM>D5Fk`H#I6<8SLW5jy?7QyoP3tv!D7${nBm_)Z?QdchZ zoX70(PA7dK=Y=ZDd(jPlX_QvtqnuECKfR4qz!~z5t>Jg{FqlpJDrD;VR*F_H`fL-* z%h{9sq@Iye5hcbhEfW#=SjtB%qXAn{iRh@(H~iVy1I7Z$mnz z{}!Tw^uv6P_Nzxc5z6Ko=3Q$xFu*^Wp%_;3W~RE)K^vs>yHKir0jyA*o0+Yh%MMJ* z`#xPsmUjim{?AIsh}a$KMUVHB?4>Wi)7m)PnK}ricmveby@I|zUyHzvgw&WO?;;SmMQ5XsWy&bC~E4^j!l8AE_vH!2F zw}=wnKr_Y#o<1o(w05ybxw(%J2NEvVFG=apG zO2~VaAvHT(-Uy7#93bAIRRWfK;{I&Kr5fv%(O-ckW9FE{em{!>4o*Vt_ zTMo3Pz>QXeVIG8ekkMu=1_pIq!h+g!sC5E^fIGsrJ+>P=q%Vqdo`?!O^D9FMUzJH? ziPA>v8k_awM~OOURuwMXN2@?#EdBF1X2ff!6wrcQEc|P6Rls4}D#FHIHfo!%Yebdz z#IGquurE2PDYnOYBb3uVjhL(be9NWE=q;w{wBQ;QH=RxK~A-)eai zU*6_6oG=na99S{uEio3NKFMhBedHLcNanplgTNF^WMQ6H7D#!-VjZA)0U8Zn3k0-P zpf-^@bB!fdH`bAQYXT>O)siTdYjr!urD=72yZp;IbB=aoPy7!q@_Hm zVSn||Bsr?dhUTHxjd*Xp;}=tPd{z&8xCvTMqcWa&W`L(VvFQT3NlSFlwQaJ_|JJa* z<~S=!{aL1$Z}w8v*#ezX^rrs9bkFdcq5%RopE;X68%Gm8PL_XepZ!hVR@+H5XLJ!J zah2JHKT&`8_LU3iG(suzLWxbVfVRoo^xRc>rGzZ?--u(+x zSIt&4ys3?S<8W*T>_tWYkhf5*#7vsHTKbm2(`ew%4Hy38RxH`K-<|*T>#H}XC$D~e zeRBHk#pU_Cch^5%-<-dG_wE$2r5xPAwW!~{b2q`fdv}wSvV8aM$~&jFagJKUB7+>j zI@OT(2RaLGJIr;?O`9W4z>olZh3!b=6w$vC@{Y_z?8~7QrI*mHvy@FleJ`*~ddrM9 zLPzolB*I}nf+!`$dxJ-Pg1z_dq_{^s7i^l`_9+Co1}x1dQFgT>pvsmyKMJj|I>CnZ zP(t5eokIdKKt;~3F3#A?F{+OjXNX+AX{)x-^==NUc%UA$q28)JMt#h*=NvVYTrc>x zp0+*pc-TDt9}O>1o4L|?xWa_3-uu%3@!!W^hSB_e{H48h;Y9v@Z0@r0mkvN;3t9L2 zru6^y8c=6{;5$9zdcJ?vQv*9%24W_x=8-svLf7SHoSOvOab9e;{%by7@qmB~r5WOH7$ zy#(Xk0Z&N0%!O9l1BF4ALc~L;@D^M(C63W*220&+FfO+X_0M1UB_-kUY>9hPBA&G_ z1nx5Rc5ke9-ZwF&hXe0)fM~F|JUEQF(ay*A4iiE_dLgXxGqowhbjX50@39%d8ztRA(8)l0+k z_tMnnfBROTi-}{wy>xMC{y@R#TBKL_5r+9xo8kwav@>t~Y$H@pZpXE6Tne97W-j~l z&tka6HsuV7<2lB4gt?zvos-<@6xI-5@kAuRF3CGy2<0%`i#+31|7Ec9$05NP*FwU< z8CkLASY~^Y3?){?S;?zfW=+8>X8FoYS6e{|S&~mLT#sIT6Q8cISbcjHzqMC8!pB;S zP*>Nvunsujxo18&l=&+S!EeGj8JpU2EJ&sr#!T>A)H)eM| z-Ih~01u~bZuAtZPL9T(OxRY6ZIA;HkRf{2_;dN)c?!9CKGDC|V`hpz**;so%^zm34 zWcTxAfswLcHe|qb*gvY0iM&6kCOY8n23{?V;|v`)J-MT~XZ_(I{x<}FSS4m~r}36P z(T#p0sIFRIqh6zPea|@NOm2530eY)$W^?Qs1SEZ* zem_uWteY|O+DosCCbS;{`rx9v=Sz2g`9$WzL`4aH0^9cK#4`2=XKuyR$>rI$mQabR z`U9T|Dj}|MShKAsEa=m)8hoLhQyCGn{j8osvxb_N{%%GaCj2UX)59?YU|K(e-aBb$ z=<+vPvjoKh*5ibpMs~|GY}ZH8Q9_CY240%QL{#AbqdhLGER_e^wkm-R7_>1TYlmb8KNP2_#v&-kpY7V2Z}Sq1>SMAvQ%`o7BnbA&7~M`oWkudp*nh+7CAFBzj4ebp6Rf29!2FZI z$?@6Y6w*7P`iI`(l|j<`t)S5zg>5GNc|xyOmN-ig@1S#$RzJ0e&g!7Z`?aov;2=@` zSa85O{C|UE`TwIyLoO=-1$V*k=zSkbi9SUlX-Bf=OX7+NtdO&#T-BgxEarZ$4a)rB z&e*#Z%e|vD?zMNJ_GmPHtf#{fg4P1*w0rPxd(@&}_6X%Ixq~t3Pj_jdiBG%r--%_K zkL-2lRo^tVc6LFl4)vcYsO%{qjxcvttG*MyODfuUmf?o9C0=CMsHlI*Z%~QEZSrPS zq4jN3`Xd3U6#$2&GQA)gTCN+bJ(=#zj$Eh@uWUFKeE`V#bZp0!1wjl}J!Qg5LT}3U zI|yk@7_yF1WZz{MG;`C(fmU9Bi!1)#<}?L znZ4(AcY*tk4N)+sR=AVIQ|B(*Ij3Ca_t&@LKIshEOMv0=G6=`*`33J5(*tWjs5kN&BZ zU@o!gi236e8VmQ*e2LD5w)IuWbL%ou?@#S#J)a$acKq@SYY}0zk{gGsxV~F2$Ls^M zGkDoc760xt_rIUB59|YDSL}+#|7-t;ePAQI32rI+_siHd=-KNIA@i6HFn9?D;C&dUB{1!ciCt2O_!cOks^U=#grd5~Rozzwq z`4u>LxixhdpLogal6e*;h5lL*ju~X0 z0DqxCC4t<+b448p?I z+DcMD0X_U`C)eF_t(Gs2*$G}a1F>=f2p3C|vMGBX+HkOY(8WUlaG?>&S9#UY1&8|i zAX+uy*k4RH6zi@IQ7QU!qE3W@zTd=g$_`DL!T%+h4c* z(5}KE;R5JQOb*Ie+uV?GQ1Fbb8(?Jpl$E%5DfAC7Y6R2Zm5qMF6Or-82q?{N0AR-+ z1aAa?e(*UPu@{H-wkW)|6zSbj{j4hEDpu;bHRkNjnWNB#*C}1Sblo9^BY)!xT)4Hb zxbK^;a<6z8lD*aL?S;D1c{ki2O3G)DUj(JCu7heX;RE-FQIDd-UevMY(Os0z#mN*} zS}iGEK2~*@%eD6-U1qND**ytF*mu9jiuZU>$M%PChCwa|5l?i11<~u+ih*PDCWg!# zv2V4~)fZr$^xrm}3)8Ab4-XebLsm5XKxCm5DpFv~n2p#4IGVnA_$&R=tcu-LP-Bw^ zxrKw<`0-xC*n{VRGL6vXrQ?F9*m(AB*bdipa2(y|7;J)y(-7S@OWGdU3p;NU`dV+e z-@Q~jkP>~Dm+XSGTXO^XO1s|1`0YpCMZ^om+^N-jx9MK>i@z=R4v%C&;efAF66!TL zi>=VJuZY|cnriP;UiI_#(wqZ4N}IZP)VV0DH_{FDDemBS?LJXtY0rK0_X)@BFBC!d z*>d6jP#4M{((e+h8gAP6y!-Q3fTjZ5j?setg}j7q21kgiYQ%t(Q`DphsY4QAh%(-P zJtMor+BPy56{=Db(W$4UBn{&8V@nC^Y@sX&KlFFR3)-7B*{!JeT!n7cFC}Zu%BE%$ zUT~G!o4J~gS8MzjQXaD(`wu)~8iv|X99op0FO{k7*APF4z5pkM(MOg)`VXwTso_)Z zzaaqp|Fie6%Z=mKq5!;q=P6L0Q|0b#OP1{Jp6UMfNy@e?w>`FO>uNj6NgxuE&>{&A zK}xOO*;VI3zVGGElYE66FA^mJwA}4Ugj8kP6tM^_01NBBblC)iLK!Zfvc}4Nlx3Z? zG#$$~L=~Xwn2WwkTXrv-8A65gYS^Rss<53ab9+cVy)0fBV-=iuHc!fv`mhek+KVA% zN5~ley#w)eu6<8^T}KVJG`h<$PuI9Dy0W5iH8W?e2>44^HTP!Kpan9hlUGt7sX|EJ z{(ho&<>WvxzKJG8M{k|cB!D+cPyr!w96=Bhg^owGIJ;QmgF|+aW_8qgfQ^8va9eI> zTEyAJ55O=A!5GgN2Ow11#bU!6mABYq+^hg5$nimd?8wrKFA?m|Nm?JpW6ojT9!Hq0<1kelx3*Zw1s3T;~fe3ajeIU+rJZAPm_}1|bMr zuPY*2nE0fXBWH-1m@ABMN&a)aRA3hIEaZpukcK3HV{|A7w0_f?#X$8%+1reNy+|)B z3*xHOL&e$CrCScPcyrU^)c>q9h6|RnRh<>;c9FR%CWG4VMOMBIFop8dc?vx3`0Sf^&+*^oMNv>}OO& z3r%8PMzpI{Z)LUgv?^pJ@<=&Igw%@iFht+!UzK!bE3zOFm_wmY;pevsy4e2&&XY2v zS}^m5#4i50fPvJhuvM0x#JW!OGH@823(ksu0(l}(tC?+0kc*jt&ZSJIVaS+sz1 zcU+6Oen4DIRSrOT@QTg>F!j3UIu5?Ujn6~eRUL`c13kw>P<$9JM}P?LM*R?&xE3{y z0kQ2bzvS_ppz&tbg2)65+5ON)vqNgb`T-xV*r|)`{Iy_03ij%IRnWmMc3|KvWE8si zOoB@$E2)p_ohu6VYJ1>~$eF~M0|%+x&T%;j?o|A?kjVsw7D8ZTB?O#5h4!uIXhk4q zH=ydNG6MvWOzk-$fu`)79zdMH5_^*UxM5p|{*Vg|7^Z|)2kEk5jz`s#`{{Z3w+MmD zhO(XeD4>{zIwm#_Im2{d&Z&SmCocR(JaB&6k;8l|kg9u6{1C)%xq^zqvX)e*5%vPV zMFCli@2xF(b&Ssx0EhnF_`d4tcyj|0%@~ZjpDh_%%4bA$AD{ zF4b9GS-e=mnRpIdO{f60h=&e98$lZ|$|3(b2ynP5KWEa6u4s0o^b)-?LN|YhRX{WUqax=E(j@M#=Pwi{r?#zVP%)3LS~e(OhEg zV-`tkdP&XAWg#I~LePR4OA#pvq53^#gKe+T6nk1xzgeonYi`DAD^oU9o(I_e1l-68 zv9DFb6^K2^HZFH9R=W|%OzHqMkg(?1pJYI*8Pt5BH_(G)29n(r_S@l{T>%==8?3bz zFkT-j%eW>#N~TnoOlKI^E%TWAypFngv|jABFSp7QH8n~wuku8!S1wP)e~@YAUn^Vm z{0(jYJ8o#6a5+E)1v!$IL0!^S@g8wW4)K$|@-7a?7dx&a>9ZPWEQT)x->gkOUD`VC!pEMkds1m za&jX=Bs3sBpsxTZp9GM30Ja5w3IA%#g=gKuEY+7-tkYj#!&8Kf%$R=qRb7f!?S^vHA(trSEUm_*WGDCeIHI3`!hug zz!O}JNWe?w9i%M^hbXi-k`5z^f~pvTo(%r|7eSW^;FD;hQQ0MEqfy=ph{u{rc$K+A za>y_WC&F=ARIU&#RlFpoh9H^y?7OakX(C45O6Fi?71EkLiOJB|bP6=hr)0*2Av8an zlVFOyab=FfNkuS6^pKbEIsA$LNBgtFka}X<(pxK{XcRfZ4~kX+^l={rR4ZapwJG-O z0}x^R&pJy5%HGb}3EIl%sA7%L8uP=+D{f*c3y{m}Jy7&6fHu)vA`XYGXoeC(+r{3i zrE2=}f?^xDCIev4E?%uA(**C66$0clX%JR^JB3(+O4q=1ekczg;oqa&2($>HyP&^0 z6)}p6Zzt>a`kirJr*eF=`-~RYM2)^R6}c8;QhG0dAHbpiK6F{%3GHTl`15(dJ~`K?G6Pf%E;6XWjZaS6{jjgUn=Pw(F4KIgYS@;V{3rdrn79p9$=*&W|j(6-=| zqqe+=R0O2e70RH_m~X3Yb{3Zbly z7U#RH)oL}7!|msve+HVlwjr>Qh22$P9Mb!Gy$T*rZmxLH!(?sUjg@IN>e~JO>`n{-s!8 z9M}2QTP_~(@8aUAH$KF1qzrcx%#@jr)ps^H zQzTJy*NON#KOkSkHskU8DNkq~AJ11=FFGDbjx3#Bf$asxP|8v-shWeC3aonUcU`(?D)p1f;)zgI02ogt1{Eu09*+I7kr9RlHh~guU7X3 zc_RU!Aq+yj{N${$zAssz=mz>!6xCot4=eQoS7ZRwoPQF{l#3G0 zjF%Ek*Jnbs3|&x;69P@*Vv_fY$&QN`jMsbiQ-rY!ZshgFkGaWt8&cv#p%_jACVdOC zUko6sx;Fd*i~%OMr{Hx=Yjf#dr=l5?{g*4_q>a57Ea9Z9ax_yn{s=Xqz6w#O2KBTL zn(9NNT@|ZBO!2Nd#=)ZV36g$N$WUA&0bmrBiv@}?7OBN_WDFCFz;`LXWKnFUg`*g} zIg1lFC`Z{#FGRrzTIg*`J6DJg?fRfu1e%5LzhUWD|W2QQ&E)XwEv9 zzz*;X1r)qFl|zA0+c&Q+Hg*I5m$}mh=yz9 z5gXk_LkH7Ir?jy$4~WPI7^|>MP`cJ;Ns&h}=L*@)$~aoxyZ}rnhP(p$(!msVPuF)) zh}2J75L?NdWm+A^;j^bb&(A!!prey~6ez`RT&7T6aYA@dDR;z<#cVU1Sb#B&xwp7< zYc8TS%QePTAc&^`9RTP!3TV9Y`W1G?;nTs?&X}zG*_|=DpgljzOKCR*y@Pgz$7~8C zW)$etD0NY*OaJ-dkY#dRoP@Hx-YYI+yF60PYa%L1dPOcs@!Eq7DUn*A07*i$dRgcZ zamB20K23Dor@$sw!~}jA=bwrF;0!F3TP_D{5PYh`#%h1rCUb8N1N-EzFgHP#)lT}Q zT?W)+z@Eb)i8S)t%Jj1-4}(|jL6D;=XZtgvC}sWEBQwh$0x4I`vI_Z~W5Uic0qh(T zHn#8Km~bf^6BsAr$egAb+Gyb6Hqs09Dr=W*B$Ql;NlU2$G&#$Z9LOa(PHd8$l9C;D zq6B!kF;PnBATC4h=>?pt z#tR-W>BNT?;uIxjaSTjV<_P8Ajs+Q$Ud#D$1q3DUQEP%+Xs~lsYqHh2lh!Q8u7^mZ zZ$yDh0U5;+KPKjGAk-Lpv$|$jL)^*SxDV7ey)&}rfn|i=3FDnSkZg;_Rp zukD(VVmj2lmT}WCz#$hm(pEC%t1(1MSTy$9QZ60JOM?Vi2gUtrbzitBn%osi_>96) zLyO97bh z51bcOkSK7li+S2GQ4AK*kb*bjVb$^@GjA;3%SA2;76&mn1||bvzENBoC2732TNDJy z3!TMx!zAYT6Pf=<3Bf)#N3V{k2Z=Edeei%KZ89*-VDrOu%VDeUMtDC+IWU3 zG1_*FvM+884gnB_PD&8rY+vKaEiGLqwmq;TN21V=LV2SYE}lHKs`NyB1`pDazlJdP z>P3|yv(1NLhyw2u_&;y{`k()-y#4c=H-D*BKK|`L-~6@8|MADSe}4N<^~Zm{ef#Fk zUw*y0=-!?G4Zr>8U%bejiogE(<}c{{Z<;{fzWww6G8$%v(MS#SwM#~({*FK1i%}aecOz(E!;~7TS2kcXM6OQ)7%YG- z)zBIRM^|#{rIPAByE*_Lr;UScX4P{wU&%$#i_J>hnT^N%GwxE$V6Mw&m~$7#JjGJN2{jGn$ruu@k&x*!N4!L*o|;6tekQf|xN8HZ z;9SuU<>b)SRIako2_BxCHykP);;_Z5F>>7o-%3VXw99J%eZ_9%f{3ya6E6!V8Sq>y z2px#v6rSi2dmM09Tf~0p#F#dVW#m~?lnR1IO!QQvm4Xr(aThGDLUl<~Ro^niLzXMg zQU;U4S@B{;o^+;Oq3Zc3IHD-1j3aE9JG-x%iF_vOsDHaFH*BNpeJ}Ce&fM?ma#9*f zy_BanR8GY)O^}{6e5(n#`^69$UtldPk&-gRnbLS-SYnG&fJ0CLxOkT;U8QnQ7^0Ez zXcREHGDgM?+sHvW&K2_s@{+Q~6a>g6Gq&sh>VY1WUL|<+3Bb1|=|(UWS`iN+TLc=X zswW4LM-Ra8t@4MbI_fBo$%jr{?UE})1H=}HC+G}_3#bQuIw2v~q(L8AI^_n!09sQ9 zf;$uN;T{0%t&C(!FMlR>T7y*#NHm`CFkS)0av)W!lLx=}&K61<3hadkU2Me_!U8hG z6ccGOR^Ppg>oo~u^_c^4apAc)6d`b~j+E%x5dxY}#s?WkW}Vv1QnBXAB+bdK5<4sj zzLH@kchDMsgL1p(c4zy6c(IOehCG`XINY7wUDC9gNY<+sU*bPF#2crQ9UD*vcK3O_ zF#8PK5p=|jCMR>&xfI~>coJ6Ti2bJ+He+~F5iM%acsaU*2iha3QO!%JxrKR*7bk}c zo?Km==&X;RX7NioguETar+*Sxnr2+RmQ{*vAy;eA;P~ zkAknuPyge;7}6MoKUMxKRdVuA|6sRnz+T8a)s=kXfGvLMvA_OtN9>M|tg1jW{fE%H z0OW;%R`d-3cZ63g!nQcZ9FGC|qRf!8@V}(w77UT6?YpT`uy`aCpWw$Ha(uoSr3>|k zL{C}E=_@V#?ENiuK`32xY{WHt#Qo$97ko;gijo8H8j! z425YX@NxubWHDyK4^YL#VOK)p7fkvBNpO1*AF2t|6Zt{{BH!i%gcHNk|LFX`bAm?{>ieBQL}ON+%bS3m19fV2LF(*aKpz z`Cb^KkS0+H;@)ROUviFSBjpUOT7D`tY2}1P)x;*EMBeX=yU`s|87~58F$#M_Y%|w` ztm-%gBq_TkBAKbNAAtbI-Kl6M7n-;|CUAxf>;1QH{~*jiFfk5f4Y6dvZDitoD4qHZ9Mj6W zrtyFb?p|xwYl*6y++A`YN>(59KXk>$bdz4YVwH!89nmDcs$ohy(b8kfNpfdq+Do@z zd0|s&Jy)q&NPu|A1IK{bc4w{0iN-?mtKkF(cEyK5xDdL&gLpQ^kkff33_F*0fzz!i zoo<u!Jh2hPsIG#+1bJyD zByDUp+T2#W?dQmx!AO4fPsqjl($s*kzI& z^g>|cQJi^8`Ue<6Ozp-M%ra4YFwrdmn*&kk$Q_5wDIc~{AqqCsjM|MP(Vz#}K`Qu+ zely%!rn({l_JAF$Ib!k~-5PPGRfWMcR`A#p`HL`>`eQRHEdo5>*a7iqorE%{9I8{%0Y+<^09$7k zyBvWwvd9bt;=()s>O+soFinV^$dCOr9*%DtCH;$Ld zCkr%l%5E@c#{21ea4{l6#gxjH&o7#RVjkQLo*Cc`o)_c|UV9)*wrw#Y8m!RJYZ2Qd z9u6h-lVMxtTOkf-vxw_QAxcqINz=@ELc?IyOlsgm7kY4vD)BHXN%YpCS@?G8>k`D- zFLviszwORvl7E0_X33mT<1wmu$qgse7-lBpeLPM~0da8{8h9Y58%*LW4*(7`mGK3w zG8g?uahVkK)pxLk!&G8%`#?yWbF5jZGu=YM!(v=t)SKcory>I~r8@WDj^35(CK76x z<(0`C6a_%$XN5!LfZrk%ECA815TjZgKE;dnQ*6rsAZe&ES<$lm9Jkb*e`P`q&)D}Y z`FR;wlET(_Z<3KjZH(@;h@l^Fo^BZ-g-Jgrt%fMHLg>!jeks79&-jph z@mxD9u!1jwbOcqaP!cYt;L-ymP^%CZLZ{CfuCiOC%)?t7uiPjk$n2AYQhd8;=?TX} z7sDp0PJpxoR;H!RfisH%nJ5+J7^4jvw&<0Y1b5 zt%4Iku{U;5`Zsf_*ORKeWSDG(ObGrh!ZYZUVQPiEtEwxL(TZ$g&e6^%gbLm>_NUvM zqQ&09^QbWcbLs6RwM#NI)TkO?x^WkqJq~M6Bpg^4U(5~kWyGEDDVuN0;wOzIXAY#) zG^y@VHnk;4Y3s15n-k9&mV%e$Rg)p$mRX1;FjwJhup;qXJZ8~wr3jq(o^JIl)pF{_ z@m%#PUsRlm(R5J~N8|j}U>v@oVwH?QGb#CsDc9Ozp7RNL+%pDymJ`{AE&i+f3NB3SV7~7Y)Xs{pzSN zhCEx?*~+GuYvN&mz}WjEXrZ+^1kdXb4sU~2ik+j_EDC(LaOCLY*xruEbU;> zGA|&wpY&a`W3(ncCxK(nu`T#r3f?e)Z*^vBpj0VURa#FSFrQ<)1oC*dEYc*K$Poe< zM)XLYjl7T%wt#{+9O_$ejzwlQ{taH>#vNi$zq~XPB$CBt_aQs`N>xWuC~_?Ev_QJ0 zt0;COCxjj%5p@gD2u-qZ;&3m2;4sP7;!4AI4ly zoC^(o)nEWc9tPiu#<(!6kWq1Co`ur*$RznQ!=)5~@)u3g9Z{4d8JEcxw|(`N^_H;TS5=TRw`?kcX+j*$&`R_*3?RD> zTt?JmxFY~PJ(6rBmTsF#Gp#Q4ufn8JWCbYH4AEcGEvl|rOr{@e&3Yx*qky1du~Ws9 zDe@@RuJgB4l-Y-r#^N-;c;u<421O!eOuh)A#UtR6rO}$l5K3!m?xd;6rOciGiKkxD zGaW$3k?#v9^6}>e225dC3rp4Uh5)aM$ENKemLn&1$9=KQ{UauLHxgAp63ETYgLxq54 z@-;x&R!-t!BhM>dd?WT6hLECASFN7qv6H@xN~X`a{7FyN3rT=@t_hXe6;%EtS#~cC zP1~tjt)?nxg<@w`@g18jy``Ba+33{Ck@k9*jk4%ueHByB|D8ptZUG`pMTs2zTZB?# zKd)vGBS?Rl46vYmddC(@OeYOYr)DMNR=Q`8^u^gZU{B4Z;e5US((x_?s|*8qivQt)ps(M8=*`<27Xk1PQ9NK7hNNrd@ z;KNnH)|vV1i7*uG)%U8PgI(;vz*!umL(UUijz|!HR8KUdV6V0Z-jINg(1IRtkjgM6 zsoz3Kc^Z|9KzT=&(j*$ZxEaj1OR;(TqF;)g$W&Zum?fmZ9=n;VpeL_H$(o4G#PAfq z@f}KcmRckuQnLlER*vo|)+^~T*lTo8X*;G+f4z33>*>JsrBSi7x5m%nu#NmeWyTU0 zD>^ONb8yHW5Q;+*EPzIV94LsV6*-WJw!)fI1&#B&_W9XK_q_25T*xosv;b603%lu( zQ>hSDS>Gid>w&yKR!VzN{mjD7&$hJxUMKl zG*J~`^fqCf`8B43+nuBS?UEpTYd4H2CN(M~GfQ`j>b9gIi63)fS#10C5;0l3%6=hK z#X`smb5xbgknF-?Jov-*`AOsEyz1K9B*)0JeS$r`3?*5##$DB(RSygc+u10D*rBQQ z2#HS|GG640_y&mjNmR_JzzSQT?TgXjq>Ka|P87nD8OIV}s2Mc(ni2CtOn;0mBOL=* zAn^mPYVsvT<$M&lSVS-BVSSCn@ZA?;+k!xRl#4|MSm?s0P0kr5z0){E**&6qWr?{T zph{dMXrz-#nFJ~3EKS>$YrE2ii?=j{%_U8D!av9M2$AL2aTfY@I;A2RjzzJaKw4n^ z0MD?4#=PJ$_QnQD{*n}fae?Hl;qHe0m1K|6t0>#L?ef~>+}GyWx>+_LjjaYirBdN4 z**9O9ykt9X!2ro|5MF#ez*Y$66QU|L7hlM1_Q}rRq(k_1N+^d65|bT-jHTrerr=@3 ziwz}SHd~dgo^c~7D_h=)Fmn4)_ZtLs;X2rx9>n#lMuhD=k)Z>7dg^w0mI4GFaXW5n zXKnq~3rkszxHX0`_@5P7lMa09s?o*L-rg(4jDb38i+2mA7R6>43-6M-RXlLnIqO^k zX-gU{||WC&{l{gWu1G%)2ka?KgP6$q&~Qc?I^S}XN*vue>K zth3K2cK}8Vi=nKlx@Ar)!9hnv! zVG)#rX0$eJRax*gA_@ zKCUMd*2Ct^IpU58Phocp-}rjVD-H+SJ@M^o&Rg%|PIN!Ji#sX$7~hbBSQ{UVbZ4Fx zY4rlob+oGxw3pvAbxQD-+z~v`YIdYaA*FlQ(>AX2 zM0l=B*c%mM=sVdbQe_-6$`^(-UQ$zw4}Z2>vj#%ID>0Wd%m{4hnh^91<;IqY^@j2n z!@NFI8I;Mcu`l{5ev+M2K?DPK<*~~SQ9blXvYFb&uWyHL)qqox^W4^T<>wU;HlxJ3 zAjCgAs+gX3(tDVV{$EpmKK8NHQMT}l%7<3@GnA8EGv95{ z=T!4gp*%q;fK+iA(uLYE)6F(BzLr}P@ZIj4__`V7>kyQFKzBKEbqFt`KhURP@!s1S zg_@9%c+ZIR%>$5ie!AmtoQaruM@M5A0~0Yvv8kHz;ED$zo-$ffJyujNH26Ej;{Hpe zhI$DT;I>JMZD3xYx;S=f!xk8qmZ>?Es+vs0}TB@0Bjba9b zy;J<@EU{F*gu#!ShM?oH9Y8#jYN;|w*#Qs*I$h{fQH;bUb8ij<8=Tw~*_(_)D#gLk zE#Z(2s!aOwq-xwxhW#f&%9T8=C)e?o=O_pe_g;sik=X5=d&N{yMH#K&;_-x` zUzbR-z3y;dd(6oUt<9smR_J%W_9DOywnUG^bQSirY-gCRpC?=>#6mU4Wskj(@|iDBhq zXu4Nbi<2p+l!;V|1+uD{aXl)aPO_@SYY~r&vGQ@LlH!*uc>)-nKsNgbRX8w&nPQU^ z4id*wb_*F-f)j?{m67p``P?Cx$!{g54pmLyl;i6JTRc380hf@CS6(;~sjZYr_drn? z`Fa6!*~Zd3bSn8pi8Hldt?r9Z zubjjgM(|2i`^=D^8|YI}fs~2SynZtQdTF!Ljn76hRM5x*kb?1y>Xap`V6UrzE%6{v zYne){&nl(r8rG9jEo%tkyjnULcL|7KNuJ4(RZ2nSOpna=SX~iTN`c&hfV12-3OuDC zt_Vp>0#GTS8-=DVKwJ`{Ntd63axGw;9i5W?stnGCWw@sQ#^t9w&E~B{gg*2&+0a z1Jv;ZCn;FJFD=`p(6TX6S1EfN$z=NaLAFWL%9HfWIV{a$Wynp&P8c{?t_&$#6iJwz z5=JE{wqy)h`2}(U_#G7i{Ck>#Zp$ruJGIqq4?4(U*F#AWQYl{*NPIES`*|#QGbW6 zsW!g(aob2$XwTul*aOT+U{z;#Cb7-=TuO2c$y zv$3qCnsCCEu5i_)@&F^FQsG%{s|Oh^=l*`Ry1%b-WJa2i2+NI~=WtZ{1t8BNwlGDo zxd$}l!e6JNq1_&bypFn&lzA#I33AG3VR}nLf=UHnr(vbP}EB0wvDM& zIf?=jXLzB9sPC18oozusJQ@6P{*-~RJ2UgS>2U;ljb7j*tNO(1XI{`r5E9B@XS#a>t;K}9V6 zClCfD#VEBL+o3xNoA#^=4y1J{KZrm)PwnxH>AxbaM|o57Yc~s*_?QU!DQVvlouBPK zF2Vf1tXjVx-*K5RaOXI_a~yw`c_`j3iIAt5wLMN6*A}{QcDKc=X zT+*+tK;r4{6MdTj9%Id1F4*s@e1nmVk!Px(&)`OZNEZU~Y-6of3`SD5kYS?=PC$Sx z>|^AG=K41%pol#$Q(G+@uEEShP4nR*+Kd$O~Uh!4PD6!on$t)4@5W2+#?M z92*3vgt|V3#cpbJY5P_Qh$#fffkPjg5Yl3KM-a?j?2^jTrxTTx# zL}Tm;L6U!gar@2!1SC{(6ml}A1I|vpn;Izp7-xu0cW|)aDVj-oc!EgaQEAj-3W#H? z5+lFVfR6%8P%M7$hS(UZAps7a@r3Z{fn`5s2=nM2n2;!-)pW6?I)5hAv*tcuOn?f3 zgCGq-y#`$DMT~hgf|3$=KfEhJLd->7b0K%Fc4X~GbxL3#E3Wm(sh36OA; z-QtDhJ5XhF>CR9_GiD(TJLn5>+JJwH$Z!#wCEJyKvRQWT<->Ggm%=IW%&@D4U6Q&k z1rSWQ$#Fm;t<-0kx$<60pQ9|9mW3#%N|Hiptu;5P33%E|{oPX1=4FwUE2=d)mA+25 zwu%ymD@fT zA@ZQ7<*kyf7stB+GWS$Pb}%$o zAv+FwAdOcdwW&(dFBsl!V>F^A$_TMeMKn~q$`VBZo>@q--3<1&CpptfK)*6gIW?Rz zxAVI#_N~#IBlG}t7};FJd4;nJ&Q{ple#K?|G}fBOyP|hcw0V_aXqM-CKN#9s`rL*# zq2SaZ))X`lmt6T}Rfxz`p}Nh5=!}YvDt$JR)$yy-U${nFp6kP4XdkxEPZ~GpRoC8T z$)b{_2KG1C8!^xzD1L#VazP?6hg^b|^-4e&`=7wMN237g+hX&E#7JUZ^^&9jwI7Fd!Xd!=cD8Ewr7`z4)yTrpG3Cxq9 z@2j4ItFVaU$UNj^1kR8@i9wgH;r2rKc^$RneL?`BKwrPi%SG?AUfHA0pNNxgDDwxy z{Ib5UVOzdXLDrWlwf`!K?8}$+-_O+bPlsw77vzs)Cz#9~likaakU(u@12RKFfNez8 zwP2*G;RD3Z_uTNN24xeM7F}l+gIft`GH5U0#_|FVEat8&rD(mjg8X^z7^QR@`&_w^ zxh(jTQkMm^UF^Nm>%ySwKjVuF-%^arwzLD(f)2X8HPR5sK3OF}M?Op{ENUu@)>aPu zHQtoKBX+UjaaTFita7N~Dbp@CXhf{WFhp}`&P&OD=^E>*vbu>zMeW*?yGw8(KyJVK zX+T0Del&;+v6h?Ka^<-UfaS8+rjxyk;Q)dDleMq3$SOi;UlU%;$V4E5~%sZLlbX{WxKh`L?Abf z5>0pkeobTi%C^BYKA1eY%@4D}OTnS=y_jh#ep6>t=?mmqsbca}ol8zt;+ZtNGg_#j z_V*)4_)W*lm8(`Uv5|^#Y|{+?oO;&#=@hl;8~}#-RX5~N-c_}JiK^BqnXmTY-MdVk zYc04-wXlopTlPocvIiIr*WIj89s) zS(_CqKhKlqmRrgNRg~RHTMX68>6FdVq-Rsk&*Zc*HT7Gc9e(ouma*H)TNCI`H|ql+wA8G*tj*8I;U}W{t8XZ97L& ziQpWwd`JaZkV<8kFQ_Gv%41{zRFnNNfVf&WVjUA?05m^SQ7$WF0ChvXhivTz1DIMF zhD;O8t<5V`x=zE!>I^AP$N=Ofo+-l*8Nf8>oJ1>^`=?A8q*(}LVRj#tsmB0EYjXOm z=I1dvZ<$O!YqRngK$Q7=ww#N{ECY`***A;F)X%YF5ViSY0hnfaRt&PM=-Wt_bE=dn z##zR&S4si6pY+XDd+N(7>HvwjjHJ+BNEns>PFf&fb{_O~YGO2`kP*z&qu+Lx99`na znkv?vf6I^YZ+VHRlGo=AVeh;l3fmfQ2%4!_p%mtv;Az_%$xzmh73zbSHk{mD0xLi~ zpAK|r73gy8OT4-vy&uDrAdJRp<@tA2Ix3sF6NnLp4gUR^VYqbWWEg?1SF6a z>h#owHzXcULKFzWJ23EP>!46>L%!8R0-z@X&)L6Kpa`FXZQy`AL=!l}Bnqnh3n2k} zvODKd79@%-S`pPnM7$z2XZ>5rk6aaF>m`(viuVfoifOotTXlh{f`>myBA8L1@j892 zlm*%2m+qOB3}zkv({tqlnFmc|B2fXouSqu8$ptSi7sNhX4z?DTjq*NVqQAOvl^>LN zt~LErNRbV0pa;i7S@x!LcY5=d?KrOByKJPqeY7p{=?h#8rnUXl97|{{#kH(JctKRY zKz0(vZs-=g&*3!gmJ{L$M=+HsRFApNl14Cd?df(Ws_y`n%xXKAiO!cRMa-?%w~F+r zn@3VfiiPH{*~T$!_%Y1AO(b{n2?X<;-%`75AWZfi4IvLqm?NQa9g$!T0~>?^9F4FA zLh|PoK*)=7+(avR->iUOm4R8i!SYdA0hSZdaLEo+Nd~|4+#e4~%rZw`6ZUYmp9BDr`q18P0f5Kky?T~puhP7v@ScPR1& z`^2WHB&N@Lo zO7381d4rVIorVi=r=XTxIv9nM`v`4Hnz%9~)(8B?I_Yd5y>S371>bYF641Z73%6A6 zSjufH?O_$(#RV^jeCgUGLcG2s5#N(U2%LAXJ7#Otz3%K5={qgb+8=X&Sa~SepHy*c zDX*oUM8mkCxIzX`ZIEDw3HWW~JJ^Dhi%_7-9#vNvKEbLjzsn!4ye-)}@ZbOQhf1aL zhs3Jz2|ypCuOae8zF(EKqW*^|_UupKETSQC)oL^tzlV7a8yAJph9P7lhn`15uCSD| zVr+jv90vuJG4iU@Xo!Xpc5D=I;Of(}TJ>X9uwoPBxK%niROqSrT*&)->{I)h9F@2Z;XWR4vaRS26hm!y_A?NH7g@-jMo9 zF$sZyjskqj0rOuROv7LEe!a$0d*nM&0G-ugiCuubapb^Y<>x;Dp-lgjXhInqEAhpL zRRPepvG6;&3mCf^oH6NAVZH*sP~yqWpw_6mf<3t{1ny4a@I0}nZ77pTXMpitD20(~ zO12a*&N5QU$~nwJ5_{BvG*tNO;w5<3kcJ?I@|CfP*JgErQEP%+s16bFk#}-;*+1@N z9xqXurKL;a7FnM-J;Cwl*MI2$!qBvmUk}y`qMTC}4_p*-jh4I9uQh}ab z5u|QkQwJhw%w0_;(oTcMP1QW;|? z#u%RmTK%tK01p2IDttI>P~sy=0MnZEqDug!69srf8Rr=rLL!!tTeFBsT)tOC^{V4m07_;0w;@1sutj1rg&{7i%2^gktflZKzSsM|@A#=g)uw@W>QlW*)jgv|_LYxJ}yCOqgR{}E%VmXnGC{K+a^QlZ~ zN)RzSR;CU#IcYu~p1e*Tr+ zx{PP~dy@~`O;$X{Vh)#CD0<-DIr>|wT8>(u;eU9@h>A|?I)4WXRjLtf}C zva0!ruDc_-$IH@Gc=<>-37-%(b{Owb1$Q!dKQ^8#OL$wAlF7{k`|7S;CWxF(kTqpe zh{h2T>@u&ymXQ%wdMb+pLsuoYO45eCxhx(PZPFwQ7MM?v$8Sl&+$Up&F@<8k(umjg z7)4I5UqUSUtPH8a7#CV1Os6G2z%ai+^wAZDh{J?dTMHN;9?wyIZzu)>jxbtCj-FRL@68fCF|Y$ z#I;ed7<`TMmqA{G`r}*$3?{^}1yp_qaFE65FEWL%5~nqT;8ZF-H`X&&Qt|B#+L42b zioElhs)?gHgR;)$HeVqqT7`dX&5wnKZx@EvT6f$f-2r`@dV?V;qQ-hXg3^|!C7!O#tzbeqJ97(jEA}xj@G#f#FE8>g_XA7<9Io|W%%1Z* z`Su#prGOPwr+NliQ(xFj+BW6YQRSqyCfrfAr}K!K{ILoyMbaTDWUiey^cKJ(?ht#i z2qpzE35iJ|ha^}g9f>VqEoe2AEs!!b7Byq&fyk#}fS@aQ1c^YI4ejfuAeqF;|G5-x z6GxFViH&?k0kTBf#3qPVQGg2G%C7OYDB=r{ca41}n%W{HSejgw>+Wql64pg5_PNZ- zRsfU@CY+OOtg#de_;PZ?^uNrFk}~kEN9Q&s>qAOE6B>R-&@L+Jm5oBlbd0B+PUD{| z+b=f;155-EOjQ7oh`eM#V(MbL|El0LPLy)6G*2!t1d$dBi<6Tuv0^jkptra!NLo@c zNcvXM50YDo916nB24y1`y1vy7R}_@UgY#uJy%m0z?R=Yq-wY;`m;!rYg#;BbtCTS( zzXgc;#G|Mwc1&Se-mG}L(mBS%QxpH=He3&%of7(p-yrX>;V@$4wl{s2ke1L$;pS8lqk}o9jwhK z*g?P|{zB<28prb5Fs#${gXp*IHkuFynAzdhmR1!GPD~&j~3sDDp@8ODiZNTOL5Y^5elMXA)~06iNlNEE2Ka}$NoHOe%(ps>=g`NgZd9wD}- z1sUd+oO^kX?EV&yD3S@D3pKy#R#Gvi1n|S3#Mdk8>zhf0{yk_BGQ}D>Au`xGpRnOvm|TxHPt*tLMhg(M*NSP~v*g7Q}=wh=hFyQBx=)_}UX z*RJ3UcKBHJvdEZa3pB}Tw^<^VtFN1?!#JB8g)ZvgJU`dMvF>+d-|XJx*|FGD5yYjN znK06l;_D_HpKiA6k5R8P|c{RUT2l^@=YW;#!^v!R_c zOP8Ap0~n&Q$%WIAU9!qk0&Osa4)iRZ*h#*lc{7J`)Gn=pHiM7+^iX}0H$z= zfWk|`C2pZ4rn!6P2#+Tw?9qUC$Y4pp;0%cLbJ0k7I7FF}DaaFaE@gXz%L-?${E}~Y zf_)-uxmcK@13*0K>x$eVvKeGC3uKFBDFDe=tzh5lX-j^*4Q0~^DqQiL`vbQY=lr4( zKAks`&?$85=w5d+n~eRP6>)6q z7CulQl>BfeyvW4U&2B1dK;}BHn4*-wa|kUL9sZP>MI|0t{!Lpzn?yxVot!EAqIP(` z#Y=(_Cx3IgPgOz&QyOK~qr62w-eqza`Iy*f>&i@3R!J8wFi=iTY$Kk`u5;2_o8nrB zy)UW?zf?^LXMH94U{Yh+L@c##CJNVWfSlp5xn~*9NXGFw+;Ng?+r;QL5^-)I*)(*G z>QkEcZgD*d%@i=}K*$m{I)~_1R=dfV$+HUd?sZ4Jb+D;|U^We~4+H2Tb_f)qlQdlN zo>h_ESMd^S%fqpr|B#BOeff*bE|1o_H}KW@f&5%V3#c?-k>yC{N;AF0e4G(B?ue%aZ4Y$}J|w_D)>5Koz}N zVr+noLWrF;)U^OzG$iXJ>m?bE1ZX`OlO%}0wULgg1krJ2ISx0=7Th@qQl9Ku$`)Ll zi|N!F$m;V-eZ>jb>!Lh-d_RQna5Vp}>5jnN>&4K^P@T0ut_y8Wg&=K&vD&{9$1$WH zF_QC#wSWr3Gn3G1QA-iot>u8Ly*>ViilgFxTEr94?DP}(%isPWX_VbpK~n7Dj}Dsq z7i#O`KSRskS_tUo_|K!`_w^6U@t+@#YPOy{5 zjFE=|Y^|uT1!gx0@2@+WMK26 z2veWi945iT3%3|V_)6mD{$*&%3wbv0qOE>Jv=u*WcL52BMGB&amWgSqV+I{}?c0Y( z2AKa;F#qj%A|=k{d_EQR@oo8*Yn8TH!BL*(Lm(%{TTuz1q)CUR!Z-EzzorXlhyqu} zt~ZbaOFS!g?0IusU6i=Q%nEl?EF0~xJFJWjlDNR=}LJ1qzW6kwH|y8ti_ zc}8K&Aym{j=J8P28v_gaaEKkoE@Z! z$OYJnYv@*8ak=4|JJrU{%Y~wY)MP2=WtXAWcTmZD^Tj=3D_~=c)C)VxzCwRkKs*3} z0~aU&@4z9*7sN#twr#l1=1BuP=h>a}?9O?%U@$x9+2_q}=REuG=sdeUO=+<*@dZ51 zw(4l6trh)YZm2$_G@Jw^8n3aRtR(M|Z?A+w^5Y}bo#G-=GR4}|m#c?m!xYwsDDGTo zcdoRnh}qGhxV?Hhv~x`TS8+^T=l>bm-^>5A_Vb6@&#V5Q?|1&6-=qER{XZl7#r!{e zjZOZay~bw$Pc|??eRBOjBm0N>fA$)8LP1>Q{mEY3d4KM_KX=}rufY4W*U<3(gv(ua z{+~PlPt9?z0%r6-@&9ChZOQ+0drnJiP%q%L#K7h`Eu}uUb6Q$yJEx_c)6$P{TG|=- zGwlZ(_)D4UcZ#DQ)6)7MhA+n%R)lGCdlg_e>VN7V-si;s9{s$l|N33p>rwsuT&-!S zexPkL@x~{_p;ftItC%cnds4sTD0xlX#MePWsbJik;L?Ym_=dA(1FZ z;zXKYfQA!7ggs*}{;h~u(y5JR7|l~8V^3*>_71?_tUg2`tnd9z_2a_z8Ryayg7}k= z$GP-BgATTVk6c;B`yfdZ&Tm8LW07D})&Up#4*`bArl3IRJL>r zo<^SSpikhsQwy&<^|N-*zUt!BM!SF2>-3(k?rY6noBvh|8~1*z({nBcPP=hmJD=aU z_NiTS&h7{HRloQCqCKcTSlyfBo4)_6eK8GgT&HvYZCW3={%OB{^Y!W2KJWFNUpq%1 zVP`NodaS)a?e+RMjeGyB*J~d427a@9UO$C3`}C&YZ{E9;)_vW+csib3^v|2Ud)L10 zPp?iNYxVPX|B4RW`o+!Q>asVm+c)lf{?u^w{wXxjW$jc?FzpAIi3Pu>1i->&tK2fg;7 z*Kc07&ztYseg9$LPNx0i@x0UP-&z;#OL#nCzfBk(o@(z0_tWOA+w0AH?pHYMJ$`+h zPTEiP^Tq8$`%Am_RDbHX&bov4=iY{nO*t z;^RB`?P`u3CxTAv+l@2*HmpBAcHH;0?cTh5{L*(C_r42{o}TW#$D^TVQ)^J4qQU#S z>mz?MXr97*w|(E~{Bi`F_HD0mI<@-~XrG6JUafW3>-mePZ|95Ki`K*NxLLcoXmwl1 z{`Iil_Z#>A%<9#{``Z1i{m?%}&1UQA%cT9(XdYSh@vQGS)2EtG`rW6~_QTcn)46{M zAN=NR?<(v~Thngi^x|evzwHm+zi&@}IqG@saL|0}HST?EPruS`qyLDy)=|6Gg!lc^ z>)Yn(JJ@#`u+|EP4f|`W*7v%D7QTIOt_O~N_UJla?~nV_?!)=}?#0!0%e8-PeQSPr zoIZJ-hyJ_9J*i*U{fA$Vt^(LSJ!(6?GnjsSx^48n4(mR(rp;dK+tuu*arv(Gxz!yE zK1QvY|M{u^G<`g7k)Ahs->&!lPSfvnzu8mx@YL@%`dx&P~U)8;@U3y?Zyj>(*{+1F!#XIG7y4^Y*X(`uVqkcXie|_HXW; zR`2PdRcj5L>sH^HTMz9)zdt?der_+?gO5$*^t->-9oo3}=L64vcs%Og4?a7e(dV1@ zPrWv6A3LqSdmq3-{r%%{tJ|yhW_^zw-MC*r+;~rCouhiI`*1pabnM3cU=rE2Hf?wN zzx9sn#m$#?yK(Q=&_(OvdO?p`$M*YQzfGch=kmDsVE@+dHZQxL-EV(6{f5rl1N(d) zJk?vD`{!-1bKZaIIFl#jJkGkc_up<7AK!JSKIu1Gcb)0iR^#3$=%LlO7hwo5Y-mmG z$*^ZXSfBfs{a(G%!{MwuxcYX}wd%d872JQh@_NnY=l&wR>#~1$+l$+W*3q!`blUoS zdV25v^3|@}*NuC>{rIIlc|7)A)bCU4+&R7NH%Z5B(x>ys|7a{Dp&Ern5ecJ0a&)B)R>D7<>{r2h8`IXmoo-TXc zcC+o;?f&3nt>?5Zd+x`}LHB&oZa%$h*IH-x`NSXA$45_Yzj^;)U)pu&yzgAj;q>b4 z>Day))|!0=*KS^QJI$+Er#bz4Gi?vhx!t(;+Lv(f@v-GTIqhEaxc%9FYB!%cH%&I4 z@$7!u>@&L3?p@B%w0V2)+JQBg1h8klx4)gT@t*b`S{L`d=G}d*>9u>!&T#6}!Jz%+ zrrZ2%*ZN-v-sD5O(L8D&pElY@exr5NA9S7jW7vPJ+sBuS;e)dnezxx(@kiJjG|yq} z>mwU)zZ1gSe*d9c?>n7`tFHa6x3C+wd*AbC{r<_kwlldwz3}$>sP!IB z>uuC%U&Ak_mp9FEZ8*64F#OhkYW2czgF*P%@6~3v=gm8N@N{FH+qF);b#Ry@$5f`fS(2$ERkqHt;4jIGw=Wm;P_R9`}x)F2eiU?$v3x_P*Y3 zw&1YyOEBp7-wlt#(_d>JuZG|3PW$+D-uc{mV07oHYquV2&2Imp9S-Zw+xCO~!R|Ln ze|iPmgZujJMfmIEmtN4X^#{X?);H)m4=u0V9ez6xo{rv!-9hWOcKwvz48~vEN0a{W z3!`U#^Rea(+TQ8q;Nj-|*V%xE3_}1JKL@ITIc@b@ZogcnO+_>?#a8MYkzL{ov8n%7xcQ1^Fj0K==OZl z>0J2r{>8_$_UHZtp0|U3^y+r)W3zqKe>a>y`8N+wkAvRV>%QX*hV}l@ z%|rWF2G{P}y>{K7w;ZR@>0ddvbNbux+xY#{A{=y`s}AfpAA8-&m0hzJ!-w-~$?v~>;7?Nijfx`gMGdEc`Z z-HRrFrtgoBg@<1l=oWd+ql(ZoM;bnzdf< z>09I8@Ac~aUhhl$eAsIr4g3AOcE9bSPUyEk+uwdYYEK6b{Z`kzx9qOt-ISs^IN}r)$JX(j~n;oYyaEH0`wd& z>`jh)-yD4JHJ#1{dEYv}so#7V*B&2yYIjdv*t7kvTfgm{-@LP?SJ!QKa(Z`P`&IIU z&F=Jmd|&H#`sdCC;~o0vJX9 z8zU-8sLUtWnt&Td(5_E;{3VRSiO9W>qhEd`5jQq)sIjtL0>mEMp4b~Z2rvS4z^1zp z$_3~+fKKx3mM7J8P{=kit%7rCO$1nF+dx=)PM=*i+Q1Lc2!A~QBmlW?&giS}U`y#L zD#)`XG>!=q%WO#tGK@lULMa~SgwWW^n4N1{$*x}v28n~`L%@>Zx0gtyO-Zk>Z;f7pEav6`0 zbWG`8b~`7qD-H(^U>c<|Mh7@(Lp8z$iNOE+zyIHWI1Y&X|M!3YfBXO)9v@MG90(j3 zj8PyD$vV52P(E^-*V+lV*u!q*eggH4)~HQpvlVpqKNKRge)NkDMn%*QbPnPQjyz`i z=ocC2?2+`>->yX{7C}dG<(}tYtQaBcUfbYwkeMah>#08F{46vK)kX1V?D#r&0a|N7 zUm5lF?b*ro-|yPzO#nl2gClw2$Ve?PT<|xCs~la@7}pM~F54p5QUN z6Zpv3W@li1ZUPTviLkXmi6^5Z9WqaYc*(Ud8At7}%?Oh9Do}YWQlTR}I0ZS3;bT;m z3kWH)30Am64wZO0#`64X{1p+Ky^4_vyDrvDGG`mEGeO6E&eHSTj3(bhQ}_rvR6dG^v4Ei<%ZY;j{-0-vv)r1sUYb2%5*o!e3P41Y zRlK}gw(BX0m&4nNz?+CHl6}dtwMfQwD_c^pdfKxTR&eeNe+>y z?(93z;zTP2Gc)s@w7rwIv)JEB+dFA{Cv7ix*h$-|32jH(ZUlISC};D8%)L(FR%Tu?J$bTOR)0a)_SY3)uIFVu9NB(AM%Y2+os3VLjXME@KTLd#lOI-Gj8oqgs}_40 zC%+g)jXzKGk&HC0_z>0i1>df`fQKU+P(-=DKxsfyJAH^GzXKg-v2vq9PSR!fo%&*@ zzQ|&Kr@r_O>Wk#47i%w)cXgE)He%Dh5!wTsm!vc^m@^gmtp*T^bYn{YfJM$x_B?R0 zhky^QDavCA9YSf93uFOuc^WJxak^MgDt-uO(20|2#qc?!nX?&L6B{}6{cHwi{?*i| zL+qwAXsEWCLv-O+A&?!tf4};plGaxHZQ?1BH6fRB&Sp!%KL{NTfss0dXKQeotL=fI zIHAI84)ADEpNEK$5tu;Fb{IKWN>g1`5%+nE5EAgd=C1ytiPR6ZTCKJot@YL4itu_v z?3{S!3{KB^R15_q05+!L-<(`Aq-K!m5*t-{SZ&VK*^k^nAYkyVD#c=Pk8lw;@_iDp zD^?vFFd;r=7kA|6C{Z@4fh1bGVbP}9Z;~MSn7Yv^PdoQ1$>)&lsK^EAtIrd)=S;NQ zy%wq~w!19ivORLzY$$F|p8A|r4B98_-G(h-v;%xdDV`yXO|X9hgK5kwL8`ib0#N-k z{*{v@kK_?H7>3C8MK;3_2H`RZV*7x1pF~a3c zSzvFRgX~Q^M^Xw+n$t~fi-a`YL}{l#6zG_ow?Fa5kK=`W9DS>9jz{d-FNOJnC&oH;+f@sRj-zr3SB zUdu}KN*^VzMnrbjJAr~3=JNi5(jlzL%6)oq2Tt-8**nF+PBE}k3~X3}tttkVsDXxh zV5x_;heNSBc9S9YSteMpAW;tMVq$#F@;OIUFd)H{GTtT!@a5g?U1F;+W;@FXDOv{F zji%Y}gyZ_rFFHuBAN?Y+oF~kXfMNMVc`R>2t##-f?nfQ8tU?32@*LISG>Zy(^ym7NKAvT*4sZ#e_7yv5vIRqteLXFY{7e z*9;bwTuNw7&cCwTSg3tqfWS$s!LG{_4|V2T!kePukdj{>N`fBE(*p-1%%HgQue9!SxN_+gbz3R#}y%u`m^Ql zDCZYq+_p5a!TB^-JbSk5>2sV;0rB#Vj-I<|c_G##HqsTeTIqLF8es>!STIEln%E#x zh6OP17 zTGMv2)7ok5WG4+I?PRB&?6lN&veQm>`j?WOe1rQ%YyVuzBg~qiAmw~;!X@RDXjIPLB8@$>T>M=Q2#`IC%)6?>ZJR>eOjRx0gHBhK)ZSN?&#p2S*OfJYbreb>$Px*OFU?}VdJTqEuU_m%RG%@&YGjpS^he3gTY)jVft=gcsXsO+< zb?DL6&w^N4qIKS4d`Ih$dF)*Od|<>dERYeSQ2q=%O0q;Uj)*xmVdXk;MF7#v< zda?^WiGSUNp6o(TeqW&{zdNiMXJ2M3n3jcMc2ZQl^#5n?{lDY3kv-A* z*?$E#bI-=Q*DcGAlfC0TbMh2_ndrq%^du!S@8#z1KqR^wBa+|%prp=v@8A9o0g_F2 z6F`AvOD!4rVa8E|g>QvIq424y{`+5fEm9Zs>YP_qYYAD>Tjd0OaaCLro)Jlu+2Rrl z8qLa9zUT{CP_mJ7ZdeCIQyB{zz!Ab)(Wo;i#w1VJO2-Sk=sk0qb)lki?`SCN9#<60 zJ@7?c`HO9ivujSuYT3)BU5Ea1FjSx-qyH>)YAcn^aXmiCkcv`3lrO)5@2j5IH<14A z;SgbK3>U21x_fPFjs8nD1|79wJ*|eGD_*O4M9;#2-di?yc%s^iC#pJ}<^TATy?5dL zsww;PeudCAcZP6jY=}2R1+G`lO+@)ERh~+n-9 z;&oz95WdDVQ9&PQ)rDwDqN^T?_2Yi^1x>1~0ws$H#+zf(&|2SJYSj$rnU*B&Y(Y9S zrjU(tqE_XwJ+i)WcZayd*JLdK*R4fMMwL-W&pF3g%+evoG{t!qAOSMksMY~9`yZ3V zI^DX(NTo7W{$(tAK!y+)&KI)-w3u7A!PT7t=5RyMSQtfderNR+?3I*&#RvCtU)@ zG9WOX0YNYgXc(@+NfXt`2Pd`x`8?i2F%Db9nh58B24NilM60KIKfD9-n>q;Y0S&=E z0LIsYPO#!103^2&5>^ZZfT9T{Va7o~_JI*8F$4>Npm+%6#~UzQ1Oj0rkP{z)U>FGm z!%0AU55P+xZ_EUO&+|a+gth4!SK*DHun(w>t$<=EtQ33j6+j$?m8>0O0aGWyNE}NQ zJNq??vX@G~R^>aYIjf(YEB)Ni<=O--C61P+39w2MCs*4CU0;s?Lq4r9qRowTL9a>H zzJ-)yF0Yk&>*8+cH&d3a>XL5hc>hZ%S{oUBE@I~!pO`Scu3K2ubbSZwtaQDmjiW|q zHo{FS+_c&y+_ZY>hMQKnX@#3sxM_u(R)4p`P0LWiO>6IOTE>q}FuCRp^9g{A6Z+Q0 z5hyFLwuc zxsC1ZM$Bz|0L9ETsChVOZv9CoHE6loT4DL{9XdHxD2*P?;*zwIdMah7W)neLq??;h z<2hJII_aT#Ls~*lqrR#HNv*yztwJtY-yL*nq+2IBFEnDs@!FnK!*(`+G1^RdqXgZ8 z$n~iE@zbMhKx{ zC?SM~aTpu5P$*i8FF5k&4z>Uq&`eN!>)YwXUzJFY$FL zVNt(t)A|C4#k!qvF9`R7a4#^Fa4#?pBisuBlN9a+;a;#&!o48e3m(zEU?`ek^Q8rX zC$K)YJd)Tt4-GI-Klf2G94qjqelk>lTcZS;zi;6KTCM6eYoGy9i`HF%0-AnmSr(Pk z8!6v=Hb*$2SP*@kYfl#XSr9Hz)QJJ0`CoM_ZoX`V6{zG}9fj-7+1mgV2ta}E><6I0 z9RLNIE$@a1G*zMCfR>cl*0=^|dNfBfb)-^JVyLl3Mg61MoKK4?s2CgElkfg=x^A=D z6cOW`h@9!bES1<$K2=8DsNZ4;>hYbbMQgr-C`1Oh8RBap`9UXo1>XrKcqobql|G#+k@|zdm{Ncr`ufBfy%~wZXy*&EE(Ti8# zeDl>G(9u*Ku$4kc%>QsSx~|z+WR+$F9F(nn^7glWKORRt7|AbEX1Z7-&dta zpa0lU-B9S)KWu6At)6UX^l6(KT&2fJz8s;`f4S~!ZLNKC_7>4J*LDNk==bPC&q`}_ zZE@VA1jQ_BW}C9-)jywKzdZa?TXZ}x>py4LgkMu~^Zd)8=?6`}Gy6f)zXMHwy{p}- zJ~qezNBGQB6+zPR!u;iNT~Q^?6BP_JuHsL&#ALbi=5$eTqvO0X#J4`stEx%nST6Ng zDi%POWL_@sobemX<9;QX%3db$l5{wZ^;n*Nxz&RGc9R<>aBC8)39JNqwf__#A+Cq1 zc1FQD$)uVK!=<6J#PBAe;Lm3t4$+CMr60|rq=*T^C?QzgQ$&Kr5Fl}-Km3`y5 zkV_Z;d{44>nZr7?vCos_H-ck zrI!<&q>$M-D=RjDmr{OkCN)r}IX2fZOM2sxpeA%`j=5A?urhVFpN1={Du0cN9`g(l z94%F(Pty*S0+k%Mnf|8KLC7I`yN-OTr+45yrRt(?Y-?{! z-e$h^M@@zw#_8{RgcU1piS4$)GLvoZ+tw_pNV?WJ>W^rPn$$L+Ff(=jBDrCNYVzmA z=!YixP*vYBmgS0W3Ks>cL(i z&Z_f`{!TRXs@CPI=>0tuFB?wLP9&E&x*}QJuUz{{rFw+V|Cr+2sxOx;UR|!_rb>;R z!aBvbRTAItSiJhKBmvoXAGbg2sB%@_87;_q{d&|Sv3R9twKj*=I?_{`AvK ziQGnn#HMFkZDCc7D$36gm9^hhXF)VLNNvmJ{n*6$O0h=^q98f1UVMd~R)a_HGD+nM zT`-0|V7?#+NLx}xYp)xq9-*fht0(HfAPQQ^lfKzb--7_rsni1NF8QzU#&-jjxSoz` znd^&FHS_)JTzxU&LhBW*VsQ6e)9O;K@z+O3=;=v)bJn*&^p11J*9(kjCM3b}-Yhgp z2kqqT&pOL2mz)TdR(!oyhJmWpT_-uKH*6i~S_>}aFNtC*uIdTY-k1iODM=Y$wGPe~ zN3Z_<>;Lf$divrc-SK1&*)=`iO*Wks-vQ>+e95|}`796A)f)N(Q|&sRbY@YJYdw6F zH$~H!6|R>pXoM3KvGkH=jjeHBWJ(9FBHXVLlE**3MNj|xe>bg6d0hN-hMs=Yd61+TQer`^(1bh^e^xkD$<1M^aG3 zNVZdhuJf60jmbI?k2L{~$py02k3c4F+(`%~gd)nLg39kW!B>5@fbKJYr*d0<=^xN# z^^4;sXlG)To#d2o$_!J5v(-;MNg(&SX*{EuoH0JrqcUVhQfZyw z%0Wvlpv^&5byT~4aJpC!Ug=z%=DBfKsc{TS4?M?7Qr_#|R{XRVO!0oBQ}qPJ^?$De z1-BO5bV0A!K&hNJm^P0WlCLULKPQoLOna&$mei9yHG5RetoCZI&o(+W-CURIZF_RD zK!ULhVNqRkX;%Memg|!)flXAiGzTQ){qjv!ucKd9e;Q-0tBDZNT#`i1sG>?YCYL0w ztO0$JUD*VlRhfzwztg-STJ~YQl35Y+)-%bidiILnuuPInUaWGE!uhV}vySpntDljs zU^&~B%3k&#SC4rW%~?sbwvAV(2hAdumNQseNGR=?DJzWg%;wq>pcL@xmalB1%Hd1r5mOI34X3-UPA`sLzOueAm;|A9qc`m2Qpnad zySGWjI%N~1c0AGkbdpu~%8EMYBr1=nCBCMNqau?uL0F=M;NB-14LVTMh*;L-ql}g~ zTWIe9jOK+bcmwG1RT*(1*;^t>1bMDGZYtLq28lp7OQN!4N`?}mfhK=%Z^6GC)?e?; zXNbXq_MREuTpsa~9tP(~B| z455$r1*_DnOMuF=hNYsyUl>i_fpb<#?${=4C@PLkT5CJ%`m9_^gz(%miXo z7YE%siJR2qbM*bi#VM*Bav~NR5XW8uM-98|sQ(p91=j&E)c>P`@U(UNpU*xtzy&?; zYO0T@v4)lBU|JH6l{|8-TPW6LGD{)hO+?SI{GeNlVuBHH(&79VN%Ae0Z z46t#oe7JysTy6@~*4DVvpjM#~zNM}?~*;Hkj=f-~s-X3ZOxSB#p+7~dF--a|1} zPvNCRR!3`X{kF$}kvB|*46g24jXStnE~T-U7X>(1j)$V1JriwjxSpvSGq@ZJ@jVmL zrf_VH@U-*Mw%XC4b5L2!GQ3LNpkf>9Q{+N&g43QUusxG~w_2ZR-LWYZf)~!|GV3gA zz8E)}YOHo^1hicvnEe`Utx0)RY%`p?J1U0-zZq0|M4d-+^8nBh7)sJ+5(8cZPzz!9 zzEL`X+<3P2VKWa)cGI|_RUBrMP91noV+*lxqS+E%mkP0FtO1LpHctw%JgMFUJ>qPA z`M&*Ohdt^S#%BsmM3aOH60s~6u54;_EtXZci0Gp8s+^q>%UA1*gPv0d;29VSrFdaHiT&%^{kmB&JxBWQFitTDFlc`c}uOB-<#$lG8iL7%C85WQ;rB?h#V2 zsAuGwa6wKvyIrmQ`8wubTsgE6oVt^Q)nENjrH+asTCUCO&-55{)HglxrL1&NY%NP` z-a4?cqqGNX+@S%HMS$pA`koBj)XE99dxGlk%S9~27ShonJ&$2fh z+nLy&I1}5pZQHgr;f|e5Y}=XGwr!hFe&^hC-{*bq{i8p7?b^N8?p6J*THRH(ssw1* z=;X^>Q_LQ6gz>WGJ$_gJJ_3)Z7o4@e>1c}O{mQrXP;Iu}+^s?VX?Px~nWv~lFLnUw zlaMFTTii!MV8x-vXA)tjxOhcRCp$LvsJdTaOWfsRtH8Zaxaf zBC}(UjbCrTr(9B`R4rGyS>>^VcXqVaNzbySiG|}Tz~xNBb>Y>wxAe$kj5gemao&=M zBYCTaM-WI-?L8iNiLF2Wq#Og4$^Y`xRk_+_z>JwGj1;Z%PA}(7{%n@UIorF8Leuab zq_Y4OP&`xU1Y3;9qfstzo=LQU3|!Afqh{MgYEu_Pi|#HP&BB`5I-^kjc+{#*E_||r zjZv&g)V8F{HN;aa_!V+2jwt6~sc|q_p&-?6kf*Ru@0@ zvRHjy4t12dx=RgX8mCB)f>{zMUwr`Q`SsZR@ge8a`FcFF4cqQD?Pup>XkKx3j4qGY z!|qnjg778wvGGpA=s2)PpI>*?s;7S$RFq$Ttc0TOentw|hkMJ7ds&4fx{A-akN``% zz|^x!wm#IZ*wQ&v&xD%cg}3?)?tQY7VuklRl@1t$=<0I`27gOv3+9GOYTZf2g(1#V zZ|7d+?Hg9CF0qtH!ESDfFk@1{A9C#nF%53VifKo;j;T|QC05KWi7W2~uCoWIXxGfk zsHgh*)kWprBxZe$jJfDRRhEINGV?pCN$;jv_l{e>(TVJ7@sIY?ecka7EDa=a{tS9A zReqoLn>LM45k|b3b%yW(>D=rb*=23>fQDP`2;BTE^8@rG|{{W9ljl==IerIzJq z?faIevWl59Q_wc;><`UuoSpl>9%gxMqM9a9fQq)CE4ZH-R*^d555AYIoWjo(3wjw6 z_>Nf-*RA02^(-8AF+9J1sgk7qneQ7YdHZtU&|6~9`;}baA|jx`LE;qhtG=6vlDKk} zYN@AkUmdu09>0y4`ra)q{4dm3CpY*f{?6aY|*V?&{kL37gBS%D7 zFistuhsCVbtA3eHbjL3HiOCu6v3y|mo}&u$9x(tML+jpTkhLT1ZV)>FqyRV71( zEoJ3tv0NgFPPD{qQaXf3I`N^@L94}U!^NtBAVRy&eOX#%OVCtO&1V?(0ks%5-6t1h z-^%EvBLh~RM|oGuXppq1t9%pJfjAYSXMLJ9h9S0mYX;-%b--5!Qx?3~HUE2u` zUz3fh&P{++W9;*zJFoycft}w%bfNIvC~53czH_DxrRtP2a!fM0ioJIO3GPt0eiul& z|Io#2r>5P@9rlBH9al5n^Qdgxvj>{KCSOzqN0}d2hVm;Q4ZazSE)%`upK|tT^{IZx(S=e^8OW#` znJqUQc94rLO|`TW&PU)f2l%?!=Jj+xW8!=#&>u_tJK8?RdgV=1m(pu~(r@lg19g#I zPQl5Iic5(sZXbrS*zMk<~m`@?_>VUv3vJ@AIX6~#j@ z*7pm2GKUSXx$%8=8_C9*lmaOGIo|4SoEH&9`DmiPK|>ZN!>R@$OUl?yi=_S|@7YF{oEI#@PKhxR z+)Bx(;D3=>-!h#ceRg`f<2L}~oDcT|-AUYL+L8ThPS|)Uv7V;VQL&i0P@x^T5sf(c z5ISD?hFo!#egeJ7H#^6VKeInEg{dQZcy#iu0$N-Uyzfus37@&!L5AWFfVYX%ZIheY znHu6l>nLS)?Tg?`w0W?vhgJnW^F!V*xM%=I3UstDVJ^|4%NZN%N3AD_GI9P00r~V( zF<)kS6PpkRePO#WfgBw#F%4Nv6_x%{<_&lR*OX|`U}5$<`_A?Q*O~XUM#pQh<-z$7 zy77VKiejby9-BpaO&enH(mPSwqr^-@*h}JX;jG1jMVvpDnJQehb(|pca8kI?@#{Kl z)=ay+if+Yez8=1xz|P!OU~&%CaTz!2lU!W+N6`h3H1qO>1C=Vd4;8^bx)vn zn8)^b2VXjCAFW1UvR0MdnsNfLbeVy0jl?Q7<7RowG2O(bRt;-LX$%{JVttrv#PQNQ z)#!1|_H*b;21eQ}VQmHKHSR!^I|HMDbQ@5JRm|UAB@3h!B~LQzM^h@d(iO-yW7HRe zi*XQn3)1k(D89Z+eV1Qn#zDfU)bb(6e3trxs(kBl;&^tF3I>Vz%ElR}YFp`cZHIQw zV3qR%HTth$x>V@5H)JzvXH|MAmA3%YkkCPB3U=KE9UD~{9@IK;ioW@&;*=K0e4V#x z%A8HMOv%0lA)A8^WA{kBuZpG_!k?@&q6A9-B&i=Peno#E!mvZDQCOSpMgMpXEmje$ z99w18b)1@#NmfA*MFg0$7&JIeF8Tbn(xYJ+0u)j4s2uPr75na_Vk=yT3mq|a?gkFq z8p}{w$~`BK6ex#8Gf*-kP%UgG`^`JeNxx4oOEL33Id#3=?l;_YYrzgC%!OLCJ5G!L zu;6XgX6ZVj%8Q_(U&FEpVwIDnh%npKQiX-Lmg z>mq%Gu1lB3QIv-?X@_pq89H?tTf36x>-!s@W#elWC1c9cl&c9Qu8IevB`_t{TdW1L z;-oKqpAH~NhQ>xUpGFmdP|LoJ*=HoVnPp94`?8{Zey#P+2<$9fO*)T0#x1TIh^^4v$m z<6`r^m*rBow#wrI8-?A}sD$#HSI+yK6HWg>*d3dsa|e-6ZAIIkbLYFDWMS$EO0(W% z3Kgl-r~7sbnmR^R~l2&MuJ3dYZa+qn({i646QVCVPy?ZKZW+ zUqS`e>l3*YE14=x@)My5^sO+@Jx%-lBE+ViE@lU}lgekT zOr+bol)}IeMM)Kgh< z%lb}6MO2?EGGfVlr|o24NK z&vFemZ_v{kxkNeS!?qLD2d2rN)aMeE$yrltCUjnr+1L@r5`E6U!nN^Td6jUOEiu;@ zD{lmcD(5VRs(*Lbf$pP}^;NDW!x!SV^D)IS&3OMnK-2FYN#)MQ$s%ex+#V`xvw7!Z zjEKQQ_E`h9YpBz+7u-|C-d{#f#b$hr8o5%wMSX5@_F3w2uJpo9>nVDAs1(TB>tcIA z2Wg%TSc*ZFa4#}s(Sj)Y5w$tqfk|s#j<8y!$pID_@z^64BQA&T%&;)e*{~XE zE^h@{*0}J_BirdZ+spG~z;#yOD$kVbPW}=t3OTdu0VYnp9n(4 z#;tC1Kl7*gdd0AE@@(3uAQ{|?9qai<841ovF%D?sWzpLQs;$-HkGIw5 zauBx0cNNr46^{o)*uKXMLr+n^jRkplDeXNI;8k}@*(1a~f_ltjDD8TmPg6F{AbuDf zSm%KV)m!ee)JY@%LEUGe39Ar2k2UWg$Nk%9eVpF-TL#{YCc`(BPR(jxeQ|u)$*3vk zRiX58L~Gh=Hn87it`L{!yFhWdGS6U!i`9-r(=?ET?f^u8{JgFui)Yn2LuV0HmJ$mi z=*}1#Cs}6QGg21Qfn@P}cM$_1uu=FGk>@Gx5TR+Q|)v(C9 zcuycc1st-q)?00HO?wX?$gb00^e5?|cEF~VxcoSM>3-^*afona0@#5k@v=4%CKs$7 zU=gl!c>(ui6SKo=ymX1sVhMp@pn7F0z zd_K0dSC793xgzGzjRb7IBN_(;KVkDUVHknM0Y|@j*NGDOt0c+JSrYd>o!FlB%uB3oZ9B%XM>l z8X%3)+3xn3=M@=4KUAq$6{1u1wbDeoviVUGx#8uxvH}FtyFANg|8QB;WG9ubn#VNry-W+| zpaEYZLM<~R?o${KNBC5j{5nO#gC)frOZU=D%B4qT3x4YQZOuIZJ>r-bCR0C94>0-_ zi%Q)8N?76;a8i-l-Z~`Sb?c`L02FZ00Nhj>^LdKdwHBmiR#iErVo%aU>!DaQWOYJG z(-kBf903x2)iRXLm(OV11#88&1x_YXZN18;Ku?Q%G3%DnC<76@R;)SH<3PwNxbdex z{)@B<0mPZYB8CxrDvXct(G7&_sk|nH^mXKWm-P=t?RgO+rd_&1!gGoJKcp0G3xAX2 zb7a^x?eD{c07pmxG#*Uz0P|(swVbQ!+Ha+*fhf>|=@$S!S_F)92J)q;F^|tZ%EQ2p z#>1p1-}jnf$)t*_!~_nPGL)mUGTPQssFDsy=L!!plcj>a8j;;d1`C}YsgOV1uC7Ee z&ZmM41884hX zV@0j<9--nBk<^RX=T!y7y=2qWD($MFu@Kl6>zGHfgbLnm<_^1U3e zY;1nTjrw*eY&EPD$*(MFRn7EqaZTomGJDyN;x$83c^Y9c6Szq3RjLA2rEY=lJ$%+= zt@?y25<5hZ*?yEJcFRQtJ1;jZYLJjB5fXf)xTL$`H3s(c?KbFkP^S-6&tT}4d<`cA z?iIXF-R>(R`s}j2J~UILQ$_d@X*2u1|INbqp!wq7tu<$=j=KGeCYvC!%FfBj`FglO z{qQ9wCYJH_^`J(t_whe`>($-geZGC`q?KHfM5Kp)?ARNNhuiq#9*h|i+1r__*3Z~G znE)*b#(~5zwJ$nJEVqx{2-9=&kw8xtFD*%&4|g3q#zxvY&N_ic%ChTW=$(4-5d^7= z%eq_%=@w#LHXk47=ZT#$$8!5Wyxl*m8BmH}tP;^A&nE08b(@7dq8w+S_NXeUzuoo; zj$tX$Nebyj`Vl&uzc{vVKfzp=P(eMthIPb5^zoeov%#dj^+ z?p1QA#>grD;9m_=D#h@Y%lZpBSJA-BD6WN@ECoyTOZ1~-eRSs0TH2N00-6iUOUv~` zQGIS^1um4d%PK~1%7-=YorRBdO^gIgI-#W$bc~g&vdce&>0w7&+^dKm`7oS+{pHqF zlpxlyzr{UrE^5mzjdo8R^xI!(+8EBXWdD9f)Ku`dQaj5EeptBtwI**HVR^oM2U(CQ zA6U-xxqw;n{<$b6FN-;Gcp4wpbSX~y+X)S0<@lN+QVNZ)v6WS-NKq_VEkY`=%-bgH zm{iElUJ}5j9+ySW&oO7HDobMxy(;KZf150-EXDoT(}lFxL-x;PS470m1#%N;5>0Gp z-eXH2)96NoKX0KXJW&1cd*f}E#q?PO+iaIS(cJBmb|g)PlcLb5XFpzLurpPEY9ySL z;OI9kgmPlKCOJ9)9kWdAK77hla>%ch{Q4=}H2cGlZYbCP@LtV!eH~;L3e!mt znI8DbxdJzAeCc+1znmTquw^`TSI72!T*;35>U@2IwSDdc+o$cq(L*f_1+hzOh>}s8 z>>2d48|*R|o*dHFbSoa=V;V@HN3k7^z%{yxc+Bf-MIKG|XZ83aQ*=(;3*gETHl(iM4C}*QdGxtt1 zrY-AF_(iXt(H18&P}Hp~TDWvf{q|UDIVZi89Z)9J`RS~X9fDXkjz4|2Cq%+b1kNC4~7^VfQ zD2-}^zFNr}4BN^bAwizCgAib)g2Fu@xXy4n?Y1rWJepYP&HsgTjJ_ukcfh%bnOO2x z1=4Cl=rY$r{OAwhAJME@&>1s*hVUj zo`c*Auv+2_pe#xqD`dfh35-<(tVKYP30jdW;r&2%wZkAFlHdE{+r?E}NnsBh!_w*K z52LH8w-pAxuCHE$+J~!vRkl0MhTxz3(VxJPf*F!dufr+T0>;e4twm8YABXRN zA;34wrM5d~I*wKqWroil&V+_0I2`VDZ)pR52ne>5dxFjjDf$8&?hedb_CS*#qGkHQ4x%^+$P z@Y=eiQz5oCKB)k>&? zh}7J6@Q}#VrI`{|!?}q{OYP5)rCdhspSM#gFyM#2Ww&Fa;Ix) z0QDmNiS8498E2IQ>gAH$E&>X)O9Bc+Bz#70P;f`WpOJS@ghlMbA-m3|LJWNRKJ^tM z&=Z^gns62vY)cOWir0Ue!W;}dt9VU)+M^8R{^FZYLR$!g?$2fh1SPkGj{JUq0I zMBUwg<7dE=vIkNJ2LI6<8`At75GQ0jLhjus3jYzXGp_*2&tvY5!N5tSq+C15O)tz> zSD>uFe6Vl)NszUOfp7>NPyELAKv|G~BTLU~4GshXCX1swcpZA2M|6fKApH&3B)m`H zgh%mo(?^Z}@GqQ4vfJAOn_5-+3^A-(#MMSl4j5}IL-m1buSq*!J)46VH;CKsJI1Dg zp-1OC)?KZFi|IUY{4@xu*2GeZS0thvrhTS6s(h&}&jO_2_jeNThTad+jzTCsDcG4= zngXG9I0#17v2%uFp=~|hnnATL?4mT7lPzkq7$Rl z&~*tKu~%y{wSJL@G$oCRe1v(8jQ!OnS>FR9QOw8#A;vezJikVPw>}yL_XC&AUdjI6 zDrx%|1NTF8S`_%6^-mrUH%xAGG>W@i5@fGe?~L8Q0Ezp-Ul5e9=La3*`%MZIm7n%# zi~dF>mB7|FqZ#fmwvQpdXwE@Z@cVh87}>8kLF0RSXXr6irA=btsS!tKVnu1ZQtJGs zCE`@cSdPeWB&i2r8PRHkP1Oz}*_&t*t(1Jxwu~tdjxmNu!E}96RVa`8qXCdjt)LVG zWP7(fK=v?X>?`UAb>j5JyG_tMKcyrI%vs^*F+%Ntku&;+s8QW^cffnDL5~onMovtK zbPSEd)7F&`*ulMkI&G74Lx4x~XZk>nUH(7hE&L04R^Q080_u$U2YJ)sp@GP}+(0&o zJzizpP@Ay1OD8x`rxrk+f#Q(UR({aAOF*7kxyV19vu%w8j!Gq`n?bL5;C#6Jb$4&*RR5;I4 z8WeBHTVVfYC3a5Uh$Fg)h!xmb8xTyxE=z#v`wkfS9fvX^=u7}QN?*(EVP$7M=^lAt zCCv0PLCv4foM0@_QfMj--X%R8D?Q5*%|Ivy?+g;8*JBEep~COMjIpqd!4Upm529ZB zo_~1M?XL>Gbn;CPWQDQYC&7lfO5BO|{x4Oodkve~6_A?^(G7(3-Dg@aP>=tc^uI9a z8NBEJ70+u}s8BSe6{EkSM`sxRt%L*`=eeSF#4bcDyoSDL^%>_WDLs)fmRow>?+gP- z#jYx;K$xB~BqQu&S5$R1sF!#>nTxA#aEJXIF4!0WOekoAbw5zXaE>G=?s(;zu6Oxwcf5(>9ob{Gv4q!n8|r9`r~lir3wWo3ZQzhNQ(@(mM0 zP<^-mhKc^tKP>36EeGqd1v>u+CVLCt3JO%vy<_!13JR$G-wJ9OJRZS+;}Zp_9k_<; ze^XHBeg7{9fX*TQOFQ;>+VlHz01e2{b4y|IAqth2G{AgI@p9<5G#z;{vSB z_C0N(hsf~YMtTg)cK?C)_P4Y7A80QHh(p@z_(5;C0aa!EFSF){Il#2E=QI*rqLUh zNRtNAbq4OUVWQ$J;;Yq1QfkGuE2jGczqh-TMHs)PuU9>U(=U^JgjM~jAawIA@Wz3W z!1Yz^AZQ*lQEz@TZLxX-h z=n?nQlH=}i(|QW_;%+3mpJTctnM#h--`l4Y_KsIK2l17=GYq*ZbM$UeI~XDj%`z15 z*kLWk;xx}ePXJ1U5lvDfo*7mG%(Tvgna84iGHLJ>Iw==T@$LU@XDR-hBKN~q%SYF- zJdS-rFTX+@K#{b}&rYOW#QqnyZ(xVB;ORdb}*hXNaf6fMZ!iko?_P~_3$`ZNbqcb34|Tr1UerNr~|TPC1_wBQuhSo zTJAn9-sCunqm)`Tb6D0W0zc0+)sSWY1ruW^|CgyJL-u{q_H5-!t4`_{PJy8pEa!k! zC(q(QMRtRF#C;jB=!^y0kZE4{k!00@=<6 z2x3Sb!2)rY@aK#!>k*EzS!ES3T6$tmp79Q!tv9i{6c3%^F!U;wi64;?#T&l|+AraQ z+05m-s!PUo3B0nBmEfVWpL%O`3~zTrW_u`Hamw~y z)TzrPv#xbC1%JAPc1E07^+`PqYo+x6dl9(Dq;5HnOiKOsG3t z@00Z{;fe-7PkZNEbo#6y3w)6TxXzT21lGvHbFWtosvc`}xoG&Bgu0IjU-;UlezYHl zX5r-Lr*X)FP74Z>@`lH0m4UVp40~N$0ZKVCxLqanDcV=xjuOjx0rMP2Ld_vL!t0yD z23I}MA)TNXTSv8SFt)=>Hb>_oeRMMMZ|hzl0B_t>9fE9UTwm~8Nml&27+YjNAPuph zv`3YN6K5;^?f~e&J8;l)Kk!q%e?RA&IlAv&_26ms6L7fklO^k+*s&7?xDOkp8FcIk zAWbsa`v%-ZX2|t$GbZwND0&JFAxa!vV)4yG7n-^xl1D+2!8e;Y<2mH1}cCQB>72*@qNSvO7h; zUha?Q=8C`VL7(?)-FOuUT{fRSbFXgeuTOOkR}Bw#GoS73&yU-BxOzaaeBn=?N?p#4|LfM{oNMs^?L-|@@G)#u`dL40~fxisB+p0l*>9&bHdUFab z5@SOt>TwATY_(k`lz$440M~oZZTmz5F?*?~Gk+y*vHc7L<)ub%K7$N`r`_C65|M1V zYcBKoLevjM0Oup53u2;Ej&fP0%w@UzAG70|5)l@MDY6S>sK4|u3k&yDKnNGL>5-77 zlseMNAL+RG>&^nAL7j>@Vj;J8w#P}Y#7=n3VlWNy5n&$=Ujiy7hq<+n`$BBnOT3@B zwh@#}t(9)Hr50?Gu)IA_d97CNjr>#-)v!LcuFOp`_7F_L`9FW-%vn+8#_X_beSl$- z%vO(5a5+`3oZ;bg|&ztrq^(VoqQhH1l+>j^7WVO|aClL~lQuP;)c# zd(7^F4ZBlKvfo6of=FCJDmHC`Yyg?=wkbO%<#f;g&Y%bDozD%0`!#v<#6jWY$u&|b zEY(mW7|LiJLcW~auobiTxykTA^=p{ihb4joMINWS0N@7e*G z*gH%cp`E$ybje9WbWw+RgVP(;p2+z1`z>k7tSnjDe;P?Qi2m(`r`Ms{#isq7nRs!M z2o=a^wglaK2St@OUrWVhBk0KuMT80x8?1wz&J2k(eMn^f3;Wau8qa44bq3Irx{+^o z4ODZGDMxl zSK>IWf>Ka?d$cDr&_sS96J72EgInx85uXsee0H?MlR?W_6d8hkh3tiAB5dE-=|&$h z!(Vsrbsl6Atp!}}2RnL%63>5UVuxqucCm$Q0fF5>Jn-e^$O02o0JOytNryU2aU{?f zA_R*_AGV0^TRGnxI(wHRAt{FmjAz(!FB=N2k|~RWKeiB4lR*A$W3wX1Sg*OXj=bBX zXYc(5ZwmBd90=zj5KF(lQXis3k^xkiEETwE6tv3}jEP@wtrxCFgE|%X)e4fS=g0t} zWTQkB+)ct<@*@88!w3k}eJ!k>=h;(E=ULR6wdM#J*#L{+o{_V>1jtdjYV-RoA+0@V z(3J;viRB5(;-znkz^$w>y92plkjIWN`%nsV9^GRg{y6)l7A%3bD+|GXNpVB?YTz>>`Z}W1fS-ly;pGP0oT<&G=6+&e;JRgK974v}d8FzuJ*eFM~y>t~1EZPCPCj z*?^|5SuMnu5nFyKF^SCMOjpK||CH0D-5@_dC5=q!*GBhnPlKjsy71gFF|Dt>W>iZ0 zcdJ*yuQ_1r7{71C(=}za3Q0-(T-`A_ymL=OW-JobDtqHC;QgXxvU0aYseE`55AK0A zgl#+7pTu|E13{8Fd0u2~u}c0y=^-Ua=H4v7sNT2}qXx6SiAuypggNFiMVsV`7cEPl z$Ov=gnl)P&F_J8yv_~@pdsIHGQ~j~Zi9mGN)E2($_+4egyt91*&vj~~r9f=D-sq_kkIgM@U9yiU^Zu}?@!o0DU3k;vnUToOxi27=hV?M$*sNVK zflKx$x{sHKea{ELl0)nX(5ZK8@Y-ZVP*%zV7BACK*xj3u<|btNWmf)CFnG&P!xptdN0XgXO-6A|?6fI~fi40TrpW|dDq>m`dfHH2` zq<)R>e>ql#kBMv3wGUpmre+sZCHr@?O@cf(N5dt0TSbV8%V-QFG4{LIhI;W}7Yvm~ zJM<({8fg0-&G!cb_RmycTzE(({;+L)%DrB=Z^Ho=VJa}|sIM+lAXaYmg+9b`1=={! zM`IAy_8kN0_i0)t-x4HP6j>9s7XU(}B;xmd!{d$L1lEnX(mp?+@5{;?5-Ejr?&|1X znG7o!bq8;P=xj)W&O+vB=ck zIGoRo$P@u;Q)=-VPj;RkRMSLpa+=iguF#iIpqihdqlPv8DBO(or01u1(2Fa*S-AaV zQzN+4l~Q^ZGHwPviL1{*QK2yn`9JIBbJzj65MXtW#XfHiI$;9pHFs*W8?k>J@0*{~ zzChbFMkrcvx4bow&5MR9=+IrHBl!1!z31U{RR&GE6~5C)93@hA2nL2+f2JpJ=OJf1 zTd5-{xw6*h6?m&IdNv1dPztz>bb?O9was%bug7@8j5*Se8NS4$O4RxKwA~1J-Q1dM zrC7IWuN`k>H|YEVvE^< z%FZCnOzkGzIG?{S?650o2sjZ7uLge3E}Ej}ut304t;MU5gy5-kdh$Q~Nui*?e+>fn z%Iz6v9Sp%JJK~B|48PNR8Ll|FH7}$@J(&vDFp2zQ6l;)pSvPHSmf?_aYGqtKU(ZYf zq&}vl0SQ(A&h1V>JQ$dj9=Jh=_6Y&&;=9~mf?$oEDWQMHD=M%LZl2^e7f_=0vc5 z#Dtq``%_c0y&3EVMsp{*D^ias4 z+4lVA+td|ubb^~)>Lgz^*{Q7BW)kR~mF*4V1g4wPgPsGf<*tlA=(abpOHrXnLlOc@ zB-oN!yf{DtIuwVCi(jhYg4GiPmDJgnONqA<$9U)tx9Q|7c0Vo_QvF-c7umdRxy`oo zXAdHGVa=8M!sW9*FrszxufR1ga5pk5QB&*1M-tek+-|GffTflJcMM~SOIq_mB6ZIA z1mrY1JhUEi)Mm^fj*k#~g8>r|(pydytAR#WZ_w2Aoc>cb)-IQc$j^N1}`_1Z00p~(KJv6E)Xo_^ACJa5HHMO z5G`+BYhY&AUJVe-ee5!%E2Y=^&L-`sCQWy3xNXsjn)6uGl{~o&LQpjAo@bn*9#K@i zpv16Wqi+aTR>8NnJyXy77Vg;k&bLfG&zKpxq2%-=b3iz-#@4!_g?W9>-$?+SZ}nTM zcFp)f5Kt`HZ;9Cyt_a;UB20d*V!2h@)w4^e2a`oi>9?K6={Rg5lRl~zViw8*kqHJn z;VL+}1MBqF@iv&4r0LdD8b`)jChLP=camcK2=y=Bx%icAOiuapqH_sL^YJ)vPrBq~ zIm5P)lVNzD3Y0><#gGAx@Qm{e0?^213r7qiXI(V}2H?n5!l)>2mEG`;7*L*}2m8p% z1Vy*QE;Rp{skk06iedT5WtKs-FB2*Mt`BgQaH zw@W0u(}a{$?34Sk=Zk#1Jp>UJ0&2eY{RV8@CMYe|rzMYlHn0$|@=dc!#n49(nOSL2 zIgpWabpT~vY2#h`E zT7~;E(ETvvqx%VfF`pTT6xHDmz4VV{yu@>b3M$p(k4l!v&8=on_6=xn8xRx?2rEQO zw&z^e&>E*IQfBL{48Ea#47ZTtIk1Wy`U|3yOdg=%Je;AiXU=g(=z>R_g{NZk&!vQ#6Eyp3CEs$0grw9{8d}gAuM58dFnZ&I3VnUCNSsA>y z8zZx$aMyA?QjA@5)_TYD0EpI0dLZe{2UPm_s6JuFncUC};~YxZmPNfrW5r!`( zD{8m>DLMBiQdfp;_o=>2!gZFq;iY$8hVfN3mra$To9Qv92&vwrScs^^cW6jG#Vn9^ zU}u%dV|hMx@82xjf%GS9FW_}bnbClrU~EmomcbLcG4t!OPU`YiQm@Lx-QKrw)7sVy zw-QyEiRK)vdLGOHI>VJrI$lE(ckDVwl^>!hhHRDSm)vlVtEriR-u>RQ{sKob7~+qA zbaH31Aa>W$6Y*rMaI;BqamE^V+$##!Be2*}oaYA*?>+BJIabmVYg04PQ=rkt?xt?! z(^fC-X~>FGLY#ANFK;Zs?15EqIh~~j&dJ+*xp{e6uz~tsir-`J;^!!vb-0N( z%GNHq$%0DWf(b2Ofw>*8dXPWkEeNeB>Ylg^7s5?Y=HQY|mfN4iSBR@i{W-PV!Dg{g zM9uh-vN{LSP8kJ&veE}GHPYudmN5)K7Cx_Jo83_A!W_WUY4Gy2^A_3N*wuP$!>$~z zCpX7Fxa~38vHI}W(FT!qfpvF|5NU?Xhg{ttJs-GmI|DmCTW>t@1?Bm1ZsA@}uaZtM zD(Ad%d6Bswk;23-?#VAtn4lvzpkp>qJcwhIYC8Y+LXc-fJ)89#;|CaiV2x9#pSN5) zX2%PJ4MN~y;yKGD<=Li@3YM@vy+XvoTiDl$edEWZDp z@{|pbgIX0RaGSQ;hT(V3B*DF4M$mA|zu8AX)|9v*B)USm1CRInIE(cPzVB$wGo{~Y zzl_OvLveijy&4${x!P-e^6A_vhb!14#A-5p(`a8VZkD?lkL2ek@#2 zRSFBk3~lMTanvgn_d^hcck(F2*kST@&(+#>p!Mi+SZ#pkYoccYrymZ@zA9R>(kcyU zcvhM*&#{9YJRE?`Br+iGZ{N`W;y{#QR~o*|5-<#u;;Wp%z4X|614hBQXf8@N0N~is zW3c?fr9LQI;2M$q6?_r9{N|Q7j+L@(E7Z2er7wS7&N$vxSp86Jsp3X=d(0yh>Hf#6L=3%Oo#`geL@JfnS%-fDlbUH)7%KssK3cP>+17GmR z@))qn6I(6y_>HN~yS6~iCTrIW&y6#KoX zn)uxK?S8*R@FYTUPgqqs9IL?u<5p?EtzSTSE=fLgWtN zNNFfpmlZ6^AHIJ0BXPD+ix67(^%Z<;=o;^w#V|)7DVGQ8kXe5KTEF6pX8B#NL$WUBH+e%0n~b_6i74crR%r3qa5ReNp%VpaEX(fb24TPm_0Uo+todcH5xV{S2wq-Li z%PdTM!3jA%%K>3qqlJ!%nD7TeWkw$R7AB4en9FfM8La$iA{wzruLHT`U8sK0EdM1!?x#$2B*VnY;7xj3J zSP_XQ1n!Y5S%eEHi5#_u3qKIxQ?E<5m-fHon0H9)+srnSf;))IognM~Vs4D=^ZPn8 zvBe=pmF7*uV=%2@VfFV5VX_Z2%jO{Tco#Bf1WH%2ziD&mbOTd@T%I(`eMsx5!|}0n zT=*q0ewsfEh|~Ozc1VAM|4#1Ln*z;2;vq<~&Lr@N0lfw*90NPUrqfh<$aO3hf8m@e zf^Q_Tdm{0~v~KM+!|J~7L`OCv^3MwWrPbH|4+4{&nEk-p3NA<^o ztU8Eq|5b~LNu)YChZIVm87u%VS@7on@4j+0Ad#Iv!eAy7+-3HQt|OMnRyKnk)zB6a zMJV^1wsye$C7a3~rT$tV>zR1iDC|$6G!HR77}^)h4%E;=0B} z&Yxf9rpK=#MJTiqtJ+EGvUPiN33^?eSMMvNOVXPmp+-hrF5!8Gey$`5n46>8#>jn& zyXG%5soWz~kH&*;CU5bk94?=|bSlTz3CEW_o(Z?GLcR=KJuBqeXbS)v-Z*Qbl=i$Y zSlLJ&mbe8PKihFMeLcNQta*);!9Rkz&8{b=wN#I?cwQ!@M$_8pK-wdu`wyqtRTDrtIJzgMb-8F0MIiOF#)mlRRpZ8g7Rw7zwl zzp|RYXxDtvA-C~T186zi`Bl!&F%{V%(`lpTcNjAJ2Y4U^gs2#vtW5U*#+>{>41x`s zg3a=`)Imz%F8|o6Ms_?ZzgyBV2_IxKc|u8Ne&9tLkDb!Ad{w@%RI+J{owAI;(vOS4 z(Jzd^(?3Jy?foFX2)X$Ivux=Lv_yS}^XuA7fj8GQp}tju&1OFX{3;R-uupnDK}#YJ ziOM?@sY{L)$64F~Mw~8!l>hDk{`&z7P&^Dx3wi%LHA?=Y6a1zDHsrag{yD@oOWy@x!C1+kVQ0q~Nx$SOi9gZP zG=2mDE_WX!b2UW>;o(4G76q{3UtZk{Z8hFNJB}1xeH2=`9we!9hJ>186kPl_aC{~r3Hi$i9QSX~m<3_Th42aoAXU0pM+vK)C{RZU_1=2rKng&GEp! zd@-sJSfQw)uUTef*W|;S3um`rVUkxqU2u$4&+KAF=ZmbBo88q}ftBky6dR`3OU*#H zpzR$1XG%TOS0H(9A0C-_yh}?qY90M2&reqFK9-b%WA}T+nQh$t zz7=mB9Q<{Kp&0o{LD{wB`WvlC9bT{X`1yBJ;?>b}BiZKAjLS^925@r28_ypEAtad? z^@B;3FeqsI5sVt>ao3<28~Z*Nkd#DLc5Km-`1?FRz-0t^)_J_w3ASt$zS&Acu}6mC z4h|vi96{aN1-&j7+a6CC_`TnK2JCI%RRQdM5LiC+w%b8hz+?n7P+yFBdPz{t-1T`vVz9k;iU#9% z9UTMtu;);dFk(#Lj}D|*XW;rySA?A?Zd${w@VE;X1fZ(W=>G7`%1GZy3aTR*IWVWRw?|uH0U33kYyNiW?&e2yh?$b7jh#vjaSbLU)`7 zG=*LPGbHIk$YJa*!ggV|EZ+tC&RyrP-Ri7!=Pe9w!i!V!Npu5w{*5NbxL`3d`$>Od zEJ44^4O;7ARMB28{GqLfFT@S&rVN`yaL=Bp=Ea(`Slrn4vrxX4_2PXGT8~USm0`9{ zyJgxo9s6|`(ZlTf5K_@}R@x8Y+6$ENLn|lsskwiQhM-5tKSm?cwR!{oTN@6%G{RPs*SSMyn=Y+Q%IzZPI=>l{2UhOozN|j~7u*qe)lB+ueDS$? z(Y_yK|B7VhrfAC>7|i>E7xT=!k$N|VPb>4fDZ`nwa5-J907CS_%_{deWNq1d+ax=^ zfJE=%1Edc0J`s8j#iuqi+dJ8DaMU)Z=UF_K#q+iDQuXes6F32NOyZ-Jq^y}8;Sdj) zTGWrI-ygfSkWgL7mn3%0p5evQ{2ofY7tDVFHgLN2bANFXMJHepLzhQ^x(gbGwFQGu zn;kR~gM1!^6e)l~kt%=zQ&3(8>$7wM4zyZZH26n*WG9foNAXJ%``=!&J_p|N{y>O@ z@De^TJRJaO%!SkI0&~VrC;~-Za`MjBtT;7LFPC{>&~^2w><0eHQxx&*eN!9pYArAk zR6lU7E>bMup=o&o;S_rzW)vGL%C4pjKgyTf60(pxZuzw8=bS_H_M?{b)SkHczB)pA z<~=1Vyor}f2NnWx3`9B0h#uOjwA%so;jDr`yU1Fs`Gne80bzo#$oGdl(1ABJK}{mi zYYxQ7w}=3!7`%(SW(whyde*z!R`d;x!2{dL< zT9rPj8@t$7#~Ww;zt9`IS}t9#kz&VsxmQib&&5!pI+BsCwf_z+qD&k4ydd$PtboA1 z%E3Bsu_qG*&;YOtf`D`Y^-=O8oeIrw*h^q}ejftZ8n;-e-xeg#p+}2JJyf$8-%_7 zXn!!B!nwV~m^qESiuo-E&n~E&St{E7JP2eZC6^C%=MvxG`*9e1SP@Gp*hOZaOM>(j zTSJk=eAo%Dt$-d}+6mRD+a!Kdh#7^1(vG64iBF61CWblz8vBeHtlF!z zY#q$O4*jf>L$%}Q_nKEiKa;l-^?X%~tZ*}_e zE3&&xjf69myW;xq#(^t~{ThEEN?Sj@aPzrHk`2v zPPDxchjA=0u}wWOTCm+GOqhz6nu_DK)pNDjuNZDqW+&bgFToi6TC-n+o@zOyd zI3tVPc<}1^Ko$>#MeO29PsAXrJ9}Qd;=vAQw^|7PU%sIj;{Rif=DO+&{L`l86#{7i zupn!OB^vqff((q4w%o7msV-lLY}JAj`~gaz7S1)syUVe+GIKu)nQdO*J#Xc$VUlR% zpG|koRt~;664IXGs74*YQ}2ZVE%*8$33gKO+FXY;&4^?KIB-Uhd`NJ?sR% z^7Fq~9(1HtX;GOvJuQ2$G?|b6)KJtVUGVKG_+t~pJwjbgm;GN{tlPb|1y9R z*)h?SIR1WVk#As?dOh{UDfj(2|JwqYa|TEY3@nlN{oLKxqm$eI6hq+qOh-Na^Hn1+ z?@M~^1B%Sa@v;=+tDEvy{noim<06|~Z!`LH)pLytX-Z3_&z-vxQ=yNX*${jITHw36 zEI;vNC)($1gXSjsjsVu4n?2!3PM-V*$2=TObwt6%bj`^|Va*QN!q+;D_wmspo}`2( zFaB2BVNUWSQ>0?V`ZDN7bSj7^Wd;5_lnJAaG(Pg@$HtG!*Op5=v%>6gx=M_D9HlN8@L*SMW%KYm1SNxU-G}KzjFn9 zt@gCPx}AabL_TZswo+zhU3psc>~(lNAjB)Q5EnOHfUQXiJ~Bns5CoRILo!|PX@JX< z9e>lMq5cABaQ~4Z#>Oy$q!#nAkil&LOhh+8O6kvVSpr7|$wRuaNSN{zo%pJe_8T+@ z5WI|hTg{7iZc&<1I!dNC4JVRxvN|MabQ#<_5KOjwJ#-vyXQcTK7P$CkY*24-uo!xa zt>jEP=!3$^fv_=CY8~%`+)no0JiF_Y!bzUd)dekPp_-7h6oNN$xwO!O#La<#G02I? zGxubd+?`?xhm6_=_oy&46{Xx(0$9zIoG#f8-U4n6}x&6h5T zH}P)%Yg=K-KIQZ>j-S4}97H9cZXX$H`<$|&!=3+sMngzdq|BuzpMY2>{$TpGcyp`= z);uo++YOk4dg37=CEp6t7c@jby9ytk!Htu&v1T*m{;~uZeaUfl6+>ynxf1n-GoxZn zz>xQGb{9f9*P%b?58ZBQ5+Fvj;aYg)bb;oZP@~n#F>^y1GvR?470;Ud@+E#o7!Ys z*9^11DmTdqlX!p<9-x)4MhDOz>(KPfDga32U(h-P*7E5em(g4Q2aKq?rJdFQ01>{} z6ih-R%f_PiYvHr|9HxelW3pMzoLG?`odnIf8FE(_gzR)c@kuduHh~?clJN;Gg}(w^ zVN9Y`u&>;TdM|mA>VF2*X+Li$SuD?oNFwHy3eZzmz&uD z$6_zsXf;!(*9V}o7P0WFJR1C;(*^Qxd9QlDydRf4>t~a%rwBQGK5yeCk@DAkS$H#c z2;HAo`tNnCOmpqn_&21Iu->)js%(?R!k^-q2?!)wBZs!@uSK1A*R6T@=On%5qVr=~ zW*;~u?uMFAx4fOb0CSRugBk~=()n|e#2~%r!BuM>{%)={Inj+ieSj<^?+MP1P|(Yjgq;*{$c)oU6x`(%kb34~O$`-xJfugvuBbmB#Ad z{xFBW0fPahesL1&sOcqUda0?Oj!E+BiB#(%ghgpvr2uh2UUX|f>^eF1F%9W&N$9_k zLDmgcIyLptYK~UbDGe(+p$*bT$^{6{%C^6)ydM0A`PxV=vUm92o4wTvUz&Ly-j)Zw zQ(Cr*X#)vcif;afBd_!F2Ij8SQ4`kpMU;&dL4t?0P*Se>$2(hej79RlrVN@y_sh_B{Irn(H!TLl=wA9Ay2jC z-jd!s$K}15G{L=R{Ci{SBfu>~Bhd6$H`Hh^*|mTKgeesv=88feA*ZA~AgNgjkU~p{ znObmB1|y{-#KhqFFC!7o)VjfBkgI8&^iruXR>ePvR)!Tk`g%`@R{1rTfRhH*FxFW;?t%0d9z$6`djO0M=1M!@0PypF z&*&KI|CiBWs{JpcgQ@NdXa|7NVX6f%IEKWJcvYJagtQqIOoiFze2# z*=R|P91=wgGp?!|N^7n9IHO0OX^b|K#s-JXaY6no1AZn+*cW=Rp*Ux!`H~=ssT)|w zUyCKoG?6hJZ}3BS>8k=PFjNgwA3Cl=Uwg5~v<{(9!Q`}7mAuqw2APx~QIYyOtyMR{ z^3ymB`2(l^)}wB4i^vO&4VbDF04>SZn4xDpPC9q4@9|HkOJaHmH$2Nbgi5;Qac_z* z;d|$=RI|&kFxv|mObfg}b3DVQeA>+>!yjcbfzM0VA_8#5l=acxK2r|Wpz6snf14wtn>!eJHB<4TDzx0b9r_l%95jfhT(FgUEE%=L6X*4tYO zE1k`NM{#AW9e=hiU$mg-A87B^WKlXgdnaeKl5ZEdBfLnI-QNB6r8}9%#VG{O6&dGU zw1X{N*d6}lLoEtjginb*DM=^hLD3?N{gBOW+c3*b3Wp>n37JS6{j2>Ad1${!IX(eo z6$mF+0mK*=)D2o(BFu*&f}ov$xM1R*K#r?^7?5W%Ey0PUx>VLu-&4bdDL+nPDOEJ_ z9?mr>8VeWQM2%_g1*du#_D~h|&lUHA3tn#Y{9nZv%owW91sAX7?T5gBGjCvAL~(NQ z$2XeIR}OL$r{-dep6)@ih16r9Rfna(_YNrr3G@C5L&H|dZu25p#=SvfTE=!%9W`h@PLqfl6ZhDg`~3`$s53&^$RZAxcm@D_cCW? zvJGP{(UiV(v31c@QiSaX?miiBiAba`kIZaMl9EjEC7R>Lmrn*;tuogOwa+19pgmx) zsTT{d$_WlLH>+tH_L?n`adP6rQiTq$JGB23ZGBITHI~a+e=zsv~1KsV<51^YZ z5;_vn7VAC2_zZzOAQb4}a-l_4s9qlZV6ImX4v@ny|g#V1!tUwVGKE#Et4%j|KV# zARq8I@Q{;e&L4A#u8D>BP0H60i7dLI+;1(V9jA6E_k>yDV#{FS`r8|9I66PYet$)b zxI4+N0KM#}IXlUo^wab|wAuMS(g?rVN4Xr3<#vX1d`Dg2+gj4|Mts9_@psIDJPD%mLf7}d zQT=3Q@r7SbAy0G?gW0r8P?ZQjoWeO+twpRF=g6(l!=@^2A=n7i;?9J%H3Rx)^%Fx1 z@@n(L<{#;2Ne@nF;T^7jQ4W1R?%-w*nA|RsqYMFC_b6wSMC=|;O5#HRnjC^j~ZQJaDYgE)!3_bawE#%qoP;qx@b(4`g>?+98zi`mRdfEK`* zYKrxFs|Rs2)x<-Hp-&)ZDyHdyzUj6R;6m-mN$Y%*XqfZG(&4g-gEO(Apur9r8Xp4{!FB_9~{DW#-5!aZ8S+B`2*z93e zNlHl&R7__Q)#Ey3iJU%2K*|vrFXe`&Ouwr!;VWQ^^hm&5^`tfKA&H~4_^z)qolq7s zARjOQ5IUQV*Q+#0d*i&ZgxSzjW2hDC&23H;1YE*5~0 z?GTD5YJ_I|$R=Wvlnj-jK_+<{;eSgywDbc1cQMKA|Mk=x4{<~r6H4lOI7Sgw(@K6>Z2 z4rsXsGnQLSiQfS;N+9Ph_4Nd0;CVeHICQh9P>8|lACt-1v*Vdb<;s#M` zdc=p8-TR=;k3=b0G8GNmOL^3A&~PN{V{eVdGgD%P8sPVj0M{OG3oOiQpAGu_N(qe^ zfs^Ib^NZx*zTE-weA}%CKW9j|I<#a=5UwSiBqd;onJ~pjf)HSvaB@EtjZbJ}66AXZ z(rJoJZ82HQHmZp7jx9yZoElh5AAsW;r|MCG`pYKcj^i1+XWHa7Czx;bYl)()cGY*+ zJ%=8c;^t(X(#uF>brGf@H@4d>oB|hP1{2QFm0XLOP*j6Bxa7pDN0ik?an7)KgK1BrF6z-96X?9 z^>3$cX8rXP;21v}@0Y{2XyPt;a)!;;a|zAY_hKet*#$Rw9O!rj?`9$VC$5Xzof}$i*z$j77ixW=!rGFej4v8q%~P8 zoDD{6tXim_4QggOiA$i4FQ;mp3dFczWe9RHSvj2zTKIVC9})GL4eBx|3?6lvD=z0U zmZOW)U2y3Zgp}#NG1wlXc2euk%U4T1iXQ_TPds?kMWrwHE`sZ6dt3uu^sZ=5wz{*+ z7B2PXPBEP+Xi=+I$V^z{485p{q&;~T4_=(wNudEvP+^a^6f25wEU0_kM*uK~T4S&U zm|;l2lGk?2#R5?~50i{bMp?#WP40q*EfRsnAR zA)#@Dyxm&9;EwEGcG#ynI^HPE))A}2z%1cr|)q;}(nZ{n>ugimeU-inq9+bMBR;Q?HvW6WIo_i?V4VgQWKS^W zLz-KoX}r1?nSMhAhP=+uN;E=uFNjpUcC?+5?z~@16}b!*n`GoqKQOw$tEvf|-r`zj zXqtQ_0%y9t^={OjTL^SiHAPfvW^9!pwMZ1J$HP;QG?H<#dK7MN`c!+2zR971|61sT zic$R@r)o)cQ>H1G^FFF^f0zgg;|F@W2F(_OkfNHe7d-ZF26KfyY7C_3FvM3z7qNAr z{H@pi$=%<{Hh7*c|GqO~j7eN=gfVU~eKl z<1%2q|5QqBNDXo&)XAp79(8ZhYdh$^@y_JWy=@ZEtpjQNs(D(8mC<6hkm{F}m5cza zLDzRwl9NKG%8j)2{&B;?)Vp;{FF2km8zQI7<}W02XRN zURD02hNZ>1GwR|UCCpO(u{_|j^ctN=ltCI=bBm8hXuHb|3AW%*fK3!edRSijnA4-_ zXhd?Xf|?=n$ok7Wxj1Ir$grxFQb{YVWubCrtys@dH+f~UUvINnk4eQc)BtP>KT}%N zVj-RvT5#xAXfqwJs*x}ix*C0D5?^L>_K_%JGf~t+Nruw99*C!rrx79|37ayLbUp>W zL$J#mOmi!Z0vq>~a2g=Ysh`y6{z!R+?Ko+jJf_ytG^B%B?Gz$|x!*N-pZ_OUb|4B3 z=Aem+KB}S2AZw_ZOi%s3i#sPC^G;#`1zq-!f#H*-Y<{uhn01#e(GNL8291X4g3vAj|XAPZMERxFUyUr}pMwGV6e? zf(9KYCCom9CE*hAKXa7WsZqQkGLA56>2uhz zr(!hmv}a~fQnL6^N9W(ZLxg~4_fF(=a0SK(eb>JPzlG`UB7Tw?jq;NOXPTC4)|g=V zy`8I@wGFy~Gb1-&E{=EVu&U7+8O^JVdrdNF*F|BdYgfJ5*i1T?KT<6^^iUaMCrs_o zdZG#p)jbOfbe?09H#*nZ7%zc$Ftw6tN#ZaT;$)yeut8$ia&7eHN&z=X+39Y*%JQ9; zR)|1+OHp`)uR7l!f>~ zne?Q#3@_{HAx^8cmY540|J(XejtwuU{}f)p?3%~>sqHVzQA7myH8IZXrTJEYIxEYj zkI}%BJ{WfabNl32A*F?Ez-Fyd>n+2I<)()@>iE3N(AefW?*kjItx1@$7##E2_`Zvy z5oU>?(_vt0n9WC^4aZ@Y`5LYMU^L%jByoM7Z;!a~<>Ex}4#pm2^GKcq&hhN2s}O^Z5^i&(o06f%sXWh@J5#7 zjDUcxjG8Uv<)p#R+1~RuZRhatMbLSmzg@n<6Wk$$iElRVWM^cvdz(% z#cVaQ*2=(%T+%?pl^^f{X?9$jiXVXh{enYE6Bd$p1#y%-Tcw9fHG&wf=EUJPb=Xic zDAj}*Jvfo+s+QyvXL=F2`Xq;i@7*63(<6)wPC z1acXbv))8VT@59;sTANM0lnt$*b%$I$!f0WvTY!HoxuF~XK7uW+0@)G7SMuBU68NPc=0R>PM9su$`|^)KXmIWXDFVY*U6tEF%Qmt z`2qcJeplr23pqnf@hpTP? zfdS5}kDac=o;@>~aem`!B z1i%S)A$h*jB{AmVoH6HpdDGWCqW@O8&OF@pZJhiPQE)hKVM@@^Fs;Er zSLAm$sE~W5G5<*6*&(BZ*Fk5Vx|Zuf%hu|e5(eJ!-xU3w$vwRnVUKLH&AZSO`ka!V zICU>Z(L?G4WU{ry`{vDXt!E@P(DFpr{PYW&?nxfl zu-TuH-^%;9jQIHM+3=aBWGiwWrB!oE=i&%07B*tfn%=b`dHtQ8OD^9#hE{*FuA=FB z_cLv9eLSB>JI3(azFv<%x8G(Bx7BN-ciamW!xVi)RnM99IT~vCouRkbpo!(n>wTM2 zI}49@k7-T2h~(5;V4OUT2>n9dkE&i+#5)${!|g!nX8J4*n-`aUu=#}Wgf;>82m3D!(fDa3ze>YmZu&!vZ^vE@4FT5I6%m0mwy_=lk{I4qU4M=z&s;Gu^@q97eKQ4!r$JkZ%hE z2e|>-qG^LT?sKc?R2#2a=J4?xajpB?1WAX`j5ya}Aa3HF#DL;}*@$#0<8CEYGLH1G zn-|nzq)4bqPYkf9635`?m4=?w?QT#%BJV;CK?QE^5a{bsn!ZT3(`6f=8cNt}q{kEr zrcrKYf5buQO7_kb_?zzuQ}ov=Pe0KX4xqteF3amN8X%0fuw7&wgRNx22?kiaS|9E$ z;a>&w&0AM&x+8j5T!v<0PC({%evRyW@Xn*PY}C%Ix@&HNQC6RrOKdcZ(#N?gWSe^O2DKxA-{BERp@6T2 z#3qxlgPC3B<3TPX@Pbp&YKyRlg^Z)5jSTV%UVkmf~C+adL?)g23v!Kg{+gI48?-dco+7dJXWV_Un)(^yiR#{yUk9C_AoY zv^+$r!zfM7Y`ejerpGo|9v7^Eb_I5S5UXr-jKeJV%Az%R8GmBpMx!{loi&WAabUYU zPuy=6xecoqo!fw^Q-5<}hOWBL8Y0(l%!Cg;J2H_QyfdSAyE2{KENW2k+SPMO^<5g5$I z7?Id9%maNCBzS41OmQMPNkjrJjeK*eQoHP(Uh!Wb)9u}yseCyRCQlRrtNxQ5u>0r) zQUN=P9)FRKg~DE-Nu$Vs4d)lKeu|HmiBk|+pT*xOCI`xK-Uc2?K^upVADBy;`)tWb z@yb$-A}?5LAL!913QRVy$nmp#c}1pa)^SKsz_JbHCR>V@KFE|k$TP3NijR}{HEz8i z0ZkAGF#WCp5$r$hlu}Q0I-Y`ORcw`eIqO zk{MKcIaMF8U#p`Y2gXpiL8uPjWzmy`J$<6fxMloegz+JX6e&3{lM|&Z*jhyeODrPk zZ&L*~hQkdG1KU{4Nll|H;e0fwStqQDXw_6uWQgD$0atTHyS38MS?cP>zrBz2)`ue9 ziyYodG&#;jLoAAy2VqiMgr2Q|N^V~K*Z|(=(PTj$n+HWPMFHux#?XepdQ1q-cFMeV z;Xa1`)7lg|))o4tSLqWcvT~9 z^0BB1gn6Tw_*KnI5Mj>jOJGTIdcF$p)!AaL1Oxmwbcy~%kLc$u0BgpFDR^rtNfWeP zY=g#00;@y>x!!QX=(lvx1*~3fC4W6h`_@SLh8Fc`yt+2OKW{dtx}p_3$kn-q9~|O~ zk8`W?Xt*tx*cs|c$nvv*l{L6q>w}ts&{bLL5dUf!Td4T3uHI8NEWex6HUVFyBI(Xs zl8>v}!n7Ja+-~GptQe(zo>G?;YQQK2Gh&W! zuRPO;AS1j@%-x(6MtzS{Z`PEJNIsb-cpGxk3z5Ko8~Fl8kH`~EcGNOgdNfXaTci4I z=m7BnPwtx~`*l9eKgSPGHvRpvzbzvujr*sxn8SmLH3nxBs9{kH0UF33O0Ovb&81D9 zA>t)N@G5m_6hS-SNCTqR$-cQcHt+;&ffORY3%$iVl{+IhX{md|n}~7^+yvKR=e!8G zf)3@F@wGd)JubTbusu$w$`_b&A?H?)O{cAK(ppiUU#?p5!QT>!bYNBsh4%Ffoa3Uz zrEb){*cen8JUX(6<*20KtlTxc>DPgn;PYeYu%W_bF>u2@ti`i1BYW||yr!_Rsd$Fs zIin@7Sk*8@r{Z~?qF9x9SCnQfa3kKFWN`;vv^&bs33O-}$>mc6Z8IMVX1Z1pQI>dd z7Jcy_bW`$gY2h#&>8?Ly`2(eOSWTz}LzVzHl&q=>#~r}dCA#>#R>r!-yD<}1fYdbf zd@sbOVB(O@p!`+V7++BodWf)Lujr+~9aAJ3GZqT#q$+lb5jCbEr-skZX6`O9kR9KV z&O?_t`W?;Bgu(nV;gdcSABiIvrB;-J{~IwU2$ z=^3G{9BSf2ZT}MMTVCFP@9RNt7^3YP|1(>;n@~5mWi={>tC?A{W@(8rgxzYubXjxi zeF(=rL@ZJ$Bj_4jYJsrk&Kqqg?uprUJ>q@O6oCus%7onAedL1p)fI-zcCsQOu)#qH zXZF5RCJC!=wC5Yl6=SGiI2D@2QMlW%Nw$i>aY8W%Q_tKUF)ccA8Bu5Tx&kyJK9uCA6wP6mmL8B9Jw}j-RIWGrU;QV+cj#um0u|h)} ziLIf{{~?CPUf=3z<{+$>j(a?6vdI}PDUf`g1Nl7C?CL8w=@S4|fu_Vr5KtHfyBa^yL`)UmrRibg_N42`8ew=;@nBpw_y)Jk#` z{@$P?8=n2g_|~O}d52a%L493t5%Hc|qf68h{5VrN$UGp3tLQ`ht&vCNsOMN`s&D;z ziKekNb|`2PR(AcDFNW$!%W)N}3OCy17i&!U(9u~zxkCfs{){(bn0Dq&F|}zH1Xv-({HdApygLJHj+-nAIn^U&l)=HD4Q91Mm}dzdway)=m)%0E>esz3-|J~j3{&IWG-}8QZwzr7y_I!V>h^$-T>+SQw z?eQ2&8n?OGlX0h0Hb;rB*z`}Dz^)fE^mM`d$Hp;;KoBM}KQj~G5wF=P|twY1r3Of8q*;M8p zTSAva)Q$u4tU8WBlJi3!(ek{+w6H!QB8!^lz#&^jfBS{twSkMqU?ntWf}I&y3FSKI z{;^+sTB{m_xeL7f7ly}IXvS`#+9sKswPj6ODmRq!0p8P|Rmrj_%2Fk~9pINOJX|S- z*5_yO;lOGANJ`|R=)xz~nHSWh_walPJY5R+Eggy@A4(jmO|h9Zo&*Iio4Zg_?lFqyTg zN-yZU4|)LCP(5&iNN^4$_Y+?dd7*S%Gj76C$6RP)QvHNPP(8<8CYgkr{#X4%{m+waxE>7su@AfvpNZ6!Z*#1irQoC)w{I1%?L4qA@_dz}P$c%=V~Z zlb1sKH`;Z7O`);cqU#S8H4L+AwkXx&dL(-NuHsf531P6c7DRfuErkFoz{*v%`vto2 zjePnp3n;Wz2Oo$FJg6?$ z27SyW_ng+dZ`r6pqlZVxT6+kxD{6=e)*Wil%Ug~phOa4`fvp1%0=TU!_XPsdJY1I% z0YU-aeC`P~2GWRQ7?>?SU z0-?}%3Wd5Ja-ZHlP#x>O1h#HJyl}dR*@d_i@?}08HTMYLcA`X-NiLF?zQp^G&k8WZ z1Dg0~iQa)#mx0h^KDM#fqgfX|g@y0n5v+_V4z#+VIyt1iYDOC2G_iq~;AlQ$rn+LK zT7(-zoGBu+Oz12u*K{)Q#gc;^<@tZKe4tlBCL=qXqI?k?A%AJudf02TcV%bT4EQhp zq(x8+EN;UWPo8gPcEE+55d@%zCXwHor(x1EA9@s+6mKn?r%8_gH>^@1sNZvInx?C27bwG!{^@h=kjpzUtTj=Z zp$OldGe>Q^ZlZ78XX~BNL{FZ8%xFPbs*tY}yynFCbA0{<9{!O$V}(Pjx3?sS9a4d9 zPW`4iu&yXJ8=!#jdfi}5&ZISDI*pYS-&#KEeM`0%w#6cPGwwZxkW(8SOL~6w_jrP$ zqk|5%v7@D^=W}kmVs6{u)K2v)>+;Lnbv~v7dxo4|!t0=?n8d5-h+IV0v~o%kIGHO$ znNN){oPiwV@BdhuHCqQ$NNK_u{v?+e>RLH(0+^oM*hXrefzpNZxr{L3a0BE#yw}!URLRF^Fyv z)>P8SF60C*Urlg$feO!BSFK?o4zli&+5@AXd%ML;A6;#6Zp+#M;=GSVYm>BNz))q^ zX1K}I&B_eu{O^&rdM{5no~80t)WuE(Sy?rQCiq{qP^F94sFA) zYSPMi@_Y7>g_Y!EBRdSX+b-Lmn*Jgk9UGwy{YAoPU}*ls2xFwyYouBl!enZ&L1Ba@ zW`o(lfHjuf{W(6C8my={L=y!HjQ8)aBuWFL<1eUDOiv@=h*h9PKNw;q7f{dOK65p16v>HN@put6vG_t*M;?l` zaf*Z!Kqx#sN0E$D0aUbDZWM>FVh4Mtd~F4Lmzc~rBCk0_zz-O2AdxTwKUf}lAzsUt zu>eQQc!3{Y*n&QQn=T&#ktm?iG5^{J7_fS000UPk&<2r#7hq^gQG{bC2evffuE7M1 zR%O?Ua0)f7<-qAyv6g;z!f*`#o?7cI$Zn#KgU-lT+#m2h907$jFJm<@B<}*s+=K+= zxq!Bw=qs&p%USm1Gc~|zU~oa}1XO!iUSJ}&hz;na-D2Z1n*R+GV(z`^+p|pb3(w|h zfacONPd15(|C$L3D12!=HMkCQB{kS#qEDR?II|$vfO=Ikv`Kh&2StBK z@gdnw_V&xE5i9P{%Gt?|#Y(Q49hjRNjvvCf?FYM=CCFE3{N!gIrl~-(T?QP6+{=r3 zw)NBwzyqfsmQQ!E)6a1zfusakO3^^?umWkY&nM|PUAZ|)ae&$b7JOu1mN54^y>}s& zS&l+G-p{)XmZCWwU%tbSvV&A z8{XkWcq`6bv8R?H;zuY}MRcTHlt$wsKBW!LOZV-GL=#r&p6;r3+iX0@pa@qJSX>=^ zRRe5!ilpC4#iUnz#tv7BOP-{kQ!?d#gfUQ~g@q>+j0VD5tc|25cLd6}1fotX&hr&V zb>@y*JpRuOw^&P3^T_Cp#$1#^;HRD3KK~?r1A?_cOHWs7I47Wb8nZd%9fE0S5} z9NZ6I#rySM@&6NcNsRCL;^kWH6tUCl_L4%5;W~J)&h)x;Md2lfCVVcm1!Y{Kld@dY zU>l5jd@Sk9lFUgQ#>&zDu~ zFts;LlUm{YZoLh*#WgyAMqFN@`;1}U;r95un?#E)-Yv>nag33CP$QMoIS!7yDNFSp zpHzRhn3%wbC8xMCGJ-=`LUARiDrIx|bI(;ee4CQ;OBI@Wkx9VNOPs4IvQ;?=z)e8a z+m}vgPEtMY4OL!D&^_+OomETMa~Gr)>vF{vWMP`c#Y~uHdpM*6%-`F>ZZsUE4@%gv zZI)P5eH2MQsDTA^C4l(QagW64r#mSTm>%5Q=g@NZkQ;KKo0v*4)&UV~ym(}ahC3w@;A zcm#7%h>JG9y^ISksvplLvHqj21HNZ7#@xA>9=W9n6B_B?g>0q$RAahoBb%WLP2~x( zU!7X7n%+uPh?Ar^+@m;o{*x@ufu{#%L3d8Te9YErUp;ZK@N z?IFT2Li;$CEi}ov;2Kp-W-nY&)}&6daP~utN5f)^1_szbAkJ%wOTA@^&TWx!lTDSx ztaN7W!4JIuV25sHOmyeM{{=zcvdFmvqe&CDd`54JQ+E_$VQtkel#Y*ez-$;6$u;4L zf9Z$`T8|dFC32fNKteG7NK^dd?U=+cQ)qaHf($wiqV;Kc+C{*x;HZC3p^0Cq>H!D- zVpg|h*RZ^0!OTk|*41j?U(m>)tfH0&#k#g-L8dkGH2L0|5har9sy)bb7%wK-XoVeJ zaWOhprFeyNpm@$4o)Yn|)|1pm*#E2dS7WOLX#KT!D`QeIlwxER+e0Vq41NM;48JrK zD;|zarZpIP*rvJ8Jiz*UkRx;rT{g`Ic~7eB8(AzatCBZ|FV+fcS|A<(Dt&C#yJA$FvnbT)yc=cg@UC6&t!6Zoe|*QPlDVzYfc=Mr;MC(c(17 z-Y<}DuaY6tb)7sEuNJ*RcZ4Luoai&K-DmhLb7ru6-HI9Q>Gpy(QVNv8qtI5-VB@DZ z++`7TwnUrK@eZ=rGAi!8k8tF-qj`^F)zEbNjS<^}5$rs9y?6&(oq=suCJiEM66}VR z!i|T)Rx49Ot2a+B`D1P8O%LN2cZC=%OsqHYd321l=X1PL7A=k$VphyT39Cq<9qd`i@A| zBN2x?dG5hc_LGY%t*85Ro|qK6NKBm*A)U!lgMzy6hV3vSYN%Eft2UWsr!M&eZD~40R-v zZ<0)$s@sQ0b!TbaLZmv!Qs@#U)j3dVheKDDF2Pbecjg{2wNuE{&iJ`q8?xdWIMpq5 zYKP#d9XPl9$elx|_GR}S*7PnpQ(tM#J)ElJ6u5*`?F9M`u(n(Qn;mBeuR6?wq(!Up z=+m!qD}Ft$9YmLoPL(g|hcNm> z=B3N=ch_zli-367{oH1K$RQiZwLgXR;X`l#Pvgj!9=br3Va8F!`@YY4xG%C|e~^W{ zzjreV;m)g$`6Y@;FM7vR-mv?pPp2p*3=ahA2Af=g2JxCMaPGVWLBcqq{ocHw$d5^L z+=@CX#yz)1Z&l3mpAWo!gS5K}7}rLoe$`Bf&C(1qp}apkwO}PZW(u>O4#M6F#%Bp% zy~NBTH^_zunB=1jK4Q}xTv4JuvMqL%1nL_ zZz?qh+$6=J>te?F-RalDbF0^RC;&XLyGV|6=UH44PNMC*hx+&M{!(<(dEN-+w}cL$ z%-gz0zYpg9YfOpw*51X|zW=fC`Wf^EknyE(7oe6{cBs0&iAwDr-W0{{2~Hh3SHBm# zXF2s=oTlJzQ;r%R85G6YUhZZszoS&{c2AD$z)c*xTKhh7|C`@l7Ukh`6#Ivh{rUkN z9#a;jv*(QC1Iyk$x_jNYJ-@6Y=;TZTdb@{Y<(oevx;*DBA=q&Pb$H@gl+Js|>Dgyd z935d*>FN$!ZQWsz55hH8m4O^&RdIVVT9kX`kJb-L>-c>U_UJA@Zi`Il09>yOJ7dbASlr*M-Z<(T7OxORTjK(l z3lIVJ*1i4rYVZbJAd}0%fX;;)zX8MY>Qg(m1QXN3Y~#f(jhb?=w-Xb*fjAIC?Inr> z?7;?V(;uU{V>5;cYnlliSEF};M-tuXFq7Da9Qnh8Zl!_%X~H2&UjXVVs1Q zDbsj~WIAe0qDSS>$}oxuhowLy9*H<5L4fFFiK3~HOy>y>d_*Pitm~VD>FHGPa*ra} z{0fJNaTvxgK$HZ*qg0Rvn}o_KL<@X9O&!n3G+~dj;LOUp1)8cTfGL)0gfj*EDuXRQ z1(@-l8$Z9rOjU`4guH@`mufO$ml?p#(Dr%XC2617P>?3+Uv#4C8H zAbKkl=8>#PjH0uPH@_awDnA3@Bj!;oZCBOngcGQ_K<%1s?e`anKd zP!h^6gnWj*^l3$+EZk+t?+8TzM+@=-tT>O^i~W6{csbQzvY-CBe{(c_zE4TQakSh| z&HZfuyZWmAdH8(}zF81#^C7M-h*&dKON<;xNUcY@`p8e0S*!+MVI~9)ideQtHL*u5 zS(J(Z(`@YkTahI2#oXK=$^k_lSw{G;95w@-$W8;u5vz;J`8vqpgL?o*J_z9&P$YT* zNmPQT;uB7rW_yWw#!JMBlSG)W_a$4v^Mn)1_I-4Nf_;XU6G*)k=E&m-Mf)(u6N!2x z`N=f&zsp6I?;FIXjho75R7m@B)mY`t-A89%9b&(6E4$DL9u5R_-7rMoz(-2%N(Z1?P~V zJ6`}X(`+Ip)@})!!|u0TwKhWPSJtb}k!CUSDqF`#OvuTSB_J~w)7|4d@$&+EVqd64 zX$|*~3U=q4Epp_bJVgXXO0^{A@#b5#B85u-;=TjItGBc1M*UW;vi9!Yu8s6D6E~Ni zuC6YQ4C8%Ss+zT9K>Tz6NMh`fC{p$|25vE5fjRW9QDc?#e0Bh3(JQxW!CWJhhj<6~Z6s3bFIral| zPNHa=X7x=Kr)*|J_z8ze2x3Gr@g?cquCTWPt?FqpIJwQhHA3+O2KWY*=UPfw6on8+ zQZxi}v=C>47ZBF2$itkWU@_PV#Kk7tirK#?@X2OA-R=M`ILann{H{2dnWi&IR?I8% z0T!nXMJy%}lRHFAf#^#d*A#gO-wa6M6hU85)HcoWWfdpgJVUTTFlbc?dn@E!gG7+4 zn#Ki%Au47ZQi_oeWGC__qP|NRSxs~cV8M#=B`z)Ifa{_N;3ouqM7L{o8ZguI_m)W% zJPM{<{Cif={7OP*=|V4(AXtN2igPJCJyKhsKE{z3B);4jP!{g*CcP?sHBr*X( z&Lj|D5~f5h89p7rCB#u9HOPu_l8?*k4C zV{JFd?xRDQQVQ!J^gI-EB!iMxw2C`B6(ynkr$-_ciJ83szyI+_K}G(rndVRYc<1`x zvi_e3ER7#Mkm5fr2L1oxljFmh{{Q63(}Pj}e;?&R>ih0{8IM=Ec8vp$F z4OM@EMoq_`f4EoWevYU~tAC{?M2rlm7JFsIbr6tSd1#Vcp^g9}Ap$WJGBy_io>WL9 z38ExImo$$hh&C#BSx0c7{qK0dCh5G6O7>C7UY-3>$$k$?_MDU0XxH<~wrX`4#L)#M zoOq-uaBXexzP)&#SFWIvYtxfBCX^!|z*u_IG;CT?0x|XS0f>SnuCN&kTfxX@D|n6e z0FD5mKB5A2Owj^S6nW`#H>nw|jfy1>CuU%hWAgo-3-2C|SBTCM%$u~&)d@c@)iunw z0t=X|+pHv)vzr}vAc+MV6h9qKj~aK7Wv8ny6vv4Eoh4d71UEx6s#cBqP`ImDAoLN9ITu5H7IIJ z^gaRaiNfO?(PjnF1Y9Z(ZB-9bbQZ0RRh8nVsP<;@Bfde+Lo5OI>+KpF7}RrxkA90o za_wfF*RCv)lw>o3EazB0_&L{%wXD~yVu!5gMtsB}4jRl@!1Rp8sFBn?gV1Q_yoBDM zi+p%yK31z=RVvBf#X*LGKs50b{HB@0kq}#yON*z@hF+{o^fM_=mV01dA^g-D&aOIX z@A8_J>B{tlC1wuz3i9kG(SWMd(<^nz6kHI-@H{|S21}53a`kq0c(7Og*J0&fM|%yB zOW%*D;HB~xdI8>(2u(NVQZr>Cj%=qTuUVZI9BuuyltH>pk0MbeU7tG$5Em`&@~OLB zA-+PibTT%bVJkwI)RUH_3;;tCErF2l$!!F1#5jV!ltbl*;>7y?`$p#VMw&a2dU7gG zH4;K`s!2P=3PmNN0ECuyj`V9o4cc!2UW&_z;F^BrCa_B8Q;&rEOA^3nxxXa)n6U)0 z{gWpr#|Ldo(QE@?5uS01J(K2tmet#s?Cj1jZ}+V1m(e7+iMx}U$4XU2-9C}_OvMt{ zxf$qBsoTwUM=nN=QFHsnN=^SO2Qskw*P#DBc=~ix|9f&Y`hVX`d8qo|lu!p%|IT=J z$FFFA<6s;{FW%DnVuFM{HCpeNRVy*XRBFlm+9fkdCK6f|ZCNo}UDZsXE$;w1r`aUa=7lnc-s1QMmGNrjR~GT2?1G>g;tm;uZ!i+H<|nNC7t5;63?Tg` z<^9x+y9MXWK~O5poJh(-L*6jZZ&?3S(f_C`QugX~FfEW?|MTSF^x&kX|9SG{ zgMCEVe(8mXNB#Zp#7a-9%Q0$vMvYH(_D7A+eQ10t{KQJ{Q)ywV{Rt&^X$6~KFH$*$!F1Rik%gbZv~61hTLCM@Mckb!wdwFE)m_cc!-!j*;RBSwq$z$ zNcjn7U~;&ZzGId44v<6v4l!?ibt;C^yj=%>ychmnl-w6 zrQXD%mUfux8M#=@jX*0&%s53bY?un&zybJSovBs#Y9o|4BAQrCoGEB@jHrk735ROV za;ibqITcc#kwtbP;zT<(#T}<$miy*sE`0_+r=fe0;?`9O)G zbx)h-!iho%;4nl!h8zX!G(LwkVc$~BQ59GH-T?XjC<|kPiQ;7>#AW44dx^w#8C_8F zXVmUFD*?h@mBdytjQ(1TI4vH^fXcnRlD;C|c&hWiUiD+@2)170d5uY0D~w3EY|ZRXu36!MAzGp&JwklADI)FB}ALO6YPQ zMUxLRu^ZX`Z)mCK2bBZpP^~Rx_2cX36eD z%*BO{+#m{I1W@GBbu3+i@`pKAKp*2Nn##>LYYC=SEiQY&DFc>CzTp&dw6s4MW@&?} zR+B&<u?)9#PsN{60Y(gOk4YIWrl`7k+_3Zqn zOtIy;Nv*R&EJ*E%DZy#SQmECWz$W=u>3MD4He-_{`>{ZQ6G7@RMIL5o50D5c7a
?O}UZ;<{3r$>C9h_W8`%}%kotT|A%vBGTiWP?2_pll; z+k3xR>ot(R%Tjk^r{n6P-D->dS1$Li*Rq`z3tg7G7E3ZW!;CoSuN-t!cGPKkL2p0P zwK}NI+9$(#;-q)7*DV<+MW;{dtVt?#11)29(IGYIiCVz+(jMvWm%5jujk+QYjoqe5 z8T^rR+{<&`G@!oEeAPK^DU#uOG`-A&v_Xo5k-y*Sw_96mPRcJt(4I;drlzW|TWQuu zo_--J1ZbH@i4{o1;*QhKT5^x9(fzc!jP9qS`)Qv+j_#*z6K8Zk9X&Kh56#g-GcTiu z=IEh0dT5Rwnxlv2Mj1UcD`oW196dBg56#g-bM(+0Jv2uT&7ypx9-5s^>={d`i#_5_ zlV+V5*vQ@<=SbopuwoM!`IBn&rO^aGn&3wh{AhyTQWN|bs`H*o8vk>Jf^d?Cd<*@7 z`_RV!JUlo#eDbsw|MU3x;B<`tc^~DwJhatMf&_k*B=G3b6;06j3Q{gZ;Kvk)kYXW$ zCOD7+p^&bFH4ydQpUuGR{Os*3a2CgG`sgQei*69z1GfmkfaP^z5Xc(hBxD>$KBT_t zRrMqT-^rMIKJk)JYUB}sI28TmKk-s{Y(=m#Wotsgxg=#EflVJN{kQmAj37zRW(Wcz z4NjtgL`E6>g$M;0j8LH&6_Rg2me`vz5LvEF~m^VTp7s#pYgPQ`@ec!=4EmH+|) zY?4A#NJ*oklmNj32Z%`xu^GYFgn}@W`uBjhLf$nX2?xIm>J&oCACHANqizB+81Dq~ z$%=$XW|kufok+$lXN>JD%qJ=4lXSxNzbhfU+dL~%NS9)1q$kg3@bUMZ$pj{RwX?Sq zkqGVlkx^u6B1La?DX3xX2B;+8K#rIFMHxRSlB zSSGO+9xM-2kiF!hDND^`|JGXK5H6MRNpNmO#~I6Q9>5aww*9SAgv&gO(sYvT7YKgD zGR`Vtm=n4dOge^)iFJ~hS7VBAAV**}`$_DY_MWFciUYD%+_}V1B{#ioMT#n59H+50Q?Vl5&ml=79>Z0(OBa|jUg88dBuGN^ zPSh%oCPJL82-(<_9S*%5RB_^QN)kcX^5+O~F%2qZ1Cy?sa{FEo-|{qUz}tzZ=NOt8 zdI@?rcAocC=jCO{199@aFGoI}x3lEpF(n~~I2eFba!@5w$>pPfELp18#<9RORDQqL z*quzWjy9y1TwKXfX%3xo1<*BaI1&Y@50`HRptrI{(ex&ctVzChG06%3*NgZ0S+Z4v z|1G9ynLz4KZsKUSHteZF@HGxll_Gc29kBC4oThs_E5i5%-`jfL!k`)xORO&-t+RqdL%+W&7 z1gFZqkf`3%kg$9;mBd-{@~Q4YvD-+j!ur?IZDu;|j6tlABTo=}!;&4Om=46m?jBbm z-8Ha};>Lp_0Wn3^t5J3{u&KBzODDBWE_P1E^?+j-WPWFn=rtX$=qfYpK9+k$KA)Mu zT_7!7iM&#YtJN)`zRH46lI5z7h_qH6ia3=_DhD=DJII8Lp;7uVTkG>M5niHMK( zzsvfPc3Bv4Jjs4ZnRF222)&V{*g{>Zik7$vAk#Prf(vO$tIqeE#e2dp)Kza|&d*dA zYDWkNsWEN?dg=CFfxcXMRN1W)l%7||C#sPJMx}B zd3LPFM)oc+YLYR3xj~eQV@zJ&M2+m8ndjoncZCF!aKbzosFCCg`@b?0{!hW`d>=sY z6QTGo(KZlQC~%fGOyLyQR4tK|)j;ipQUlhFSjyMiW{RnI<3Kef;1(S>b+$=EC)1

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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


i9P>10+UO+GNWtxEcxq?Z1 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�rQ>~ zKS{axp2N8qZ)R8WAC#B_S(Y3SO(^62GGC`S%5Ct|tGWiF`|8x`VGr$P(VmVC}==0bkqPcdF8B-h!h|lD-u{Ye{ zI~G#gL5w9AfvN>2t71Nn923y#;zp$)K(4Qs$y>de;htUSO{1kq9V=O-r^rkrw+JrM zoK`84u!jQ-ol`GBbW&7u>l<4EPP1dmW;z$Tq(_JYnc%+kx}&GyAbbW8 zQ+Y&`eE>&2VFoPdSfNvr$BS?5M{G$#IDE`;_gOr=pM0Cq%%*}5Mb9uHiiM> zN2wd|^wfQs}6E@|#l_`q(G%_ka8>p(4AFD2spm>6wf}X zD7an^y697i#0QqoVq&byx{}S1{mf4|?_8KK`N5rkMMBG*+lv@*_fTfJb}$QmpMMsY zaf*(3c1V(HU{4U>nTP!3TZEGwK{kA72?=2m(Se^ifs*r_G@#>;U_*klM#zN`VIw~B z_ODL+JDtqWvv+M~(2-l(Vf!e_=q)*Sp~{NP_Wadk$Z3MV!fi+c{LYEZvvCwQ%#G?7m+%kOjp1J`xK}TpB;-a<|@g|4{fFg?w zJ^VF>&7x>4F67PeYC;tBpd$q@nbh8eoMjb(U!j+RCo?+dG8;o2M2C>m=Fr2zbW5Bk zJO~3q*_O!Izs2yd2B|f|0kVRSqAlp-ni#q#4&tV3|3cNVovEB!a6O9?QL+O3RLGiy z@>3;Y#)yt<4IX#8AnIBy#w_+_C|vv@OO}8m40{j4$b(Zd67pCShf^tsbYt1iu4-jn*}c+_ zDA`40BwfKF3KHSZCe84VW5vA!y&wUV{cjx|Alk(5=9U)M^Js*IyX~nOk*|01OXF}~ zf~Eo96GH6PnLt6I!^a+0?Y&(;yR}wxqzI_>#xO1#@T2aecu+dbJfi$tZw1gY!=4&! zOv-E9@c7RKHTXd_lYyaEj3cArtXHuB4&q;8@`KoZ)sKu>Nc6|uJ|;gLf7VHBw!7iu zw?--B?E=HEL3)m;eyKcubW^{-)ZG34#q-fQrbR*j^v^aYkz77QJf4)3 z?}oVYz!QqWMRyGB1#VCFbyD}TmE&S0#AGbp;KG{KV@K~a?=R3x$LN`azp|T*d|B=h zUffIW-N~0x7D!EAa%h6{IC)mAS@q+gFnh}2z!rnPr;k)P8OBz3nF`e2AY6yTqMgw^ zuP)N(&YORDSA~prE3g}edL_Em@M9rcwGgAIQ&enodkFa!-od_}J6yj*wtf9|piUpA zA%ErVAz&z2K2SVRxqLb8K1?&@hkkt^bI$YXv%{+2Pzd_?Z2%YeBGV9leB-B&5Lg+F z@_udoVQK!p{o3sI_ISRUzkj~}(%t%gWw>raHqqRXx3+ z`HI2ZZ8;nk8L@|!STO=tzOLx0Vy|6`AoHKUayR8!BMaf~_@_9J@_7;5Z16A4WO6~^ zw|lsm`3xWqDF^cNc1l_`Z!L5pkofO!@CRod9aQ$2Qs#O(q2EUH9p@@1eBW2&E(MN| zBGRcAqa}hJb0o8QfU@UcF>Nz7fVww`7@F9KX%M=oEDfoRT(2-!#o+A?4v`m=tb!QJ z>;9|bA@tQ1pbe=xf%Je}C{58H<{=*f`H#FRaVWF^#+*BW#y;x2{r}obtu~Et!iBFT6iQ6I2l%BE*Zfl1rDjb2BJI0H*#n@ zn!|XF1t;h2-(Q_)aX6o+k#o6kt;@f4$M-5CEJb$P;Q!RTS_RSfwM2C(g4a_`6W}@{jU4xB7g!_`Aar_AmLU9Wp_oZ%uTi_}x>7UPXQXT9XQA~A;^Gn6MUsa7te&B}H z54aq?ds;0ag2#Ju{<|%zCnGo9A=^3TCfDIl)K6OlAI&NEl#IVH(;N|-RPEtm;aEMd zlV^5}ag}?K*>!vL(J%+ch_gS)&}bsrTLVlT+h@FHg`;{4NT*<8W=MKHfL>8i+Uc(u z)T3^=f)os^s{YQLo#Q_Ywj`zW)l#G7TCpG!rl|r^e-9RXT&=PRmc-jec88^bXaChe zeXU`(47!*pbFcxMz5rVuIr8W zKE~cV%}SDN-bf%q%`9^x*$Z)$_b~_`VINRqX2OO=@uCEf4*l=}U+KXN0%!>HFpA%; zB)yYjtzyL!ApgX}d|F`dwe)9|xp|#r@5P~bVQ~V1old-*xZy6x@>##=T<*2Sp>X@0 zp5Q>dRL%kw44mBZB>S}jXgeq&@7WuXta=E>z)c+6r{{6jr>{I`w7PWV4~bWm*n*fN zg342gM_IU(pOowa-t>z)1<)Bi0nS6l zXhR@3v*uUTPo~y|nc@t<6JRAq5$YDM1ogQ4S+$~iYOqp3{PKPM`S962=*wI3)vV|n ztKi#F)~){L`t-H^WsDbDs!3Gufr3+dziLuM82!{Q#y@oGMfIPX;HS(n+T;cKzEh6H z(CG$yb`1~?Cg=q;9u`U3&z`AY4bMWJXr9vmc{gZ(4tA*{-OSJ_cQ;n4YK^ zdwn)mjwnmNZD!{)=Zp2eQ}uT`2V_BKgrlBW?W$)@5Cl%CW1$+A1%q1MU3u2ja=N?s zgYY@QV!9NK1N>D zdm&+fbXRWbCfv%!SLbFh^ldFcn6Vk?2iAW}uA-w$J<2s>rdG85%xOUOt6qL+KsTCY zhM@<$e^+6jSy|aGgoS;uFSeht!)FM+2kHrkVfI^U9b=J4p;?0Rz}G-fv_cA5^^J;RWvIeLYt1KK^rtnfPLLQQoiB;`BjpeLWPZN{2x z5P8@CH4V7_?|Ja|`DY$bPEsw%XQsj4ssQs)+JeT(6eBuxYW-gz1$6iqNWtFB{aO8e zUMIoc()qgo2asm+@%|qm1$)E#FOZ_0gwpNdbsWIxM3$n3s!$o7_c`n$R>7nNcK+0j zk07b&u+-*kCg_}pUS^=9OME&zH&6D8DDOOAdG`t-97M|JSM1+a!q{0m!j2Mft*zc{ z9)gm9KgIPtw|`u`x19xPj=^Mz^-hFhfFtmc{^%vlb3=qsHZsCuc@1#NOQ^*uU0yY5 zWdwlHPJigs`M;GQQ}Zt{K4bvExX9jF{SO#t0AM8h`x9vLzrom9{ckX;{sTr902o#G zAKL#XFg}$3pI}t|UtrW(*4Q)<;$DE>?9E6(`yDt>hA-o?d<15q9#%Kz^brXRKBSdt zy*;bdflYNo<=(?drG~-BDlAAB+Aqw940$>K*q4M`!hv;UM7s?KGl+9;j~D6$I6~XS zl4m9?w(1c`Gw|Ha5BFEmjJNUEJ}9!2w0IG69>dT44=9LI(Zg&W#IwE~lpdWMebqw6 z3vjbAv(Zde6T6)}^dC2%&3Pix*xFzjt$wQ}V9EeZL6wu!>;1Q;?1BFU7mPRykt|kw zV45C?A(1Wt(IFXgs{`iA3!Yh>!7XNc;PdOA+EQ|QKA6UEm=RlY`kn#s%6t?(w;U_e zkYoADn{|`xPI#a70q_%FlPQ0*nmt@hY^$d&n*3fsTS}FPH5ir359fUlLgSNw6||W+ zjCSQ5E5LSM>${W378cz~w@b(8Juf^(E!RJN*tmieE6`A6UoB&_TBldmSsee|##31{ z!^va9(ot$eFkuym<64s4?IS$p?t%1w@U+A3Wb#lf#v)8N1Mb(PywJyH? zC>W41^z=SJF>m|NpV7#oung(DHeSvC@ctl=ED7wdsK%6%C?4ze#R|7ysLa?~!zI_BKhY5}p*L!G2?GD`9m zndP3J*h0BfzTg4Kzu;j#EwauV`2d|iOtQ|S95=B!fkTc*T}<5Y7h$`tpSI3-TB04Z zzf6yC!=9+8{PTMOvxakqlA80I8vmXue9bU`}`DZ|0clghIBAbHU2NRTT=Cp+cjNN0!W7do8tg(H$~-S zgz`CB-~7KU8bJPUw>xj)&pOozaJ%!^rfdI$MZ+=G_&+QfpzVJw+VY`P$I#r}`IJYS zkLa487C&|+#lA6Ld#%9Da>#;VST*p%*i?bBX)XDP)KuV{PUL$bDXhbjIEQmn7=~WW zp8?lJR!jxtH%RbtT>uG2$d^M$c(_!@@1!U!Oyz-)aDz|FPE^_Jvabi5NQ1F+F8zGN z1;lHyPE_Y4g{Q{9<@?gsR#Nvx^L75a-0w@*c%}(nZBe+QEPL@RvVh2g`dljZL|J8E z8B=O;QA-Tl4_=;{m(vC_kKRSz$s=X8pC(5qf;Nak7_}XQUHErEuY{?t+?erE_O6jv z1emD;OlO@ae&-sfNX+DKf4`7dOVyC%KIKVo#%_NLzgNoLlA|tU!6wB(L*V=@`S|Vy zi>BQC*!M6dslT#7Z~`lKu$Do`VW;5jv*;!U~E>Wv(_V z9}a}TIy_G-SYN*8ZsIme5<7fB6VV+j2Q}pX7Qxv+dYbOD)%2QjrGfcZ1m}dEm!=*# zFVJj900AD!I8$8WS~^lrXr)AWBbP(L?K)t?7vz;e+;5gr-!CL+=%H~#rtZO!^DBei=t>I9jj9-9^hzbu*Bi`RDbtuF**@W`aCo+ z&3c3E;Sgwyd|?3vivky>{A4unF@X<9Y1i54#}N5TGje)PF1lFqrg2FUe(ZD9($>I& z5JbG)i*AHPd3h0g->ZwoJ}a`8wGM`r_b!;^Z`u!Z2utn9Kf>yb$z){O)h+RTpeRKN zUoxuA>`O8-O@0S%5*>%5nGzQJ_p@UDONQd!aW*=a)0*ShJH{n^vgF?24N4^;^~8;| zDvd|nnk;Gj4K-m(!9hz3bvH1NhU3DR1K|(}=Muw5^Rv?nl!s6v-W&B!{+_H!5Yn@M zK3{Y%H#Rp8EhV&4Nn^;liNHZ(Ef#8 zqsA$4kKNXT&0;UWoZ&&Xw(gig*M2LyuAYLcZXg;!H{#&!LPIt^R@-`qznfSsOM!ns z%gY}(ccvq>*ZlQ2KjKaDtj&kY1>%bQV|(k45z3dr z0Mdm0MgXDNR&2)xvgGhL5s)=iJ>;K#HJNgq`#5A#8G7^I+j0{>9F2>A6HD(+0ivt! z6WQy}Clkr%6u+~&hhH{q{frQ*En-^u_l`G@IPZ@hy#7p6dbqv~$hcpYEf0p-Y)wl> zOiS~{59$-uw|?zM($d$rb~d!m#F`8{JFL3WNyJCqqEn@j@#tB?yb%;y2Y5M`~pX}8Zk^gpAmmNI2~a?Aq)P`9)0S=*`K(a(kSDCeZoc^?BLRRP}k* zVYHMQToaR5sZITN`xa-Ztm0p?H`xZJo2{OOuB^;EtbEp_A^U}hy;^wupJHqMyopkq zt1mxC{P_WlZG?jg`YcqfpWBAJLr5(M^4wf*Lbn%s!_VwfGGuU%?UzYBQ-j4+js#xh zjDy4Ri;uU$!?&`8r3U+TXD8@)o^sBOxfb2#*fPx`F*xdsxUz9C0=w}eEpfbV#KRb0 zF$;CUAO4DvDTZxmw?p$t5h1wESfX6;P`AGVOEGY(dYl4EkaXYds86G_c}tR70>eV- zcQ4h7W~!nVcgqe9S5fUqJ?S!$C2!OS=a4f}aN8YeD)554=?)OIUK|+`FD+{v*Jwgl z4aW@%CwuWhg^e`@Q+r*g{iE^eRQ80DJ6$NRIv_jm6ro>WW~9~% zbez$yYubg}-w44c3K%_bFUO|G|Jt0PTYP*tRcO{#*i_$pT&2jp_*XK;s~=mF;Pw`sAKM3{bD@hdM8}*BjqmNlpVcfqx}5V$fYjfPA=6cl_#Yc-GE_Qx+||eplRmNFC6! zY|#+rWJQ~CN;~e0F*?aZ7l&r7eDc(SiP)M$%Lj~i!k7uD>>}Q=75s25aDD}~I&@Yq z50|5~g(@9g-v5YCs8sA|hU1zHYjRBe5yVucico!ptU_hjY0m5fxwb8iUWQzTXs6Mt zpvOIni(haxEq5$xcFmR}L4hiI0Z-CT;a9cHjaoWy&VhQm$g|@d8#i|qKq@yWAs(s$ zX0IGZERHH(AZFl4nNYbGg%OMexDKUEnAp*eAk|CE(pHp7=1knHPyG#%pjs;wo}_q1 zEl+1*DH3#;T!eulz9@9CG^!UVx&z;%mcs7>>=@uG|5WgZW?CDM*jBf~guO%(zUCN& z8=>t5D=UK19JmqAt!Q(1GzA+B&vZ0pHA>lrOryv-lBlMROd?u<0ojit$JV|MsIZv$ z+&*Yuzt?MzKa_4l>MQNYgg2*jGvUG5uftB3EM??*t)gr$k=!1LgH9H_{iD=(=h)E~ zQbJLkaq9r$i$5VL$9?8Sx9eKgyejZJXBxd#pcw|QD9FRpi)Uf>i>Rt_7t0Oz288yB zd*S$XQymc_0(((giYP7ClPVa!42YYSiIZ5lT9+K7)b!JHke$B@DeU#;(Y1MH$Av?& z-TtYyK#>G|KZH$UIn46ciF9Q<%g4 z)?zS^!mEJBlcqO%W^5gv#BJ3xBiGV1*&It!&BYe%smwx_36ic- zNZ0t|(ESYn3=r~tno_`y1-p-C&sCz&clrFl!waFHn_u$drYmiAi(R5RBPy)<6X z8E-P?gyW#ykVe4>%V4lbhLYjh`swUiFQhdRxEY&BqMDluw9se$;WT%=LbvGQ|elI<|4hrA*#V7=r$P=2c2({USRh+@0k=VX~~d~xtm&ROtFs% zk~+nap?CCHL&trgWHRIlv#GBjYfH>RT69k7M7dg4J7;O{uY8{{lRay?k4$&|8f*U; z;VJ8zldIHCR0m$C5R7I}3=IUo!0P}H_<(0n9Kjd1?|r^3U8%Gi$`J01XaeY^7Kh&h z56+%fry$HW&^Ysx?w1XMfrc57fyN2?>AvI=&b+|7=1}7dj9Z#{zF{%6);(oHPivu= zLE!&rJJiYyI?Z8&tkwtlMkc!q2oGTY^FrU)=c~YkT3vL74cf3m110Lv9OfGtMuNfu zjC_4i0!=b3nHn%&UR-e{P#`?O9fREmiab<^orhC^O;`@hy2F@@B@Z{V=&A$?n0O1n zt0j538}tNuNvdMKo94;=!3bF!*Th6lnQf`1g!) z3O2#E>-5EteyGsEb0F|QSHfz(%=pmZ=huw2m>ssP2t&oCG!|)8tk7_-ZP*6>Az{8k zgtd7u(_6r;qXg5v;Q)QjN)akO6DQ!|*jbg@q!Pz3*@SLDH9^8TzCOAcus$ftFcM0< zM7YEN+SM{MkRR!2<>^s~%+@?ONH~IIguhqb@2n6wvnl=yZb+4G_JQV5kaWMCkisD; zK2xZFn^vEgJ}Eh7Y+7Y2xsi$dn8M8t2}l{x@g2F;l(y2j*3+dBkS!*;j?YJ8Hezi5 z-cC7GNx6Joezl4vA5SMhqxn{;@KptP;bsb3L#~3khl#k*)w^s5`huXHL2YE*6L6Db zBa%!|*vc&bm_FFg(;&N!7@&l3VAbp|l3+Z?JPOpEsCnNo%w?PxZ`js#!j+WGK?r}q zc_aROdalK%Gz|K58M`84(d3yiW^7`Bh3m#{Gq{8Kd49Lc=Hd{bP#UzDeiUk-Si`hLV3|Gp&xUL!FN%l0HJi$D>VU zjS~m>gJzP5beL=Z)KalC9pG}Hb)?=KbPF*HxkGlm`8rdDw-FcZD67R1H-|^aN$Mfo zBx{XF!fovUdtRANw!L-c{G@jFSUlqv(>KNgSvYqpQq&^6K_*t`hOW0WtBi8lm$oxh z0iQMB#}G&k2q;b2k@N2_g$NZiUqa^|`6+%TkF=2Rbn!?2h+S&S-rF;3LO3WlP}3X9 zs%^!6{k4RU*Y2RN`rcY*7&7v{hx|c*V~VSlMrXdkz_Eh2{sr9$0gmOiZQGz3rqN$C zQo}xqA)DGfcC3^Sv~di~WWUHr_m7fFx75Jds;&eSSnU{uE15sNRAdN#>2F%BRqZTz z^DO_r)<~VJ$<|`XJ=CjmY|Z-`0xhU2Wk-36LY92EX*4qTyMByzy_Q*gfin(-zi>}9 zSDqnUbRJ<8tJ~{NkL@R6)^xgdgHLS*9Izj7OGkaLlSabELlF3>@f&0*i-tXQsvAND%aLUK5wCY*P)rdbE zOsd6lZqL|Hy*5DDD-0nX9^k;}mKS`*Dckte1IJMG(sy*3CC3fvd|q()>tu-u zYxI(I2K=-4oQdd5yo+svA!paCUTF0j3}SBZ)1WgnAbq+17O+8eSxb#V-d_gXE*B6^OvLv+^b3o~ijWMY=R8UIs1~-H zVR~=VdNjZsc*lCanFzd^R)?8b42%?W*kJV-O&hR~1W#?Nn9RPuFG2Nh_AHZ&5|0~Q zieLU^uwV?vYfW5fbY}E^Dr0~zF118bo7Y`aobxB)E6P6?9ZxB8%)f7H8bD8&8j1Eu zL@8E(d)6va6{It&DS#kx2Ih8`SG5u^GLfqvtTm7L8IG!NA&uVgaOFI$>{s}DjQ1Kr zcZ6-=1L`*wlM` z@7j5CRYgVx9dgx|z09hvh}f=(Ld*}N9oNu}+t@bh#n|F#!AuIZ)r(Y*_FYC$56qx4^I@*qZxN@W32X;SC3X1JGkCHOoh31b(n+Un(f4j_7g>h zNy4Xk-_n~A3H_(C2CmXFCqnHhC%|YvuVtGdkyhthiIr3Ms8uUj;bo2^*e_q0V}7qf zy65o7{**#|I;duku#>on==QY}*TIY7$~sxRba0Y*Izt^gcKe}^w}w1iRC6VtZnMgn zO>ve`HxJ73+p?6|VK_}(>Pp7xNoE+QF4yle3!W8Oo$(+xYy=m1upK2$vVO(q^bnUh z@a+iVaRS~WuWyDEY!vZKsMx5q6OKoX?&bpVP zt>W4|E!h}cc^yMleQ#!lZ|t&2u_eY1ZZV70;7XYF1fI<57;!lKl@Y zg&B|ht=>QJTz(w(e4J~H!0IH0cSf=J8t%>v+FLB~hUMS4vAOUg^Y=#~>4ibhJh*9Z z4j%8t91#e^O@b?9pG|hDK2Wm+4#2;cx2reVMcTw_-r6Qj0JYghntVgf?~k{>a(5<% zsdx$%eill3*z+Mr~h8X zkeYe9#ii3gWWZ)XuoYO3s({h~Z{BU&L%B2EBip_B`+Pb>dy`|_usdDFS5C3+wq=q3 zt$sp>gWiqTeK*hMwfXKH-+-D9V?&P>VtbMn!?u(`a=J?ASwDIwr&Ac+@JVMdd?tWk zi|g0A;D_;M_;dS@GTR{7ya}$>ylqdEZw(3gZ7DGjTU^T-#?LNu60wP2>6ZJAA8qQ%$tM8laQfU~H#JP>Y8 z!&b)0HgsbG5V9_oW%rPz+Q4k5v4(-hw|Lq;H(P^sZQy4{)5%XS@tHzJeMMh_9IIhx z?t$Ec+~|AXVL5`m>3e69n!$BlR~~D4$lV#V3^kz+2-gENM^2ER#t3GCi!=8-P@Ycc zdGRBpPW=8Z67w33Qg$`%X~KLEb~PQ%ggR1F*QiU#&M7Hr>4wonxDm0FJCreryvit$ zkpAeT!zwQt=hTD#>l6*+8*@vsVm?GaN+@TFC~ZCx0=%K-TQP9BfJ+dY-}Mvqz1_5` zrO2?v2}qPunqzlqoFJH-Z*0De+82Rd{c;UB!$;R5F}3s8N4}RBblwae^f+2JYixX% z8$9D-J)(CfWC6u62t2#2gCk;8_tRuSr9#5IYcBjwPi%MzThVv0oJ7941`MC|WPzL5 z)l(d0a`)~5Q%j`T2)LCXNMO=n+Ab$duP9(;yT;pzMsL9grJA12x_=F$z|vxNbTR2# z$(b4WNE(*j*wGQ2-l&?f3f>|oUJII{<}YhGP9w~aIuUsP*CT1!zLv`bEt&e=b1|@? zOXV;~!h@0C4+fan^t7?%dkdn=4+pFb7tD#i@dXZO-I4(kvw3G5u5;sRNQNDyYJ7gE zqQ>)wUVWxqf_x?j@UWReFUz5a*t|r5vVta`Lv}lVIRoi#IjX~~AmRq#JdWCP$LAk0 zy0XY)m#YSr1usW9dA+g*Bda5%z3tLFRiuOXpTo`I7xXyPJ4;=CkCheWmHz>PRHdLqw&H;){XB2xfE) z)inBrWT<)Sy7Q4>a#Zdza>O|c5*#eumb%yv(6Zry4Th08#SX+gg2Hjap+pzdmf^zE zE`y?o4G2K!N9Zu;{ncs$ZV}DKLh3`MXCA2}5dBiOyB-3MdJSI80b6MqsPi z#ANpRproiRi?K|t)nV1|vY2!?m(M+MMJ!^DswDKmSJ-|_PK){js4t@?BRIgis=mNj z0(@EFfFn8Z=ixAm;@?WO9QjqkTvzYUj~CnF$Dxu0)?D4%0BY%oJLA3zZeOMj$pi%> z$JF@!RbEU2f>Hs6{1`=f?sSa5<~$IIS0Z%nubAN_hC~>qo^rWQ0cSs|7WC+t9XpUs ziQiWYtiRHji??k*Zv4w!bjSWCkm};Nc3`0p;mj}BPYX0ssQ>(3?Le%`>ybc8jrN$s zFoDM6JhfEQ`!lU-<}ngok~4pBuZ&b;Om=F^`_-oP$rMGGSr`MmI{I>sC?sTaFKb_=lzR+^DGGEosL}f3%D7d$LKJ^A{O?=E5rZ(x&_4(IZC4o1P1#DUPFc?UK>G z|6N_q1;jT-f@;T^-?X@oStXj@wr(HX9xZ9zFRB?;nNxB#a8J3R`X3MIbJW65@fM>B zk3(5XGwe(!zzRl29%l(nQ1n^5N3qhdZdb~gvARMh!sQ625TkX;pwym>+jt3nN{ zELv&VkS=&l;xjgdaX}8nft#8WT#+lv&v?br{SUFM@9f+)NaHNY$7shXP?%uY@yB~d zS;nc2trMNXlv+LtWv2kb9}Q+W!N+58z^x%|IbK0iDEr? z+*7287fX)N6aKjkmSe&*1K`xJ`tY_SX3x1#55s?Xj6MZBUr}Y&`cu* zK53nPX>uWHXnlr!4ly56i#sH%MJr$aJo-$MXC$j7Jwd5@{?Ih@K!mynxZeYB$9o}T zNt9+SyoBq@#^DyvSc~vf>8QjNchZ|L*k3Dt}%1SvcNvB%DjZDzMe}TV%;mU|h-S>NGT4O3L|~u`m#AcV1XC~9iz-2L_5qaPL_in z(j-|NKM>}x_x;<4xIf zu^?hX^pDbr{qq>65liPKe_jU;c>Rz+N8&r5bqjgLXjUjACF|4!M@wFXb?sRSH8y7~ zR5FrmiI%L0mdL$K_Qno_7Cx(@-jaydrrl1U|NXs0l*y%3MCpjl zoh9flV*jfb)7D0ERVDKI$LLC`>j}46C0l`If@-Lt;px69r`Qtlsnn)sOtZHaob!s4 z7<~!6(MgQuU;Dk043qN0TF4nx0Ws@3Wm4y$8yUQghiWpmdTS4EC#^Q!QR74a`n1eo#kuvLbrU1_JF2 ztGKCzsbnMSqh}>X&T{qbW=x}9GbsOFn>Gbyeo=g{Nhu<&g zk+4yhK}8E|1V``~66@J7+O=!AeKTwO^1|i?mIXS_C*0dM(7Q{rD_3U+ugE{# z&#@ykG|;9eG(1RT8~RmeFB3DC#zo#sHHqsf%9Fplo6duF?AOs?mlNsO1J1Ekr^_|e zKMV8o;+7qfbd)O=NVZj<=ZGI+^l_I+>)iexh=<~MC&y+$olqEW)w^OSi9DnDQ^NkJ z=dHb(&O*Bos2g71PuCg)+zrtbb*B($8`2PUhsP6vtcQ)wHI`;_H=~Ii+zld9jfn?{ z)kDxF)GXU~27SvcySv*HQvEo(4P`IgXT}L>`r-4R31VdiZiL`t4LE6T&~3q^jP!Hn zi7Gt(APQM+)^Bd0T(YJ#3*D(cL(9C$ zQjAvx*L}EQAbY`@O-voN@01vBs4+!dsJ=;U>b9P}W=)6|7^O>DR$6Rq4>4A@uZ=08 z>h-pwuG}!-E+x(6+?52kO%?q7I6M93spggVn*J95vXfElRZN+`KoISoz_xW_vGvmg z_jIMWH^=hO{D?WT@>z>%ks0HhyX9<;GPA&a)%ZMrdT&_dO-}eR`rvfx)H0b*;P~*o zw~&3HbQT+wXz%?1i~WS@xx)KoXEHBg&+ zeb`J4?oHd;m}{&`m-bpUUWQT1_If$c=TO?jFw(KNy0^j>gBMv!!NlkQqBfaPt`u&m z>FBsB3!YN+GQa5bw9Peo*cT==i8n1Y__&rUS%)X<^S@f6j?_s%2(yLyT3Wba`&{`h za^YS=>Tkgwz}4)nU#>J4YJVzoGMY=LK9@DAbHPa_@`c>K=Dm;Mun#Fliru$n!cgZk zV{QPmM&NavkUHpkj`#0$$zMQiiIaK(t_eRn!|>8}^(yBz*+}hLuGdwxBQAi?*i#bA zm${1uW+`)b~MH;@G!A!sn&q zTDKv>-=pK)CUEiY8o_dRN+*Fi|4rt&@;xN8Sw&3&uqKS`KZgLU2_t(?Q~PIfbPn-G zN@4n;`R88Hu3P&l8bhc@J}$S-t2eGaek!*>p5`naA^A2-|3CW?oYmm$I`?0yf0vtr zGwyUyou?R5MgnLN)#Z%%VZvxf;=zN*z;|l#S3aHG00m%%!)IDm1rb*<^-p&)g#RIE z5E7Mxm?A3s%cHe2^@Nr}N72H=#1B3a=o;C_4+>j`7F++r_85K}K{%>ItHR4hRF0Nk zT-oF<$8I6g;9|TafmvHkBZgTE83`z8>fgBVQRkxNP54`)e3j+V`dV#vkB7y&*uIT< zWh()>$iksFELKb*P`~{{DIUm^rZ~YQ$x=k`$!?iUYey*uU(DW|M-{0b?Jl7wSmg-= z3ms5RZpc$Syy#9qOa3dxSsBFj0=)qKSHcnUNpu;hhXeU(n7Sp@j@%DL`a^W6Tpw&; zSllvsEWH-D=&66F(?x08I6Hb&Oq#$Kpc>04Pm!+xEBW(Z6Il1Eo6m)Sbm-4f8#o|Fv9nf`-RTjLei>Ryr!8#Ul9T!8lbO zR&R(WqEhdO_jx=-)KC;sr;aN5h0eyguqR@PW7chs7-_Pc5&-4Lp@Td)mnb3YW#06! zXVTR`u|J`bf07I4x(w`};hmrJ5<43`oDgu;#FG}mdVV5}5u$<;fUH>zpjphy?TcZT z8TF1oP=;^uKMaZA12`@T+&VGC;imnCK8Zpj1pu|EfF(&7W@N*Xs~_fSf2? z`A*`hA^0MUz*lp40l(2ruopBw`Uig-26SsSjkqM^+>cHOI?+fjBfso2)_l;hc4guU z0!@{g*SE^Cd*=9t1-BYMHwV^&(_bu>TtENA_}Kie`w!zo6VqQAr5-voZV6ht6%ZvL z==0dmz{6@E3d{21nIfPXjoRHgubmenqStxC_j#f;R;a<(nzvLdj(RMaoWV2mr5I(A zC=%!~-_3K|=Ex)XZ^{QgE(SMbX#8&HA|3wX`6uy+Sm~i$k?OPGGLL{n2TTGV3k?~b zg}yU&_`f+Ha}5BZ$N!b|G4lg(?%J64;kBUkWLWLrga-rSvW&0|PAn@K>kVMcai$S^ zJ((N&djA$3J6Kj^Vm9j#ae)jpOgBo+062T1U9CZYf6`0bZ zgmA0t&2oz?$G_MA1L-6E<$ouASbI$H8W-M{3#t53Gg}bzDrjU@h2s<4Vrfxr%;0T-s^)_7`b#(2DNn6DT^IR z5*n{Oub8|#8(rna%)@Kq&Z8E{L zB78m5 zAPd!2b7PgLm`a+9G6|glY?@R*G0Ppz^@D0*9kd6Qs^Fc?_IeX(0=q7SgIoB6)$rRo zt(c8Dv*p#3wP=f^zK+e(f-B+`)~1yr%2CY5hzrl_)HQopCbjc|@^QU$*8az%X0V5x z-alS-*REm*YyvtzfBQ^EB|?-~X8y5%S@O>e&H5<}pm$%1b)`kX4eT?Rt7}*^mDteeU9#I1_&L`T>+iEfltm zQJwem`dC*}@Sec;_t)Xc;>6L%!{>6WuJ4P-?c?Nf1Ig3b$>MfwbM$0N`c&wxzt-Fa zBSeRlaiY~y?Y9v0+rNS}&AAMZiN3>lpT8JDHXh8@+|MHr#O04ltgm_dV2Fp601;*B zyYjZqEqm!hXH~%QB?rT<(=C!nH7|PH-<+=5fZ)d_WsHr=S9aBhXZ_u^!Qr;Wvk8s0|mH_RX714KtbeKGA#beh8 zww2at(1%`JFO3O31UR0T$$fYIN0Qe@ms&9@_#%o1mHMGmrq=PLN&D^UTE==Zao{@O zQRSlix!9&$+GaBL%KdU)QzMDvbk25NR+!)BT(ZVfcczc5Q5w{0H%=Foy&?!YL&~Yq6nwq~N#~BC1p@4#S$j+BEg!no1g#se7o_ zK@gXx=-AVW(nplV$N3)VH6ufMQf)Ch!HoIFBl#G$taBSWWXYDpa{*-A*vubp*==OE ztcei&Qn^D0dI0WCq<=agI_SMHZe*epA1y>PcpYXMn!!&-AoyQk#_)g-cm_Xf|HHkZ zg*XCmZ;DGy0KL@zi+h8q#x^j9Q+Ede;NBd<0T~=d1GqO8p@=lLE1E-NH~{WVG8^Fk z{olAZuvVSs6D+gMk!|Dvlhj6Tg6JqcL3ot065xqDj_)W9ptLwj1IRONz6{&Ym>ppk<;A9etf2IPdh2xJL`Ach%h;b#+O;Rm3$`Sp952(j>~ZUZdd zDmB2mX#xm3`*NTI26~!y01H-!skSln6$1izX9LKNRO&ESsJGN$C%gfoG=_S>)s|iE zv?pGq|Db{1R)8u%OKZP0OxFHC^SkOWF~b-EN)|%-EeIQ6-O^T-M_N{rNSP%7 z$Cy(Z8x%3KgrZmDPbL>W4J#r|KI4>IvK0bEJQI+ln|T{`1%n*(!v|@1_Pl_{Wn6NS zanQZD_ZfBFx*CNd`W6*?3CxwNRnQSwaS$oCE`L0YCc+{Q+I7?5${>ay< z4^jrX%#U6e%y;oGchG&`>(xZjGe}VESx40GK|*%XCNIuR824L@tAR>{T2hJ6Be+M1D&IypkPxE)~mucvZWHY-i+PhPyY7I*g)h`*qxYg zB94G3E(l97@M2xsQ4L;E6g=~gl>k5XR1>0c8XkAyT7d=b=v)G$x=+*;r_A8Tx_YPa%27-nklZ0HgR0^dvP zNmhZ<1axc7&`V^RbneQ(a#3(YB=kamwLNl|2M-_Q7V1DzL~qPrN5N}9whoU0ChXu} zr22EFxzV5q7EGh)X0^){N;fRX*zCRsdMRmn;+#vgeaB zm>GH~Y8Jn=R+RKz|G)~;33RLzgv(Gsk^!A-WwQqSKg_*lP$c2Db_tC`UFcY|-U-jFE+kOP8l)nj) z;t+YdW*c?o&Jr55<<1uCED1b;+`)y8Sa86|2R8xs-_PpXx)n1f^<+L1AFN&whaG>K zLKM1Greul{T4AZ21C$JrQ8msFYb?X3@@dI%t7Yljd{PWud4r9Q3id<+aQKHR!rHf zlImAX8_I&D#bAO2^XQFiZKxdsnG1ISn^`=zDd2iZfcDr6!3?nedzoj$>RN@GupYIH zMxzUgnMN+Le`kuRA8Wf!r_JG3`lR|Q>k2u{SvrqiKsvR@yG9cC#ry`_nu*9<9y%^X zZ{y@gE*U|$GCTwt_(|>X_5Uy=7*>RfQF4ROgkCaNQ)TtYi^^*fwDhQRP*dHB%($Xd zM`387#7`?W6t`02KJ=wJZm9=i^p}Y)l!9Rem8Lxe zr7T#pa4`x1n)|ev%+gZ3wy}_X*9*%{MJfPbeEKIG>!!=(e0P}UxncN(Hx&EYK=zbi zt=NJIDHt=3*%+0ij10u$U899j`JqX^cXTe(H-Ei(^t-#19R3U>>ne5x+%Ia^aqE%w z$J^xHlYtBj--j4xbf3zLx4)e8i-__wXs>%y(JG1SS*N(DtZ5MhWR$_AO~YHr9{XoA zRWiYX+FDSj7Uoh+T3*BjJ7G``lM9(q!CQTT`vJ(iN;^^O=tl4Ymt>ZFF1t8!;U7~!ce`p?!bAyfnV&V_DwR8T30l~?I~3(R*JN(fpS~yL@9x=xC=0IP^<_}C`9`{;3Q;6a0^Ga zZnJ-5F2S@JOhHlUTP@*C!`ZrH;MyiI=NPPn2nNpE{o8g}-}g#WK8{$(#RaFs%7lfb z+P$_Gqc-re;d#{OLVJtMrcB{MoG^-oS=j{2Bz4)O#UBF2jUpyR$}`^!0t7(HETd}* z)8V9OFg8VnqZ9}d!(-WcuJOZBy(@FwMedAM8ufZ3V#L|zBF>u=r)UF}N;!|vrm>Nr z4nk)=ISBjAc&4E3zQ7BO{+hDQw$a`mCCivKrmL5Q`45y zOkasEtyq1`i{mk5Jh%{S9BG0g(#4cF7Y@*DzObwNTS>Nni`U&_Cn27K0y7Uv{iyO* zWR(RW3@wYPDFZe1Fxy(IJ{@wsbw8k(;d@Me=(}`K@HiYX+Vjh<#f+SPHxmgjk!G_= zfU2ee`Aj^D)8VhQZSzDt0Z)@j-5817qqd$Q$Y0Y@Mk(I9|5(zJeL7Oq=7=#_*1l*j zmHqnTVN(X~*Creja(9i%Braj^a^jiPcRVFV2WmwE!h+i7qezT$FxcS@?GYh>IDaQV zQ{R#K!%%SjDtMTwmJs9^Y{lX$+!tyG!o-yVDk$Ta?oixsm#od$P?1A|Uw+K!69!S! z2<`@B?LL?i>!X3bBGDI~KsIatIU-X}>L5TJd!>zgJm)O9jS##UXa7xL z&xnt{uE7ahVvDd-3NoYbA|5#EY44658O?Vb`v+XdFuXYm8$N!8gh`mu4FNY+VF(LF zerhZj-yWM;IHfe-SAbs7Ka_z6XVCF;Ly6ZL>kAX$+Z*xcVjJ)z1q~yn94=gVnQ>9p z!UnD=z=Mahp_+?Y)KdiDP&Zlw8fozIm4;Vy1Db2}9&4Mepqi`%{3krwV8%eX8t#%W zNdQ;`gVg7?mGup@*PUaPRxzSeP0WW`p=rqyHVTq*#O&m}LhuggacHDisKpC-uzJyV znGH18A%~zN+Eg0$6hX-2SM4pduLqj`PeY~v4Ao1+sXYQhK03kfq7y{h2n^j>V23@qoUJXV$wM!>^ia?{!uzHWh@0lto{ zU2`}4Uj)K3v`;AzJT-ri2{V=7BOCWQjXcHOG8Yq?rhai4{z zrr%UXDiVyCJS6Aqs9;*!7}Rc?3?(gjUS{fEq2WNcqOWPd%*V;fRK1DIT+fWQKkQJv z|2(%I4|MM_0*cKgkH>wBF7|C=XvZY-Zi-v72U?lX>^U)UqX+TQuZg4NjFg1@K=8I| zc@9@B+FLK02Id(drW2qTkqzGb8Pn~_)vpz6 zw4pR=PdA#3tGPqM!ZVeUI2Gcy4cZljPVuDc6VGaAe3_T=)I*UFr+y20MJbY5Kf%W= z52wh1B3*VlpM@VRTZc~i4#%l<53g|JuyfD*`}oxI z0{`i(QA=vU#jW)l>};3Ek7l|+CKbM-26RA^M}AL-wcEKQ&}5Vj+C{+Jb8N%S2({-b z&~R!GsQ&N@F|d<lWp%u|fXE#7cv4p--4HlyG< z;lr^Kc}wAAwgsekuwd0s23huUVh!$>d%~A{{H)bFJ%maK!F6#zcQlCmt+fkg7drTr zq;-$8V>(U+9kcNc$>Lp<=6Kk9p$>mJViypH9pBmaId$RoCw7hqCM}}-&_-2xdOe^q6kK4HUV!~nJe2G`Jj8ubDgLo;Z23r!M6;!{; zu8VeMvX%1M>9&x?+ScljIOxq>@sVAqziU(Ge`l1^VXt}RebXbjesi0D?c&xAZ)|Y2 zK4yRI{8D?jcH%^^0DZBnVaRBFsgw>)`?TF5T*up|vykChl@|RXHUu)#?hp6U!G2v; zfOcYe5)^1+4PpPBB;7{;22BhBC8-lIEk-|}In z9=tNq0ke(s`;aco#DhJ%1?NWBv>oy_Ya4#JDYv@8v zzox@*17D*{{Phm&wH|tQsG~i}xI1UWl-|59V$U8<704quUmhWzq%E)C={t$EvJD@>G;cD14vQ z*v^IYw@p|!WB%wQRB{M2p4jjlEUn{ImGMgkw6(n^13U^+v~1xLz`1op(4XoX+vV@< zhj}S@lfRSrv4iGOq(y+kUZXSuF&%jV~L`zR15x0 zeXMTxGDb9RnRWCDaN$N3sCkD3{&;Q%d=1CE{R}qa0_;5sms7JlpCL`J;=b9lF#)=) zQC+D4HG?@_g}AXUzwdoXaG2Y+A-KCg*>N*zwbwz}@a#Yrf=)CXRH{Kh?&M+_J9JkR z1-~Z$1`@ZZSwP~}EH8?C0PguBlbAy|A4uGSqS$zTy&n=tOYn?H`bHnzyojh*g?yx- zJUY@Fsz$xwI|2)3ZRK%S$eE}4nW|oE|08h$J}P;PSOP4XFS}!)y8d@ax}v+jPX{pu zPsJW9@Xl3)bbsMbwU^xxH5cBOzDQ!n=%JW9XjFC-8baW0G@Yq*+aKKbrd5>GtU2u%pCT~4`*#DZ?m?lBWbzN>IkuBoqAkhReYf(f;* zJHDG?qhyx?4`BQC_YwiWEgb{{Dx_jjj4r@%tuY}uJu7KdP_JsVz*;+QGsai8T|N|D zHVaCxW^=5shSMq68AhqO&Q*DZFIOp65a8sk>uCW6t%(Bz&3g#a4XH>e@M)qKTzMN% zINhNP!a?Lyer{$$4>L50%M4%e3qvp6)JkiOla~3o>ardx+*}%C8wpIpHlH;Hdz_mz zbfVgJ@e7Byu%JT|-=4qxlk!SJA7!S(*}JW*$|CqYZ{9di zlxOOy2G)+BnYNWO`BQkSPdsw6-G!)0%hF4CQ@F`@cXt(kQq9>>g_7T5J653j%&ZrS zauSeFJJRg!bYhj?v8YlfPE`&p?=0R@*{HPfNndh%zx`2cGceKy#M+GKte1vFN0^ML zf7(ZC`~wzd=lA{#3$q&0w8NTXXI5DFTQF#}oMO@zItqmaYRkpPXQg+%-mKf6PZqu| z#)JQ{WwugzVq!U?6EbzLvqb;K0tW{V8W7KIo=99ZUgdBVd6BSN0q~K$(IHhT*b4n9 ztuKdJEbakeWJ5E3!InMPLZcyRN<3^NeVeU3wirh5_a}%ys`?Qm&UQYHGtd?RVC|}-=Z4oH4L^w^upFPO9@etg=vjZ!;ToK8A@84)<9w&f5 znj}(lmw%F`ty6-tH50kl1PUeNosf&7-rZaVtnjwM-hzpfBuGieG>z@4hXMuTJkC|1 zUm-x}{8uc4&1HWIL5OvC!y3a1$_8;8O_9Cb|418T;;D)maA*Tf*f&bk@a^A%4!UV6|FG ziN(%Ya_7;x0HRtd_BOYAUzw1=d2?~D!Y0AH2w*Ky*5icO69khMCU=ArLnF_hsyW+2X)$j1C=PX?6MMHt`x@vL$eh|PI(7YyKZ=G-j> zfgeJ1?%-4IEYeILY%B@l@-uMCvT`ZsCQz1Ms>-Hp;-YL(lIiqhBXF~$pC~_L{O2^( zn8ZaQl;)IyyZm2U*wp&B>p!a{Y$mVJ|Gh2`ZlbMtLU zy`lxl68r}}NtN?FXcpASS2O8ZX^4pTHxz4*hAA_OU}T>4~W+BzMIZOk<4ZqwD{@OR{*{N>ZqOzVywwFG89 zZ}tQI>qGV?mWnfNge|2gukpmN{3aqLQI2OzJY4gGHkC1#(xl6LOLI`-{rd~>M3BX9 zJ<*QAfCdcu?ut^r&O$y4rAmMQFLZY4M#AqlSmSmL3&h*PNdIoIGLFC*89<#X-NC7*dPPUMF0z{*Nu`@7t>y z_>kL|qGx};LdAjFo&E;Dc-SfcfYcWZ;b%u0aF)1_3yb4MY|mQ8odxk+qnV+&XzxvI zqpHwlJu&eRSa0Srt5jw^*?!>fI&^`e9BL5SwZfo0t`gdHA)`d4_$U6cx&n-}aS9ai z-nV|69)GWD2S0SKfd_($7>hQZe?K+3U|_yXpEXOn42 zP>B^u1D#G68;iF9)|Q1p4{dnKfsFlV4*ea6mLur={sM0F*G8E*-Q7{x-1#+A9 z&dF)(^cF$;KVlV1bR^_1s2gNww?DgbYui?WAuMk9%bU&9DBHO?^HD=1OP1-$c1giy zBRS`ZuX1=R3|?y}y)sfH+tg|kLN#4Q>ZTyJ4J8X0D?Buh{=luf`U z1bXmeHjMm{aB=iAODJG#Q<6-xz_Q;~>KqJp`I1dA+%8#XEI1^AlSjVJJ*o73zkK%K z;w>6r!sIJPO&Sc!;|Ut~Jr7?Zg=6d6U<0N9*cI_1=j@Dv^!z7BC#g0ixz(IBUOh?E zzwNI3A3`OX^PPVRmHclc>AUS5n4QPbluvbOx9bp^{rJ{5If@aL#lOGb%IH9i+Kc^f z2Qz*rS`AxDVWxP0>jXhIeBr&E9##<{|DjJZWB&Qy>60LSj3ESslk4+<=7o$WO^E}3 z&`1gnC+79zG5K!(Rgjbu8hp+~jxU-hWoCt>7Yukn^u^U7OBI#0e24!{C!TXB8^_S! zd30{PW8k9+Qx2mRC~S)$gn9wI83?N0uO<`v^@Otculgj`rXA9P{2)rlAl_zd$_n`b z_gUj3g!(R2)Pf52H#X_Lp5@Y^sxL1@Cm&y(yaOJ*cb6rgs(Pf`;Z9i*`;Q&f5k%dc z5M9@a^XuCPVHE4+XL2wWVsqq3{=w3@KOl+5Dy3iNG6_7=Q0z|$ zWHA1pF*=hZN7cl>p_rro?kn)QhzsX5?)AM6YrFJvSKIU=$~f_xMHcc|A}NR_Ogb2k z?RZ6|nDY(|r2GAPLN!okbK!dIW=L+|p6o0aYa zPmll)A&0XLM0XmA3am=0>a!MGVieTgxxhrP)>>V4Ip_G6y!*5TJhj_Iw1V+Lk39Pb zYM^XYMyg&rS+VXe)lbgn=$0^$GjtqFZI%J87Iujo%CNY%+%z>bmnTktE=AfB<|qS& zau|mhI($}-O>hw_<&U-cLt?GT;SXY#R!0$!>V7hPgUuiil--o$(8ySs~H9A>($jUm`UHh9f$ zL-A1ol4cLH?Mna!T7x!|(P*=GMT?1k?#hz(i;=CSD@vbh0`t>B^wW#mDu=wYX-Bhc z-d43|m&TjR;gPPe1fR0`uChFpAFIxqs{z)t?IWfS%Aq?_ZF~^tOa^Y45Z_iUrNbJi zz)jTWz<8ts^M&w=dK4?7Z$?a!a5(h7OzKye#)-<|q5l4lb!1NyDn&(&SB*F&Y$tR*m*l6e1{YJh~5`N}Y9=Ehc6O@s5|&G^{kSOAqM0f9@t;6A^9Qlwux?`|vC!X2abjUiS2@W>*I~+I&2q zvZVknwB_L1eetRB+%b4Orm>-CTOSvAeF(*K8()824;cM><67;49y9$GdWL({cBpg^ z#!djttav;$S1l^>7f{In2GEs|Nl912=@yi9^F66LpAaWrn!FU~0vUTT#YHjqE*y*U z2!YEI9^o^({B_*{oSH>uBgVQ39W|Bk`a`gOTFCY~8&8@hqP8xek_zixgAO^?-JNIc zm&2j+$(RQa;Vr6xHMj!pqY5VrR{G|JJXk7=hg8O3Em+=T8mJnG>GrSwJIIY!+4@@TCX_cmv5&a^w(zH;~i?c(ZBrlkl%s7{q1`#_W+R>#;P2DSb-< z9`*oLxHkvT?gqjIGph&`hunMpPSva7E>W>~Db1rsv*(H#WvqYZ<0ivncTXw~u z`sf3+9Kg3C;PbOK@cHpeHLwOpA6?9$Of}FB-KM6`euMG zX46d#JXR}gT4t*@AnSTY{ZHfBUo91F^I+@acB$9sEQPLE?*WmHKhLZV&RfDBkdoX` z?934teJ#q~+p+L<203jKXli6SK#djrI@`XyAwdZl)-+xM<~fc82WF~jIU8LkW3{P8 zm%Jpd>*nrNzB=5(i`KGLOHGWQVXmF|aELs<&LnklrV6K$P2=gYb>1!A`S-H)6&i)D z$T4Kq(U}Jnj00X(9~N}8do)V#vf^~H$TsfCRhlatAeiOUnHLTo!7-$TLuHmy7Y~k( zK+{?3j8gMl)LJc3ri@rLE^KyP4BMvV7_|yXL-d` z_qkW?w&yV$G;VULU}>CnNTm@ParJq%Z$=ohbl?SCB_2c>3XURkszw#5>;Zyn!wQ4O z)qyNRjj=@j{kf|9bYWyee4W3!_;3R(2_&zIqojCffr8a~pkNhA2JTy?UeRI9I5S>j zs!;6AKLuLX2<|>#`0n0+zu+BI~RuJe}!(d=sC0Krnb zUUZeAx!Sj2lvwE?^3d)`rho)`v%X^jy;;~5z5*ekvVT;EW8`4Cau3?O}!qQFNhfj0qB_Z6b`wxP)Ns=hV?{Tl9mXt;Y&SGU!n&z z9)S!8BiPXj34(W#Ytl1GiHdD74e6Pt4{rF>IxZs@{!Zxj$R!8yh8%d1LWAZ2vk0>y z2W0G<#*u=H8_<_UX+-dEzAQ@)30q=d#dZQ^Ev~%WGmJj?QUztRjN(HOmiiPao1v39 zV~6R2hA6f_j}R_sV8m2;8JyiXkh#s$Pq>6TOW!3s#Tb=m2-#!+W(L{vU>UsV{+y8s z6WJTVI`HkxIPbjC7t0J4x25{jQ?PFKKmAxTm8r*3G#@GJKvu&OpD_OXi`CY2t}-ra zeXh8}oa<8)qY&Sn%rqcZddGK36YPMaxk|gRSegtpruORf4fb1F19$2=vVEX6nKzaa5JS zcz>pmXZXv~0Q-wSQqOzEt~at=EtI;N@lvXyadEN3!h?P(X>t0)Nh$72H@(+jK5G3^ zzXH-plaLOlpHxC^R zoAzRJ7+D`KI;CpH7bxi}Qvvkd}Ig2o?$evh7iB2EQy9eD&Sq?_63Tt^xD@dko zF?At{JTrxa%hC%*^4B%z+*IK2 zbs9mA#3^jeLP3%PjrOmJd~1ph959l1(MFddW$oLt+4=JDQz{soR$6f4!+z?3?6&*q zLP30VxLD;RQpmP2u;a@r->gY@Lid9^+F`v3H{6k6LorB{PM@(Z1+u!&Zz= zY&7QssP3CaJL);__fUQ3{%gNt`5)M?jGTiCLH}>;S0uc;(Z@jh6$Q|K1-Iq~v|p9f z{nLJ>`}hz0mE6DEuMkN6?r^*|!0pDM9q7K3X+TFK8B6QCj7c5z za-bReC44-Rulfg{nE_&`BnVk4m2seo$VJng->`mUo%!=jW)^)TgZ8ME#}(xurRm?~ zZ_Y137{rs-JaOjaBBghNm2d!t^axrZ1}F-T6v9nsariYZPhaElhpyEqGGe#~K=ke9 za_i){HiF;5Ef4PsV}|^Qd_+VJqMzn6{%FQ#JxC-SBp=VPFBX_Ij)I~8ULg88AYpRi zB=sA6cuy`iM8Uz+UC|}+AnE%&XOf>xs^XzY34W3_9N(~f2e*Sv@<{^IyoaatB|I8)LuF{Xod2&?Z^(aSH2DaS^ z2Y*DvUA25TpARsOh`P^DTCowQ77J9qGizq?KR$edoA5~=VMH8i5D0%0b}XoU?t9ru!)9(Rs*Q<-d2 zSh8T>4`*y(t1V@J=lss-xMlv7uN--;u4zbrY@>_=S^cWlBgohzxT~D|TAQ8dJ|Y@4 z-VF-#&ckL$M}iVK!C4E}@(r=)l-v{?=^N#lKN_caRAG=tF&d_89e5K``gnKCOUG7^ zJ)4J}y5D*tE`a4_kw7!`kRzJ zEq)R7H7(%2*h-7;vq~KQRezqs*@+_4gAa<(DGg9;0?Y$Qa+*km6Ij%sB!9(K+HFrV zet>h2FOgz_pM1@wgkNUx#W}S}XiiVv-DR9(|E;g{Sbm@AI2Mnv1zkW%zUKa%HwFIF zjZ0PREt*g*M%fb$s%O|T3oS=ia5NEk5X{Mp00V|j11r6YxPq% zy7n8hrU}tgF|f(+wWz5_6drP$s&3Z!%}cQK0AoD8<2h2v#GyJ9oH5SX<&iP&L7cg5 z3xf*A`40;9m6?@W!O?!Kn{B2_)D0Jc^I&x~$a9=rxRQuAEoXWWqGh>WJ&y9L9Z;{c2{EVR0gTh{yd0Vzzl2d?W&;tC zxI~W_WuvZ@#RFd9%xRi+%Dabuohf{0mG%^mG`D(?G_HYjun}m9k+n+3LS~Fxw`=2(b zLz3ZQaZ(HI1o}9B%Sb*ws%g~J^vo`4Rk?%u?Dq8*k#Lk+*45pFu#QBZ@z@wN(OFU2tQtoQb-4zN z3#BoFzS_ z)$B_Qa4EjNQylqAwbjy0&fWU;sO5`U%f|70>mwM2hCf6lsWvmemlSNUvO+)xZ#yLB zL=@eWtHxOqxMEn)4JN#Gwv4DF6|F)?!n{ml5kEMIcqCw%q(~|}092iRRpT@m1gEKmLua$j7^8uepNdrz&uQEJJzZ7H;p6i*3trDT>ehlC zy5Uj9mh5(djkkC3N=|AF6&NLYsI-xBv%kC9$cxd5qvBk6I7uPKWkPbf zH+|g;=Cid`*DxH5*4cR*8s$%_&Vg1_>_iqVZZ0gPhV->+a99V%Rc^Y9Pab_UFS->W zGrY^_hUpAzpPFyDX4Wz8A{FK(F@tS7^R$%Z_c~oJu{%4xSFU9pa%GlYZD|d_+28l0 z`-5R&bvD1AJGITYKBYgpO>M+5AEz7q07y~Qgx%Ru6Qxn|+*>m>9mZm*#YaJhmsz#6 zPQ`j+>j}fzbM@>2KkhT44}?3RM6~aTaai!~obbi4TBcw-spzzgu13sY7ZMU6{PMAK zZmMmwj7;1<>@@o0c|+l0pMtbz-ZQ$&brJYVZhTVKBpN@b>!{~_?Pb+)d5`X`umtv%f-E+%@Y$%e5xY?z1u-b&lTR&4WDQEENQ_C z(W}oLITOWia>WSx>Ntyo=ky0u$@g$YEn=B;Rnd8LMDi>yl3twfWI|@MTks38;zqP+ zK75zZ(%Od;qlp$MY7seV!}%Wt@)bk#`7$y?$qX9+souD()CV=v!~7*ia|KIEqG@2z_c2Ei(Ywvj?Nf=d#achxaPc&ngF23G(x@r!3IyPhjnLvqN?9v+L>f(Z>z{{`1w> zqvTU3XUsPAGYqj;W?!hRb?%A&qqE>d2f;viu$YUI6NfT-d_w2kn7EcPLczly5z zR&$LdsZf<-&Ma3%FfMkEsj(8GU5rQy2aWpsUFd-w1hLruMtzCeM4iuK3-;IoE7fvd zte4k4aEB=V072eux`-K3W9}52^d<>Z3QQ+7JMW%(bG({OyIN7eS-C4E3Yn*p=3BO# zaUod2yLH@2f&2_B^X{2YTMD?6lo~>Rcj$5bZYX9H(Hj4k^g6a|Ynux<&D((uDpS#| z{x(eDOxIpio-WH-o_sOGS4IDHEUuy3p-~@VzT!+hoHn1K;{s4xu&n-=4coQhmO-)y zUCo5Dn)FcZ`fZV}s8tzz`j92s8#y>hpeWCFkro!ndA=jYI`_?7Th~2(B?4x2J5@^! zzPFNJ73XCPO>_a$Pt8*>N)ms(;6xR#8BL#{Rwb*GrsMmn!}EE2^4X#K+GX>(_RDSm@iH=Qv7&2gbdS9I`1(Oz zJ+WLDw~Zz&@pQE3shfV3O1x>`3{am?DT4nLc;Z(Yy__E3OdBYHxbmdo%FTOTd+~*fy{xxEekCqKpbrV$(1n&6wjENP$A6 zA}zhUD8^mC3AkzX4xiIx*6@IlEFIldM4KG=PVV_;Nt4M~KvkOQ^+~Yl^SD-zzRm{H zzbq?}D3toS-M+q{Ke_ofeyUyZV&n*8eZN|wHP}!{>tvE!W70@t*UA9)zH;P@*-DH_ z{9|ry18eENYrOrX)Ccta^0w>4N#pZ%J?!YS1GBm6WfRK?Qt1=n{w<=b@ZIWTt>DdS zu)5+^iJ8Yk>76alar%vo0GHfm@kD%FhgT2|syh`5(sSxF!r^I{;!voN?>StgOF({_II5X$GhK!JP8x z4Hp5mi8w56eV}wgx0ts=Lh-=_odl z6w|r|smIya9?WmZsD{)3&Yk}v;05NT6KJn}6=5p0iKZ{8MjC?5Egg9%(yqqG@AGl>vT<41H&Px=g<4?BDyEF^V z35!YUB%o6a_fMLoAt2Umeu`iVsYW9h*r8%sQ`53EI1(T+DhuW;Fy!+q46OM2O)=f> z&619rywj8uo?Nw1WW8WfW*xYdj5;P~+#K(rn@RxEPJL(WI(yffp>aLMe}#vB(K_&* zdG%H-Es#Ljj7yD{oIQwGQyeSI5>mv!|Gn*BCXohN;!xFaP)F;8H%BpO*|RE7&c?=k zzV%z$)09|v?Ac<#z)iBQ>yyC<%{_)l*h#i$j7)+8he;qu05TU2 zT7Hea4N(~g1m~5e&+m+xj&zNNQP0BorY}Fq&seVemXlT5 zsYtj!1-Lmyu!lkI;lSdLvsipv(a%gd?x^*jZYK>69-w~6xV(dD`Uh%$y-^yI?U{Y@ zH4giUywnMq$6ljtq6g_anTt$eD-p;sz06lM3n2JINQM^TF+xzegH{*nd^w@dHA7X= z%oJp~9@ml7K*7}#z;@J!K8Js?()mZ zwK&+x8tcZK+)r(|{o8aJ9lM@=&|c|-98dgA6bxGpY?nCbqt-&s@b&41Frk}ie%XRj z1(Is7R>Q6`bJ3~>tp<6(&1qU%OR=gI5y(8A!1ugNPK0g0pd@b6VOnV|Ke|I3SDi|f zQ+m8@x;uW=LXD_b_&%w3er!p(W->NgKG=3BGME(v%WMJ{4I z8n#(K`W@O+o*)cVXpE@=ChV`)rWWD?{9b3343wwWijqF+rRtJ?`Z|)wyf@)`FK-xzAbEVItwLTo$H9og!T- zYh84m-Oj(OYk3s-(_8q^V?Z}0;xG65Gz8g{;`fj&{V7}`N=Z{x+27^44g!y~8(%n?GWI(S{2U;Ei`$BGq5;>>Z z?nE>!WXK(szrs7SM<%OBhG1r>=xVk#(gL2}D|E{99~;Z0LcqblY{tiKp;KeLGRUd_ z=k54*lSSxui`JP|KGZy_+H9@@HL87BJL?eI6iLwz4yrO?vh%JU;`2YY2SQ!eM(-BJqg_2_7sIp5=e`3137I170#{(1Q> z^T|krliO2ZyD){D2a;Y9Lx4z%f`)1Q0!8)f<4FOIC3hBpUB=q3_OiTZ-04W~U;f7S$ z=tnFxmWoQ+9)Vk2Xe{qxyCXXrMiRxu48y56VA}NAOtOm$L>XU!r}%4 zCMY*LqZ15~Y@Nspo*f?5?p@B%A&*=8oo@L=A z-t_vtfCZ%Yo94(&M+$5(M`%D0j@B?exh6B!+~WmX&Z4Sz{_HP1*4bBqLA8nFPR)K)C3OOMEFrnBf^&eei{D+j=g19beQ=Vbta{{FYaQ!##_zb)x4B zMn6%=v&uM)S+o;EI>eldae|vy!-#HiOweNSTFjby%(hEHkL{#%&InYHrq}o$AZTbE zA-%wy%%&CaPy;XC6ng-~9Y|a9DI|_q?Bmqi!v!O2nMKeob$^dIzHJb$HVxJh z;k?6K!~s%;&Gu$luGXPZTRatLgsPs!V&eMtM{>`iI~uHC(kS1_gI;!V1#g`!i9onz zZa0AZ+}azL6KFALR&Q32WpquqB#>Nz!%*ecRBDBq&pu0nIK&%0OII}FaYhnsnV0zF zohX%UO+aG4VXQPM4_NdJsC31PBbErphSvd!MK{PR8#sh+!t|Xpx8rJ9LHAxV-B8#j z&@<2v6Xym~QI=;RKawOjxb~Ferd~%W9!AWMG4&pSRSc*Ms~G*rV{5Mb+B6iD`ZDhK zj_%JU8c|7mG3tsTrCM331hx;)W#BjSTn74KJZCT!c`gh2k$BGF+LPx@y*+u(2Bs*| zeFLd5;|-S#vW6=J1R5#qY5?8QiX~Bi`f&YL0D220(yH4q=*;p3!^ANBFZ1_iE%~Mt z|9cvdb%G<;+J?b#q1m=1@D=q)o+Eo|2J|k(YTEB@7?0;T-t;bdgKZcLblqP1Nf^Vu zi=Kc5CIhTQx_&G_8Zf}|b7ga5)n0*0Z|pvYxdO*$EPRY$hbsY- zN|;vnEOO;7_$*m(iiE&!1&w!CEQrac7S&O#TN-)BMWkC?f|W-Vm!^zMxfDG`6 z#clKp_Nc2l9c(IHsgLxCum~B^Cy}n;qM}{JEO@C;1nD9U3wRu18pJ3{z?t*wuMt`O zCPgy87-TkDZOY_klEVUrgfSm*XG7e?qruuDTj^FC2y=EFSRr$*fVpJwOyh!mSscXF z(r=WI_CgwvH^7QD+$D=NGFJ-34inFt!%kYhzu&Chvv@8|y;7fFN)&QN2ncF3t^_?} zz2~5>H%=t?trMbFDp{==RS|rQ*Lk?xi9I^8$N!6O@c3kQF+L~mWO_ElLqevL)hS-h z&PFTZp19MMGaj9sjAnSb8adMu!7iDdPtKO(nS17(J7eecNZ%Gu1 zWekirQ9|39<}OY%D*#9mGwxtdw!{qVKQ#;gAVi((B8*>J{pnf>O}mUo^_x~^O3eh8d*sddd`nq z7)p+&kHb0^xH8envgkV;W;`yS(26zG7HpSs_Un>5f)iHOj%F(LSCp&XbT$Or~`I^5j+0a)F*2OWdfS1;S0-_%wElzIV!UXA5gKo7A zxmbJDZ022v_3)B-Rn31ZKeV)5U8~p9m13FB-pZ%7UFl2|de8vwSXw0>C-K0=#Ag8~ zaRZi0Ee*`rl#d<(W4(t@e$l<6%NOg{cCR2+eLRpfS-VR=JPc1n;F=xL2%(dFMz1|l3L0FJVKtBgBiAQ2muAYLn(Mw=a0YaT41D8f=&Q+-OrWL)K#@Fihre+_dGlWGs zt^)kvMYzHtUQ&<7loTd?54&#f;@98$JvU;Z_yuC%D&3`qs0P8Wd85U4vM^Z^LtLM- z7=QZkMojB`6oeqhCHjicR5<+lTW&ozJD{pu)uQ}C(WQnN2U)QqkP~@*C!&Euz5>@$ zBCk69uy~;;;o0>a_W0|UcKJE8qGu?TjSIMJMxl%0RJn}GmR+qzvUl;T{Mftb1ulzu zuipda>s|Cly}y3z_c+0kvmxA!i{36oFW)cp{x9zvLf%QOnO$JkvG z>iq~7AkO@p`-GD?2^IIc0k6<_)m(jbld2rq@FEyL5x3XS#g0bkI~J) zF3^XYEA-+R%`X>=k1sFKcYpqg>}%o?%!v)*uYdjZ9lA;jz(a!VtBCm*IyBI>^;p3B z((ow7*h4C%Y2fzvBEj$6?RD3zWl(6iin~SabjIlO%{~q)umm*@rV<%Lc{@l0?kQ!drT>H2w5;G!F-28IPf9ObCttJ zVG-tfA5lMKQH+DQW@hS$j8NLT7_%U@bAH zjtnk*Yi^-UE2yn>b?hnoMXX_I4kIO1#Q^y@rVd1zU4hCBnZDA|PWwFzO^gi=LlU?W zGMsr+C-V&!lPn~yDL-b`J1`?wkP#_s5NP^R{(H_zD6}$ty#7%Y zBsGU^%SQoU-d>%Akv#mdt5|2= z3C#{_OBGp`(+h&!gr)%sBeo>GFQ%sWkHn5`+sFEL_6V+1_oX)p2WX@L^fQ_x&G~5PGMQoy0;qQ?!Zjw5PXo!IEOJTIeujhw zJjP!0u@`kbBrT%DL!u<;L&B;68emHFg_=f#wa}QT56J)&9$-0%*`q7s?3`k()L*wH zy*MqY2UqZ6Vc$+2yQ|Z*^=Fp|fk6UiSFvxa3fW0i<%V$bo=uobIFNRN^v!^dC?=&6 zvmdVCE_BMNG+}2JvW-at+15!u)HjYjjPFz1cIY71JbLrjV9WT*Vh&wJ0O&<0hW1}m!AuJ;) z4G+kcSdY%h@Wh==Cqv?%IwN;FSrK=1<}TgQ==5}XIwQ_bfzPBGIjBI zGIXZHF`k~CoU{>?8J>F<-I=azv9R;StCoopP@8D$J-^xswS`3}B0k#^qzb{9P^DND z!0c}X78+LqnK~98Mw;ZLvMtan1JfR+T}ZgC_7nI;s$3BDzj|Sjbma_~oAtyLCF^_U z3N_qQ2j?^KVvimu7C;z_q(u7QRES&SB<~P;m<4l~2-dN7CN*Q#bkCvLW45b$mIU4n zcL`t1#9ulSd@@^(ozeLTo-U^jIdNvEtL4xc56@SVv*BcRG9HnoI~mQ~)fk_;v$N%N ze6l=urf18^up3o+`seo0+9rRt@WV93j$u0HWJLzEicqPeRv&yW(prw+=5?TLsbaii z1q-HkO|bhhqA~e7aHQk&GA(Ib^63duc_P4;28lEnn3|zrnn_K@XD%_;PkN8Sa;H)+ z%5)F6s6Rn*VZTidBO=K#*rg6ZG{u z(CU!km4~TcWq!U{fxG`62N0ngk%UYAQ=d+BM9qFKDJOWj^moy`oU16a>{Sr7Vv$2i zo(;J$z&9ON7ebtafDULs3gaM<=i0y$(mOqowwG%V)_OCi2jKD6rJ|`T0-O94o?d zVA#sY58W7*t=F`uQexF%m9V4>uF6%XaLEGc*;aX4LBW2rg55U32-a;Mxw`=S)RFRy zQwB%aU~8GHJ@rfla9msedbPOi=b}$dWfE05y44V7A#vuDcmtbr9w!nQ9C$^!HfC!k zfy{j5qURaZ$1o)&&>-==J_=Y4226gT@_=|JaUVGwX58piEvWDQWLY;MKPab`!-D^p z1WxMjyUmHjTU+rUg~WS2Sz6$jrH~szo&ZnptuRxX#{|R89yI1Cf|I+|6qaMG!mXo& ztIDDrikG6RE`&Z1dSw2~RbTylJ@2D%>+})v!+7_SMt$W7>!-1&eRGCM42jyyuBOw+ zq27F`(<6RVpWzaKG@RKtXPFzJ{`*MJY@=jHl~*%=C(Bws4$F3DW))5QQT4ezLZ`)E zI|W}_xB}ByYLL4yhUBsuuE;?9w_u2Dd%ogG*b;z%T6<7RvX>l^Dm(ISDXVWeTGpL4PRtJRG|B|=S7C#Z((|5$ob;4B!eqISqy`GnJJU- z=#eyoghzi%?LhTF-QuL0^%(O}V`|hC^7y_uqf47~FVj+GL#wtR^6+fsD^QMUby)87 z^b~?CQ#IH`R02#t>zr2DTJT8ceP&ba&)yx`^)7lk3q-Hq3uWdNe`l>DmV^U;XPK{m z{Z>%S6sk!CQzMJs~iBqC@nh5!<*sJtXQmcU*H*AZ6;+{$oP4*((6D%GQ9`eNeOAMrnU z%t2ZaKV&kKo9eeJ+*Ko}2kILdMj-W@9mFk;RHn1P#oSfoe*2SG6Z$O=e3aB`tKZZ^eHSigxefWOmlqe_cW9aTz4lyXgHKTr(EGquj@_v+4DFQ4(C{>cNW-oJ8tx zxB~&s>SGVerDxsq;lr9Zq^Z+fF*gl}V(itWYy?&Fuj~ZXarvrVdDk`t+7vOO@~z~L znaAo1Z<930SE*@2#^ZHF`2Q~@l+{vio|b5ga!w(A#X#p2X=9*Wrj-q`b_HOEh1+FN zRfpOYvFs6TmsV{@TZO7306LdlYc!pW+zDRJPKPVUnU2oK6X$%qnoNey`D8pi8?R=w zlL;A4Mue=~k>iZUqwxg0%h7na8am|!Z6&HqlwCv_%7NNY$4U&f^p(Sb1 z`)2Tmt&7)D_Evv~@>RT=hhyvA{R&eS#0!-szVs?m74t>;22>X{Vh~-&?gONu&H;H9 zy4Hm5@_WCwq;s$s?UI}({Ghdi23CEd}b-GR!R$kaR zE#7Ye-&d4)u2$lB>hUV44$O6ztt0AWSR--KtsEP9Jr#uMP_CeFnCEg0OD9WE;<^B} zsvX7PlHSeLT=X9|p(W6LPz-Y02P{_JTeDMN8XLpFbv<-VTui$#r-Agi+-bm;*fT}g zi9gep)_20!<$VTBy%09IBu^E`KVZCGOP7I`JmY zHJ}2@SLI8M^pUwT+f$FmlX;*Ojd*l^gp~Hp`lm_M-=KYF0UfA&=JWcOG|wD{ee_OM zu?=AvNm=6@+tV~7@aS|zhG(whx+8by49}OV)%odZZx z&L*Stv)Kyc@py7F8{>+j9R-54x*08TE#GRd4pRATu9+uK5@-H?K?7H3rxCDhC;irL zs^{(7ESf5K3fBX`Hc_j-HJbF7Wp6-7=nnv!!aLwJ#6Cj@xx#BmyoPU0#PI~G)tx6W zpVb~|nGhS%!0{5DB?2$mmZ&W?SBqopIA-@VA}(!G#VBt!%c1^Pw8$gESrR#=w2qLW zl=m+F>^Wi5yXZ}a!=c~n_oRESchNihiT3{L_f#}~rsODJ?qv9m_WsIwPBcy(%Foe2 zW<=#RN4q7d##F2`K+B1%%mR>_nI^xO-byZYvq=sYGZeBg@ua*_jt? ztf;5fP@QbEFskzpZ(b_L*@t(Ri~s0djB_J1S2-9ya1x<6FVS;R;TVx%Yi)6abaowY zmqSwR?}Mn2c|^C=BWv;_cd!R+u6$|zUN!-!V4rd((S9$~^<7g|`xd>_r>%*o3Hd+LQs-(%jCX?fhFJvq>id|a${%;arNo#w?Nn_P(oD;D{3$t%qa z3G~ouv5DibX<7jELz!3Rk!k=LFqh10l1=3TVstqflBH$ETZY{i*u#MX*U7tZARfx; zAy9|zADX1nXK;P=#B|w-tdoNlvUy zbyVL37BdHk&j=4;oXf;)0;(=!qlG*SomByDMcLcF{C^>S++59XVYqKUyqw?KNLu>h zg|hiWd>`X$)V$jc}U+yoE!C`WhdKcowOZPj znV=zgt2T2{lms&6sDhNc`bI*4VYb&1cF3GW6hbFh;AZb48Qz*5&!&amoOaH9v~WlV zVzKuab}eJ!4?^Zz+tJ{e$)tAtTZty0aE{lcE@Jr$6J(7VNUBXP{ndzKo?1>TZpGF5 z9hQe8(vlBNUIY-~M!OWM+MSMB$UL^*Eka=wUzvnSW%BfGe04Prxsp%!9dw!OHx1t6 z0N+Y;IOz@bIIaxf-g|1@-2C7C#8TJ1eDM^91Unl zg1a3X_C4~T4%_%h5moPe6maaZ^@pc(|OBlhtf|etzCcncM|A zy7WABP1l>4qicEni;FB+Zf~N5TtR!$JYr%XkN)xWd|QvoB{|65Bt6g`Q`>hR0mpDS z9L}aw_B(p`ocv=rI+=~f|3Je>z}@;JJjT&Kh7ZP7Y~0`E zu`KIoLtS!lgph?|<{XJPN6%8yB}769rD z;)rf{w!?W3%$)CgG5Hh^;O~fd-}iXD^9bJ%68F&Hhohrs&mi}&1>!>d`Rv&&|NqOxj6wjW8~_I1&2#_& literal 0 HcmV?d00001 diff --git a/stable/typecho/7.0.17/ix_values.yaml b/stable/typecho/7.0.18/ix_values.yaml similarity index 100% rename from stable/typecho/7.0.17/ix_values.yaml rename to stable/typecho/7.0.18/ix_values.yaml diff --git a/stable/typecho/7.0.17/questions.yaml b/stable/typecho/7.0.18/questions.yaml similarity index 100% rename from stable/typecho/7.0.17/questions.yaml rename to stable/typecho/7.0.18/questions.yaml diff --git a/stable/typecho/7.0.18/templates/common.yaml b/stable/typecho/7.0.18/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/typecho/7.0.18/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/typecho/7.0.18/values.yaml b/stable/typecho/7.0.18/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/unpackerr/8.0.8/CHANGELOG.md b/stable/unpackerr/8.0.8/CHANGELOG.md deleted file mode 100644 index 5ce4d58290b..00000000000 --- a/stable/unpackerr/8.0.8/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [unpackerr-8.0.8](https://github.com/truecharts/charts/compare/unpackerr-8.0.7...unpackerr-8.0.8) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/unpackerr to v0.11.1 - - - - -## [unpackerr-8.0.7](https://github.com/truecharts/charts/compare/unpackerr-8.0.6...unpackerr-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [unpackerr-8.0.6](https://github.com/truecharts/charts/compare/unpackerr-8.0.5...unpackerr-8.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [unpackerr-8.0.5](https://github.com/truecharts/charts/compare/unpackerr-8.0.4...unpackerr-8.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [unpackerr-8.0.4](https://github.com/truecharts/charts/compare/unpackerr-8.0.3...unpackerr-8.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [unpackerr-8.0.3](https://github.com/truecharts/charts/compare/unpackerr-8.0.2...unpackerr-8.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) - - - - -## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) - - - - -## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) - - - - -## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) - - - - -## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) - - - - -## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) - - - - -## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) - - - - -## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) - - - diff --git a/stable/unpackerr/8.0.8/Chart.yaml b/stable/unpackerr/8.0.8/Chart.yaml deleted file mode 100644 index a8d283cbe53..00000000000 --- a/stable/unpackerr/8.0.8/Chart.yaml +++ /dev/null @@ -1,33 +0,0 @@ -apiVersion: v2 -appVersion: "0.11.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: This application runs as a daemon on your download host. It checks for completed downloads and extracts them so Radarr, Lidarr, Sonarr, and Readarr may import them -home: https://truecharts.org/charts/stable/unpackerr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/unpackerr.png -keywords: - - unpackerr - - sonarr - - radarr - - lidarr - - readarr -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: unpackerr -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/unpackerr - - https://github.com/davidnewhall/unpackerr - - https://hub.docker.com/r/golift/unpackerr -type: application -version: 8.0.8 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/unpackerr/8.0.8/app-changelog.md b/stable/unpackerr/8.0.8/app-changelog.md deleted file mode 100644 index cef4570ef30..00000000000 --- a/stable/unpackerr/8.0.8/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [unpackerr-8.0.8](https://github.com/truecharts/charts/compare/unpackerr-8.0.7...unpackerr-8.0.8) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/unpackerr to v0.11.1 - - \ No newline at end of file diff --git a/stable/unpackerr/8.0.9/CHANGELOG.md b/stable/unpackerr/8.0.9/CHANGELOG.md new file mode 100644 index 00000000000..ba59dd2418d --- /dev/null +++ b/stable/unpackerr/8.0.9/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [unpackerr-8.0.9](https://github.com/truecharts/charts/compare/unpackerr-8.0.8...unpackerr-8.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [unpackerr-8.0.8](https://github.com/truecharts/charts/compare/unpackerr-8.0.7...unpackerr-8.0.8) (2023-01-19) + +### Chore + +- update container image tccr.io/truecharts/unpackerr to v0.11.1 + + + + +## [unpackerr-8.0.7](https://github.com/truecharts/charts/compare/unpackerr-8.0.6...unpackerr-8.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [unpackerr-8.0.6](https://github.com/truecharts/charts/compare/unpackerr-8.0.5...unpackerr-8.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [unpackerr-8.0.5](https://github.com/truecharts/charts/compare/unpackerr-8.0.4...unpackerr-8.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [unpackerr-8.0.4](https://github.com/truecharts/charts/compare/unpackerr-8.0.3...unpackerr-8.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [unpackerr-8.0.3](https://github.com/truecharts/charts/compare/unpackerr-8.0.2...unpackerr-8.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) + + + + +## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) + + + + +## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) + + + + +## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) + + + + +## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) + + + + +## [unpackerr-8.0.2](https://github.com/truecharts/charts/compare/unpackerr-8.0.1...unpackerr-8.0.2) (2022-11-30) + + + + diff --git a/stable/unpackerr/8.0.9/Chart.yaml b/stable/unpackerr/8.0.9/Chart.yaml new file mode 100644 index 00000000000..d0ab49c9e55 --- /dev/null +++ b/stable/unpackerr/8.0.9/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "0.11.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: This application runs as a daemon on your download host. It checks for completed downloads and extracts them so Radarr, Lidarr, Sonarr, and Readarr may import them +home: https://truecharts.org/charts/stable/unpackerr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/unpackerr.png +keywords: + - unpackerr + - sonarr + - radarr + - lidarr + - readarr +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: unpackerr +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/unpackerr + - https://hub.docker.com/golift/unpackerr + - https://github.com/davidnewhall/unpackerr +type: application +version: 8.0.9 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/unpackerr/8.0.9/README.md b/stable/unpackerr/8.0.9/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/unpackerr/8.0.9/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/unpackerr/8.0.9/app-changelog.md b/stable/unpackerr/8.0.9/app-changelog.md new file mode 100644 index 00000000000..595d30012c1 --- /dev/null +++ b/stable/unpackerr/8.0.9/app-changelog.md @@ -0,0 +1,9 @@ + + +## [unpackerr-8.0.9](https://github.com/truecharts/charts/compare/unpackerr-8.0.8...unpackerr-8.0.9) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/unpackerr/8.0.8/app-readme.md b/stable/unpackerr/8.0.9/app-readme.md similarity index 100% rename from stable/unpackerr/8.0.8/app-readme.md rename to stable/unpackerr/8.0.9/app-readme.md diff --git a/stable/unpackerr/8.0.9/charts/common-11.1.2.tgz b/stable/unpackerr/8.0.9/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: watchyourlan +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/watchyourlan + - https://hub.docker.com/aceberg/watchyourlan + - https://github.com/aceberg/WatchYourLAN +version: 3.1.10 +annotations: + truecharts.org/catagories: | + - network + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/watchyourlan/3.1.10/README.md b/stable/watchyourlan/3.1.10/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/watchyourlan/3.1.10/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/watchyourlan/3.1.10/app-changelog.md b/stable/watchyourlan/3.1.10/app-changelog.md new file mode 100644 index 00000000000..6908c452413 --- /dev/null +++ b/stable/watchyourlan/3.1.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [watchyourlan-3.1.10](https://github.com/truecharts/charts/compare/watchyourlan-3.1.9...watchyourlan-3.1.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/watchyourlan/3.1.9/app-readme.md b/stable/watchyourlan/3.1.10/app-readme.md similarity index 100% rename from stable/watchyourlan/3.1.9/app-readme.md rename to stable/watchyourlan/3.1.10/app-readme.md diff --git a/stable/watchyourlan/3.1.10/charts/common-11.1.2.tgz b/stable/watchyourlan/3.1.10/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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�NT 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ z?9Xau9-Q)Iov#a-w`4N7Mr*)uhyzHo!{~bj;`=;*RRz~ne43W>#5IX0rLWa=$vJ+_ zV13A81H7V@tRUu5hQ+DaEpjKFX3)mFArog$x|^8|vH_fEG^lA|FTD`PPy)sOaaOu~V-WY%U@J4LwsuzSn$46O;(1JPq{zv6J z&Mly6y{1F?LyA|r%rGjm7123T={o_A(#{uBwUnq-haYA?q?oYs`7Ukz?MJ)%TsqN9 zn5w}=Obw$p#qw3T^2%0Iov!50i{I79ofkWiPdMAz+mXb#^J3?4=U;#9?JxwXw?Zsm zm&{xUUcR4Y_FuM_3$NMxO9?F{m^726%rXrk77%is#F;&UM1Ya7qCR1WCvi%>e#9Ci z-gK|NEWMT6IS&%X5q*s*<2wK^q(0|;Zu|gJ9+2CpQuQ~?S3jwmO|9hfZ;6RI*76jy z(KTxqHuh6NLrz7SDn3w9osRFDNlH?JuPUu3R<(`mLA^7oD7J^OeS2My!MzDkFo zw0(1(PbwR$eCND?9@@NLeqbo|h{6M8Ji9Ye+t1J}=3kz6;$gTk|>>#e+siVwJ8Jeeq37*Pb%oafOErr;v?7Ry+gLQ(K5 z(cdy4a~Mn)Ne~F8kY9W>$0Uk4rs?ZVKTkSchK5~AE6lSyP0_zkOm6qi? zdBeK$q0%DL3&?-XP=Gv6Y90sjla!p4wkNNZK0+2miXdBqSU&hr*Yh-nP1=jNuI~XH z#)NVh@s^#Ld1M%M2`Uo9G9^ueI-#i8Rhtk(9DSd`nU+zVicf~yZ*FR8zL}<3T%ml= zmwA#mb&_x*4&)}%KT9|X#JAGKDDKRPKv?p*{GRd(lDhf)rGq3@$jYr75Kw2|Yy1iM z@38L&NN{)7a5c`w0+Pw;Fv|He2u0hpX>%7&`i-1s>aZ4@h!*aJ-U{MqGKUO%%DM1u zo`tq(kebrdXHVrX;tVTd7^PfQEKmqJ_N15DxfGdYq_1MNi+L|Y6KezG7)8EpLFuKoMLAM%eX>yTS=f@E^|1wV)rT6xdPy&{%M$>xH0#gwF; z%N4#>=~}D!Dc3QHPL7(I>S2tz_4|-oWy8aeO6~R+Au5<+1%edsQV&;-Xow?4poIE} zn%|J%h;bO`pS`5dLy9Vydk9UUJsGenk^{(V>Roitz9D)1f5%xODA zZyP;q+LjLwrcbBGnQ{5_`02^<{O|yJPfm~K&lac0aPA-b3wU&Ldi4C6cY6BtnYTdm z=jiE^C(pgpCr77G7EcaNPmiBHS$K<613uXWGV}P=u1?`j+`c>&K&|U@7Tm%$+rX{n zcU)hZDr|?f$r_qE-0Wmyc_eS)+3Gwwc;X+Q93LS6sdwm~950Z6_{^XChlfv}&Yzwl zZ+^P)j-Q?$9v;uVlSBXb#D_=62j0oS5j=VJFAdYw!vqy4XGHw6CZ^6=-xFVm;X(RvzT_`9xT9Dk-B=VRN(Yy^xM?@Jh38=z zOg9#s`P${78Jo6yr5lIcp0=AP;C6j)^k>-kbMF{FIh`MQhtHqDllh564>FH204WPyNLaeCnS*o1Yv#nLqbVp3RRB?6AtVf5nDo+Wh6p{Uk(7 zH=X=tMXBf1L!}Md?BR1A*G>Oz)&_d2M2vT&c7xfuM9}|@Vvc@^Jf-+ND{AH{`Qins zdJ!;H7ZP=0An6X3S2HEagv3Yr?Wf42Fkh#k7ge~2>@_(3|G8~v)q20cYND`WnJH`{ z`e(bXbD?*J5?9ZvL)68u=XteekR2F#c{QcH-Ud2-WOyDx95!7)-z=oM{}x8lLz$w4 zDfu&do#=^{dzGM^Qp=Tn7sIQlib}^`140WzJ+z_OPzQtjmig7i($7Iam)-s*E(ei% z*Cua5nWcwj_vMxjTeTTtse;^j%e+d`TEFpHA)UtGXzOpg1+=@ zZy@iCE#pObP#f<$fPgV6E_n^TF#K1Iq@F*2{v*zx6+yKyWRdfaY%poG-h4!j9ILHY z1xu;mnpAaZU#dd!wpG1WNMXNONNbxQgvrM};IAVXVo&imhKYQ_CQZvMwW*gHNX7N! zzh2Ki?p3@`^TvoaD7w=nEJI=>M0_QUa{)sNn0)XGDq}3SOd=Ke$On&0UGK^*sendF z5bS}7RA9)>FGL>6-Vxse-iqXE^rjKCPk%CR+mIhprItsc|4AaR(D!|;u*8qklm@X3 zyvLIHL@H*njE$gPfERfy@-59cf-`7O&_cH#>zTsW0%GWH{KpVVa(SrG2KfQVS9z|>0bVZNi0cf%WlRqgmGqkXpn8$R^)f2jm?U^ySYvwA6W|A(l z4PhuMYoUq~w6B67%Hz4mm6$330&43+DMemtHGWO|6ZPf9b`h8}DS1;cmL4c`-1@-o zC&IX7swz4H!AjIr;YD&ENP+LZfU+Qge1%JL`?ycMYeXkPC?qV$z6 ze*vjCtrTO3l%@XNTq%@woQ7P88?lj zOBrLAEWpQXJRh48^3jbIH^`?&;WNy_wPDn@2tK+QViC$cv?#W|%=_U+Ok2q1zNw^% zD`r;78dH=gII+aM6NdN&q9IOW__p}{NNcc^Oyg2zBH zhmuE1!_t~@6z-PwW^(OPPhb!!*#2GTUr*@M`-DZ1Ogc{4<}dEsf&Dy?qey3-_j zAUi%qc3YRe_Y3d=pKZs)KQo32X^7d8g|e)+?-&521njMSY>tgq?qN4dAZG0$&OZKg zXTg3Hg7(gfC#TQ$vVWb+(BsNUYUjnyFVQ6-{2gW?wzYGvq*qT}Blb`2Z+~L0ia1DQfGp=`0)X;i47m)7J(YfeU>u6URrN-B;2CSRAU8$>P zSG#&I4&HV}Q**aXT{SpBSE6ejo}3=~$8di7^kCt6Cx_3Ej=kqci{s-1@A>i3!Ly^q z>FJYWbZ~r#(853Tyu+izqhsjL504HO2i|6YwhgRuFFT5f+}XN!PUp&cmDL4a?nF_% zn&sk5mQe`Oh@+{yX6nALp0u=)g@qZ6Lv}4sXSMUC%V&PDmwpfM4U!q$#Enqpa+ATs zlX#+V$n0kFAJeRQ8)k2_@3MXqtybYoGwXiCRaUYWtgiSOk;G0p*ZUy;CP z8LTW=LdvddP@Be4cP`nvI=>L}$8y&aIeoI4jBOtgo@#G%OZ~>$h*oHWB zNW)TR4t9e)iw>>mvlwanB-}5B7Tpd^qSZMYj7IBV8;5cyRGKo^wkevWpA8h6LK&7m zQ=l8vnRRAGo2)W`1}OJRmszI+Q)PLk2BXO;(1t+_PLDFAyA^+rOdFay-0Wmi;yjw36cK?BpB|!vXTInAhyJN|@O-{lJU@Bv9Y6KZ$>QYc zlhgTggbogmj~37TXD6q}htHp#E+9NQI(~9`1RI`q)DX(VO*)6Ibem~)KpNlXk_74{ zap~Vb;Kbad4JI{W^JOA3-Nxkt) zH4m%xo*cZxJO8R^PO?5TSAGWeRYX+Q^0Zr_nqL*$E})x%tMUV&xMt?@#WGX!#x&=_ z;Wz;?iIYI_o3wr&gd#m8jOg7)?y7WRl8iSQe?FOYP&j@KLmc3SI5R>}#W7f9-{saSO#AA2Oa2b| z&Be{hp7`%+YbWa_L2V`jRm?c_t~aC<9OvoM^L|S8_rQgGbMi8QLHa`)z9;`>6PICw z_EbO*{9LSc%~ZA~t9>ym2Uo(;g3wSMc^f-J0qwdiR-DJWZ6Tp|C0-RrN&_+?KDuZL zHdS$m$?7SWtc+K@CD8u?1~BquI(c6{h?n)UB}gCL_YG2+$C4HBg5D1C<&GPT*Ne%U!)r0V*&7^ zd}NrVp-PnqW%|n4Q|cgBoYf`GLe2dBF_wVkBFNxLseC1-$WIwgCY=?}*K__SRTynl zQMH#gGr$rjH}JvDJ{)%pt0b!G5F^a6Yclwj8;7+A`^XQWT)C9jtwY&-lbK%A-dt2X zCdyp0d{BpRfF29xI!~GF?p}r0?tvWMUcqxqXq;vDJFP~d;WAil-#IT!zU$jTr-AHS zT_c6ybh|=g&C9`4Q-FmumECL`x@gIscD3Q*S%s}`pVKTUFO$9yeinH@jnTdbpaOzf z#7q)O@= z1wk(JbV;FyE)d1ib%I2GITy*n$K2wnJLvP*&ZUnN7~_3$*armqll+Fi9}|CabGZLq z9!YKYj}4qc#28$nHjm{yMrd-VL8&#k^t~ZPg7i3T$cmfEcThcwC~Ec%UL+yPjCKXo z)H=;cOaii8&th>YKFgxZgZmcxT%bkZXM9^CSEhYq z>FMGbTAVBn=O<53=0`_I^JfQ7o}z>2hjVx^KS56xr$^79KR05gtRRohf&g6N<%%i<7D zIeq%K!;|ADN2kXJ$43W$J2*UgdVKUZa4&ndoHPd&zV zzer=o@ir@W?}jj@B7 zx0cTg*Ykigg&BE%_YKqQa5mQ?K|HxChzA_ckYcfK^Pk|cokk={x{e-`ey{ut^t3OY#!f?a((P<|~-8$M*Z3f-jj zxI(!b0+J)L%8~OrfDNT!zUHA+iKb{j|9v=o^p31>mP6-+wg+|VGaidVTT%>1B@7Sh z0ssqOU}jF>G_;uol*~e=Hv>?nA7GT2saA*?{n&A)_rD0ZzfIUf0VR}!$O}Uq+=U=< ztPuTLw34czghEV2SiVi!ARfp4aND|!@JbmnTUJIo-gE$KVwd+yIC;ntC}_N511;D2ar+mW|7%^NTO9*foXRM3hl-9+wA58~~EZWrQqX1Cog zStgPOUv&PQdQ0v64HjJD0&}z5c?OAxAMoCJ%|AiF<1q2r(H_KYf+`6_yIBC=cS3Yx zrwn9DmQs1;l}<*5Yl9NX33KPSncCO*qLIchM9ykp9knY^AS|S>+sKKb7q03JN-H+w zH)iwl^z=*+XH;0j*8O3HXhayfhC{gBGO^+A)4y`fzd0~aN%1ARzboKEKyWy?d7XI} z__eS(^>yM^AUd*-S7L{FO868}>g;qF|E9Vs7!u5P`Rp?hItuWC@MIOgf+QwVd>;kl zz4Dcm6eW53j7CV*dq#Z$qB80{2dCOq%z$braZ{s{3rvJ9+nvm$Z zZ*=kWG;pK$b>O!7_zOLPrbN*Q;E?qd8QGwl_f;w!$n{ltFpR)0dN3kqIZ()*wN|sS zGy)j2#x+PneXnKl;_#PU6AuB#;C4Rl$>}-yX6+}8MbMIv_=A5ce##YT6m4tp>Lm+z#<(9t7+f3mKE6=3wppw|e4 zFEIArcF}ePhfraHU`rFgvq({kxG8F(V%ET5Np+H<$f2dcfuV@hq-tVUElv1KIyJZpeYXgaF(o`PXajIQ49I;W zK!G@gaL`Ydqg{5;!FPZH%=@!e9T*}D>psqg{*WSR{2ux~s)7iGjrJg=d@gv2HESyA zm?0El9Sg(nc;k^KW*l#*`x&Q=azbNd3Srq?7OT!}xcM;`HW>23u_99hFHr40w4XJhIQ!K&*xDX|nVE@~ZP`Xm{Byxi5SOGW@WC z5&^fvyIv@`3*6D50v{fL4-*?a5A}0wD4eH>1G9Y$wIT@ZCOPm8_6D;~3jT^Y|Gtx5 zLZG1Gr57@(cM>qj-1M2o+5!w2DEOv~C&vO0Q3RBR3X$2DlO_-Nt8gsD2mhNc8bzG! z4iA1vvbQ@C2Hk&sJTDAv8P%Dh0*EugDeuyBK8XN%>;o!NT;CPS>Su;;!2!4d@=pRh zKDOpP@L32$ygWi_EOW3<`(Sqc2E07oKM#&xmw&$3-p?=*?~u0|KN-;t$iK$3qT)dStty0y=x-LcCQKkYW9*u$;DLDWlKPJTDB9l zFXE7EO+}lh_{N&=1xC~V4bBjZO-vh+#$LB@S2b-iyzj*>kXO}VeW{Wgg_SIyf!gf_}t=H9~}glMB;F6GuTKJfX0*9Vw`>3*VrM*Y}q zk|ba->97g)zd4%e#A049BnY0!73x%KJCw==>*4P1c{|!Z%D#xE7@D_okFMx(Oxft; z-_|K`)6iuS%G-;Q7k+PSGfi$nG5`?18sn2LSPXpgXGV^c%eTgl_-N#G8VX1N@3i88 zzJ%ZCs3-o|UF8Z~n8SowzDm#HHeKjIWta!MIg)LdTc7E{_pyn>_dU1Pgd1Vjz!P%k z@AZo%xMMyvHL6H%>BV6lQ58FaFS@xcJ`bGv8g1*|Q7?VeDkzc%8G33xd?8Bq=YKtG z7p$Djt7C9bFbhRPj3y~AF&TOk{1!Yj{TXPPFcR+e^4)xY-n8%#V}u-e4xPd7BbjI>*zpqi;g_0yD1GXjR7o$?yrFlial{Xc%)|t z5UPaa8*g*Pp3didmf()MyF7MiodfS*|BehymQjkz&EJc>jy!I%FEIgI9&Vu~x*5vD zLIz7|e{@ph_iZM}d8S54rRKTUb?$PVJ5^hho7WY%D8*pq{`%`YJmXkyyGyWJbD0qU zCBvU_n@g~ZRH-qXDA-_0+(6&2=gQPh!Gghn=h9YKVlbDdy27u>(&SaT%dZ~3&oBCU zV($D=s|XQR+xD>17tNUu0S~>2pWkb3OS%18qKrf6=j~4>orxN`oCqsnT}k>*yZa3$ z?s*G(=Qod{Zl>1%265dKQYd>lS3exQYu3XbVm?Hctj?EK7U{tDOo&6OcDoLpFrn@( zNAO5`oORDNv(-s43phb4AMdMPD3T^GatcTXJUMAG--?zlig$T5bjnnS*E z#PRfe&Uen=*6N^c$=}-=x#_u*ntw^+xVa9x?U@sBv+SHe& zHt^KzapR}0Oyx!bQVlO>8{bM`Pr|aT@O80Agr>Qr7Z2a4Z%=}>{W^htErV~V`^J)Q z6~lr0I;(-jOjmxu6tCa+l83*1PfEEHwJqL#1Hg%y${5$NDQL2Lult?rR@BA_^tVEcX~@cYoYR*v|2?MicMz;>-s@*I?W z=-yckWbM0py4MgA`p``S;OP^FM2Y2xYemVt$Y%?NUe{;K8s0B_SX+aXY*+c~N?w!Y z?_nAMD@&t%8y>GGMD@C$Zh0K7_J^t#(6(qUF-jYVYr#|(bd#`hHz6AD(m4(El;q_1 zQRJjXp_G@{{OjlVd(%Y0XVe}?WXEY+r0TY(CgWKB9Lm$`*T>oHUuFM6;vPMx+6;uN zJ?}S;Bvbyi6^H|*6>lT_+E|?&wR-F=(EUPLrBzG)+&%QCJG=L($Y{NeRo9cqsPCSL zY5(_A``(fVpL310c=Z4V{+boshW_yzVyhU(BFSIvViG8xMEt~E>^u!R*JNT(bFToo3&f$xGcAK+1s@`-cM2#J)DD1L{bahLno4`lnQ#d`okt=0Y z`AW$(e*8MTKQJ3*6IfJd&GyMYD8Et9qn*1hFFa9JXF&%r`2S{}PMhr$GCB=N;k0iFDBG%N3o(Pq^P`ZRoY|C7!vs1j^Atj zP<3c~udNyMjQi~_&CCiha1#r&QCarb-qLNLLzleOGWC_k%@zp_U(y1X+)J`uY)u3F z&;}(@R&4Soi2A|nIgy~(3<+;bnFudplactoJu$`%mw406D=yrW11$lc3H4u1u=O_X zx-?-kd~Xs9E0v@e(J|oOSlOJn{heaGX>Kv_R3#Q6nv1B|wR1(nQSdVYu~g@ld&?s@ zyOEzh+1M=gPp~uZ`4sb34&tZ}t6gv1>?)&m^q&Q)QU6Xqj~^hvAL#7i0^i`eQnU?# zsCb;>VZN#>f_8R`wkv|)Jvy0(5;{8g6T&VRalc9#I@7)4?e|C=x}m0R?L-TAI$lT~ zk?Ft{Y@0~z<@1vx82K@2gBQ}JvWkk4JJky!M}3Z7%l7XEWDoV51(lj7l0p-iQ35r2 z-Xk+ZQC2Ymop`$H?*mc^2`>)!3d`3>h8H&Bit+(E--51sx%%ijQtA1oTK+3{?U=r4 z%PVtq55LJDQ5ab}khaz-Sl==xyF3x^8`e~_PLG!Hxd`ITpWyw_gL&D(>*0+MS2-9FPcqEdhPxQ>G& zBA83913HU%7$S@sBc%5%C7#Nm!cYqoUUhb0J}v%6WlZ1Fda#6FpS=sYL1{x^C=3w} zewxBG;>Cf;PT{SRP$}64XCQLpqTX+I1!e0Z-yP17mcdK!w$Xrpg(&or+j4@3FT;y4 z!)u{?4nCu4-hGG9a;`K#csu?_=!A*nVI=D7yhJ}tejst$oFK}@{k&qjm~^uDc|6a& zzzadKF1gZ`eXUq)j%31tmeWN;<`#e%b_iTGrW6kr^$~-RO^zJi2ooSE#td$q_r*#H zr&aSlPJ!HV67L$5Q_ve~k9)BQ?7jRwYm?xT_Os$}@n8!=Y5R7uWA*P1K9VCUUdz7k!zw8^cf`R?4#Twq#{?|EEMR~b{T|{SOepy>uIO)Yo>U&b+PfD zU>PyWE58U;xaO`C31;&xDI(O^{Hx=U#)4y8@2ijMv)0_|F?cxpYPUnjj2l<&$x-*K zu$smJsdaDdvzDzd=ehCr)2AY^KS2GfV}OaiHoFz2gG-fE73f$VM%l_hX@209n z@p)x-$GAbU!-BCgbK7GUy43z;%Sesqq|cX5lBtrAUzaC?hJ|LH?%ze`|BgWH%9-|crxCkzw47Y+S}O_xpBb`vDAe=b!#Qjt0-SqxSL?shef#%m(a%-}6|q`t zOw*rZQGYoaB}!-tq@S^(amUbPghDES!pVt1SQTf>=kNJs0{0jSm_ikLIA}3=(i$bv zTw7V(qOt~@7^s9b{fBj=(YDEB{*Wo(`N@%VU;M8EJFmVn54|sDzPNV2uAjDwb-TU> zJ=Z)vpT7hrS}QHW_pV6Nt$eZMrEA^u%TCqc0VEPeBPVR;%!tYWQYeg(#*`Tf&DaR6IV~P6t4@r~T24D;4}1*n zmHI9l6~L?mRt=FRFRb;SD0?3ljdd2 zV6-bqVh0-p(ft6~N6y1QThJgUZN*L^NibMrGs_sSVTFS>Twk-?4H>*lnN9M!t{WTp z@_s$#Yy2Y-6g_X}Oy_6)yMKdzAr7+1`KLf?p9u{(S+p{~3o$hWz8&RI_AT||iUUFn zp~$Y}+cau_ok_L)peTvKOwpA2C3?g57Dn@nHtAW(Y6zex0=eKOgFdcKc8zH6#Oto( zgDNHF9E9E!)ai#TbYm+-K0MnFS&3fhFR(p!N1&)OPNztE;<6qvZb#6P{#GN1tL@vdHpSocA8HDt< zd+8eq^(lzk6PgbSOsI6Tj5^u2bgh6aa$<@Lp~cbuOgL9JlV0uU(N^Ds$|D={6Le;7 zCYT4f@|+;$B_DJEtiW!3Q}0opweEMl;PSEb!V=fUBVGg72#{m%1NWXh@4t8o_-|e2a%Lj*QpBHvk*Y=<+B_r6 z?+msWpS&}W;6i3`L5~tlYKb6ywo0M{hXiI;F@MaIEu177VBq$Jk;Q%VZ2>Vc_JabZ zf*ph;->XY#y7uUr;0J($>SpUHVn~zf!aY6n;>U`A$-rvg`zGA|(-f1tnXwkY-Y_v@ zsve|qbLIS03NUnzf8Vu6C*37K3@^SZXs0@HpFVS@ZL{;2A5SSR=@F>nE^YW=ZN20F z+Bz>U3?0ZYmqAo9g7Lixl@7n)_JwP}mEN<9Kiq@*9hJfipl(*09Wk#6?`W0g{Oxo{ z2m=;FYauL6J_an#V#Rztr7T{h`d$`3mAXfX zyod-ziOl+I91{!yU9HKBUso1f9u^L*4qXB2sYa4b_&=IOx06re6jcV(hJ7TfP6&IH zq5h)p6lpAVg@`s^jZ&W4iT#dY0G5SMT6_1tAP}!`s*CQdv$Ai8O(3R3_`2Ld`6`BUIOb5I2iQrW%*>5 z#w5GV3F?5rM)^6WEATV-x%J=~?v}vgl8b?hyoJOsEl}ZXc_*o|rXApW0<~4@m*?+i zcu-+77va^1;QZ|nZs48-PA1!o0m69mD@_Q5HXU_LfYdjjo!FhWNB=ar$7=YoC{ENP zPvYCUvsVz^mMkm7XzTpr*x3#LFUK~2a=-vXWFSSJFbRCUer4#w2A~~&w!;GcA#A+2 zaQK$45us_*a0A( zr95^Rpn#xNY;;hwO{8A?&6Xn^0rwCiWjH%SFR;>ejUZus=b?&(R4^-{FIX@eIYG&B zfluJdJ9Y85xaw(1>5daGE}=psXu*}b^v{@}M`da9<~dP9LIS=iYNau(3A#z(GWh;# z_zMekV}&DJuN3MLkqw;H;2z{>)(FK~#$QivVK#&2f-Ag>2nsG{0-;v8e#}iDhk4h; z{@{w|TQ_cz(Zxw|$>9eeF63va@x17;F$uEYpy&7S{$VrT@84avN2lCEBt8XP^slXg ze5_dWU*w(EVt%ipM*8tYcTjTt!aA4EA8w#%2W@Z!asWzzeg6wzYx!nBc#I&G#xv1_ z#00>TFa~!$1;FIoZ>){tWdrxTe8eOsFb+u+As~H6M;B4OQx8aQd?p4^(DHmH3A$D1 z&!4GMLCt&@C@3hts$N@y1wE-}RVNBLdwt7MX5(KSqAAODBp3!2r9)hK0F87B)Jth* zrvx??#kbD`X(x6fD5pJ=C;v{a@5mApqSr5L=S0N9r$~vBPVB;?qBu`mq9pNeqF+w1 z#esfqTa9@^M=QDLeEDT)vgb7IQlb%j+#~VftzlYFbi!a2=6^ph7_n;=<}V+=&vTgJ z%O$`>iXIZbie675L7zJ95kZ4seI%Q>;QdJcEe=2XsV_19Q{<-+D-ZFLL};;Ko&wD0 z85Lv>I&1_>!iwDWB^(8rgK&}g?kzHrrmBSxy9-J(SCA+>Zi1hq3%j_erwjK#pb9GH z!V`*$2n|>`@0GlAi}F!DR0x?GBZBG=UTw^)eJ)1qO!UVVpt8oCw6{9o=~tG>Rc01p z#P9jFvv}xrSUhyk9|)P~@3@B?`DyTF#eNepvEzpRGO-}|z`sU982?s!_9t18@QFB< z6MWJ)1{`mRf&4-$2R0EgTA3WY?|*Wz!o z|4aFTS|C~3|G%Kc>=f)80@+NF!cqVK1}!4m67S>@A1PsE2^QDl4|%3W`qevn#WF_M zC2W}F5!0lsH|T5Gq);#rH}vFi=nZa?lT^`yg*wqlB5(Qf&usWOIy(QGup}w+E6=?3 zBjM&yvB3#_s8`t_*%vz?VnqC$OM5jh`%zA){9n2v#}Yk6sM>HK6or!&t(-{`kaBH! zziPVR*zTm@Ekl&b2V+h%>sKuYbG*B111wJq>w%^^uU(5sRsMio!is8c+@FE?jwRXg zu)#4Tzz5KRxgZcv*#;wIoINS1PD&ZKYtV7{0jYq`qkAy0mQ***aVu9o{vL z@IVl)bp94NzW4cPU5h1pJZ~r-_UBCIELlSVevH;ZGKq(tq|s^$MclkxVfWU6CcObL zDgFz5yaTk9o9kU;AjGLDX*U)u-p?j3K84%zitD%e*`cN=hKV+fOhMou63Z=Ssvrf2 z2rgJ2M?X}Hpq!aW1aaMU;#K<1lHEljozz%n4V?92lvytr&&+iUiYCDVu0#!{>*5Rt zhr-yD89$yrq+vCU1x|+rPJy<~IDDt-H-0^TZ8H^vRH;C?*|LGec`jML@fdjl%9y3yi7nERg zTnM44&B>skE|9^H6?YTfJ*i*zDOGF6(59bv2j3#_qPr~5dzjaRV0yU=SNsR#F~m@W z#Bjf0SazKWjU$|$8X+AiVU1`Lzqjzj1!)F(0I>VybEd)Nh~?-q(3y=~=n`FM`^-fD zMrs&l6HyYmuhd0SeW)!?@wNlymy2vb=A;Z$G_1#v!5SM-LnSiS&X#+6^U4lySc@iM zji?N~5@B$*LU|^c-{vBL(u-h0=$IA9v%W_8a?5nat$Ba{s1{clrY{z20vP)aAbo7~Sxg>0io;QF3@4Dy zkF2r+SnCRm2}rb5_*D{e$J^3i)|IdM)*KoIVH~zPL6Mp+6w;li)?&10jiQN8VZNEz zEeD^&f!`ogSs{uIy_;c)%Ai4YN~*PD9?=P4kK(o|i@n<)1&pxh z#VzknudX5=2W&M|^GR>HtJ4(D4lsfp&THayyCVKp122Nu@OeGrHJHDAf)1a~q%a2> zQVOLRdms8CZZv!YHQL^w&m*$B!Dt>3et5{nPg2H!QygQ6?|s+t5Eu$e#U7(El?h}l zVc)vQ2@H?+^u@IwN*57j|P`eDo9bxy0?0`54A6iuD_X}=+%=$ z3tCTHbhX1MJOvw+T?c2r@9iJ{{hQg!^73^5Z--59t47Yy{1*)V3#@En+SIO(WZseD z0wro?**UJ;?=pA!5O6(br{%x@3;2$|78~bfihk5wMTXJS7o{MUcevT!xfYkZ=JU1KVAw-bL_~U|+ zvZ6z;ap{@at485FmPcy6GV^K|=fR$ooXW{Knaj(74i~7S*zWKTI4x5}3d@-x!OW5n z%HY7sf`gft;_~T?L~G`9@`a(X;#6_Z+&PS#tB@4xpLmpXN2N*R@{Cf9I=};9tKEvs z3k1d&vF|01D2hRZP&9@{=RTEvIlou+;$tBo^P?cE4yd)bZ69LveXx(NK50*2Se1To zcg!k6VDD`23{#v!GUpVBm9?dkslX8V@5l1bhFxGnbBl}Av^}}`;4u6u*U6%Q-BHOl zk)~ur!)7RB*EeGnXT0H%nzoDq72|{r&MKE}TZFZAs^sc=+{KicFrbO4(W!w8(3&2@ zF#Zl0wgaWsy*HbK(e$XZ676=>c7hcgZ;Y#HV0O6nR+QK1Y<>6CfmUY0^>Dw8ickOb z_u?|0ijAKc4Bv+a6DmxZ(rg&KK_~E zE6}2?_S`*mG9+5D4%P(-?WJ$z zWPJnNkl+US!8kbAhWVHG1@0M1&!Tp&rB2IBkxks;-emp-2cNmAwS^Ny?!G!==DzJF zxM*Aku9Ap^B;!sYqO;5-3u(%PS>m6G*M{j!((PrFJnc2k>>*)eHZMj-jx1*9fIsJ& z^$^Q_+Q@oRk~V(;VQa@rl9p~vt){@YpX^_$70!g@&QWBTBllV-q;@bmDvu%tMvZ|jmgS3JnvKlh+#|DT+yK;@_2CmH15!Y?f&`Txv4ZR;YcKyp zvaYCKeF!*x3542Tj2~wv#wTsRIh`q?c|*i0P-B^A;G@;)CxQt?^x~-Lg79>dVDj#% zT+7=>9gs6&jTnDklRF5y+>Rk-fg^&XpEwqL0j&6(a7rx#oZk}7l_D9l1+f@AU(FqG#=`?0|FTYRXggeUfF`%!Mu#r@iUQd40EM#tG%Z~a@Z ztAP4g5o~6SYg;H8UPuHl9HJvUOaMEw`7bR6B?7x0Sk8$+2J?_`>HB}u#$-IY1M{{q z?Khp}(?++KH0S_hBUv=VmPQ(r4VY=ZiOlJ}giRYX;~)7`h>L!Oo2!*LOWtIf8~;Xa zh{g&)NMS=GlNv&n%yM}?i^%ueYkg25UFpWNd8X;)agT!fukDT)Zln9=S91;IJVv7! zWviCD>A4!%g#B@^1e=Uf&5erxD}KmJv!KJE%m1(Wp}v-xA(7s6&J6=Q``9fC1{Yxo z46CI(Oa&I1?wuVZv&b|lwS+(GiKL`uqli8Rz&mGAo%$4zPNN+gwlK#7_I+=AvMrWp z9Rvj7ItfnsJa!|t@6CM80ve$~?JOVZzu|OSdzUDeXBF&=5@-LyKYf`$|i(D8yU>U}HY<;ME#ZB(DpS8@}lsc<<+Od#y=ZRi}19hhD;!TTnB@voO(E`irM8 z=q%|_OUYo7g}^k+y@l)b$3iEjmeDY{GQ8zvo#YkzEN%?pc3zw6 zYIZeMYVTt+gy~lQw<&umqXiaAQ14clzRxy)E9tq{yPtn$Q`esA5Nw^Ma*)5b^@RR? zf*BYTOSGy(GmLxjD#`2L$I_c<{|~T;Kag*otA`xfi=K<#DM^P1*J98_Mb(|E=~>X+ z)76Q=U24u(Rl=rT^@aTFViGJw}~=;92dy&$f=QHB0w$K}|Y$^$JN7*o`z4 zyp23esL=85u~ki#W^34?tac0zcUbg}`e#P#VJH5qL|x|^ga!w#n$4(Ev1AO|1}dRj zB5I#ULx}5<2M5O$aBlwlQsZ(Z_w2gi!Bq5KQ|dd*G3Dmqi^ynBX@~ zh!uUn6+ZjyE9|*;#CT1dnPIT6>q!UjbN-AN<;;L<=uvxX2$q3o4Jf}Vdi8~ zn(+7-vdoEQ5jML8DnJ`IlFRgr|Qu&Bx0oaxJd=+Z>AlZ)6CV802# z5uNAubd3m%JR~>H3lL8RHolPjJH*ofzd(=M#RkSqmycAP-#=~`!IK&hTdfv>0JbsK zcuMd{Zo2+KKZXJL&kXxV?fy*IM5qUm%(zg#U-IO*+HUPlHW|K;JmOS73??Y>($ix& z)Pg-EYzri>QPrc5K&2U0TiiH@akRxjXgcRh)-*X*SHX(Wxwk@{0*bgJwHmNhy^_t|74iI)}*`voCb`fVeanHRCr#6on z8u2h+)=&2Mvo5oR8g9-856;b2lgv_skg55MJ(VE@kMqVaEA9G~ob?(x3_d=(H)c`Y z;cBin_uq!DqPnSoIs}r2jPkd`MF<9a41R3}S$8@`2Wx`;5RQtcf1*iLscxm9yir};*15nPF4>Ig6vpuI;5duMZYYCPic1L<<)x0{!Ew&vWG+A#6OSxK-4qGXJ7mfH}C z3sWyg3s;J7(BiH9X(f@&hbvo~pRhmg_`*~(T(c_=#Tb|~&(|>UHZQNtk9sBuwTdWJ z&)zywx)E1416c{O5i%}qLjMx z8VQ#QPkFcExshS8=E!#4l9spJs==eXv4B@HyRkBz9HDT8Ue{s9LhL$U)fD$|9+GWn zG7oBwT07oXcEKhI)`EH&{y3eyH7fQO84a_NefsGvADPWY{WQ$QXMrEHz~5?^wrVXP zgIf@j5BAM0hqdhRz*Olsl$HYqyP1wYyW*8J$CY1|A`J^Zlo7{vLZRsq>Q4i*NO1eQ z?m9&Q^~S6;PEU98FE2F#kA2gUsjY zBu)G|jAukbw-910Gl?r_)RORvc-9HXHMPRU?uPCVWwPmWSro2#j zD$w7t-VSJ$eL+PQGy9MA(CB0%I!3!dOdb(Nsyc5y;ryvK5~HQVyA>XB3x0@U7{qIY zvm=pyUHeo_m_y3mY2xWgUjBNz6~a=V5c8UHfNhx#efJKd@#pH|*gep{1lOpGBJg_4-E!a$Boe3?EX4HV?MO(A>*Up|zXa z7E6Ufcm@W& z2ErY>%woloz`uyEBj&d(Fngt@=8Hi=6{!h`)EJ$DwWp%(=&&t#HU2l`Dg29EOABr$ z$M7V*$nw-Ci$x15tu$mTdDR#MJUm|Hb1?m69!pXTXxhP=yJih?C5Ya}Lp z<4my0)8fUKUO}z0M_K4%x3?9)aIr&AOiT#wmoNoKwa1!Cdq=r4miyqR!unzIbS+5{ zvAtG_VKHeXQ&V0){z?w^qy51gj4-BDqG_Cm`RF*M(OO6ZEHPURH;Q7p?JB3e2{6G!lfq7 zp7MMD8yOo14iYSnk!fld$*J}&@Wpf6zx|ZmbpT2^V2G=)qi8VhvCvrBfm;h=U$%IqO5W(l9_DWSS z(+Jml0nVTRO%Ou91)sB38s*aV;fKq`KefF;TeMX?&=>D zIE@T1$Nhls)5L-T7`9z}8lZeF?QUFFj?iVfI26Geo31uP~Z9)34q?TK7pI7dE8)hrcLmmcb>Y%q*KSsYp8}~ zc&5KXRaZW9?78#zm9CRU2brY9Zx9dPrB}+_QgxK#?+l8gdS^?UJ0Gb2WOtfOvzRn@ zLigz1mUFG;<~Vuo2!4xuR=ld0tN}||n5snXp@DR1WJje5HV1<^GBPrKNdYMn5eJx< z;Z+zu810rxBObjDgrbVFYyKNW_p3KneFC%EY{5!~z{!%m97&rkXDRZ&Tuvl&yYx?Y z0`LAn!CME^1fRtf`>YDOQj5^X^;5$9YE%o-yU)t9u?(p>88S&dDJvnAS2RR2H0Cc| zf1E_AF>$;&zr!|)1d~W5%hqz*^cvU+G;L*9Wa!BvFY9Z!c2`|}`&)en#b~Uj9b&Ic zKr$57F=4w1U+T_FYU3M|C^AU`!pb# zMyLW|0m-e(syG!blpx*xr)nyZ7nq>_c1bVGiy|QlyXe#|r0;2rplda#kd>t2!-Y$7 z@jXf;;!N#=2YVn^sL*Z=q$;yKh{Za~A`B@Z;_jCyFp>qAW#Y%$6#`w6EHdpfkiiGX zQZ_mEK!ZRcPCtBSkHa!ZC+g1AzMmyKr-{Qmu8Te0vLYbDsEi9q6fP8rHXIuDN)#*_ zDf|7_5=LgW_no1Z#6r*6&K&xgaNfNflQ~O9dIij$sQx@vTz9ayx7XF>`W{Z&eH^}@ zOHo+UU`WFDPK=i!_0VJs+;rNX z6t`9ABv?_k;7R=8Fxv6x`RQb4P}UyKHcG7y{?vdBt%5Xe3SY9Q4@#Jx9w7ktgRNYy z04)SlENaFrs}5Q0L|rAI8&iG+D~n=Z4JnT`Ey$4#KalR~0rML<5{00`gwbBlmB?!m z&c4Z7DM_&%1vh#FU{IA>n&n_iPc*kT|wv#Qg zwzeIbvbc_yK>4mJV9l?fX^f$}Yrm&y>;)2d&-&=MH;)OLDF+|=WlfU1mGSl-zQptI z-kqU{6@N6g&?%V@Kd+-~mDHhC@Y>B%B%#T%Wq;JxBV~jO8(kr4ZMMKIemdQ1a9jsz z)(QU-(ifvamfW|JK~77ID?|K{S%P$GrVwB0qBBc#^%dhwaz8dBGZV@zlcw%H51C<3 zFr^+#g`}!YAeZ!<-!k0Q9#?KJRU;eJZ1stLJ8e)#-? z8EQl1metPe%at`yCwix_j3eKX`?-A5qUYZLw(N17m7Hq{7K0nXimFi_vBIdhv!>3N z9EZwA)a7X8w5i!`Y5Je90^YqVx|A&tS(2$d4g)8*F4A{4PVmh2sN5rkbdD)PbFb7k zmut+aNFCxxd$oP7Ai{d)fi*jdf%m+HhVGcdu3Er1n%pFIc!w9St$*HDTMwN0 zq+SAfxGR#X?}nAknS%O{+TDHTzMj$9LS0Cq!Z9e};AwY7M+1F&7^;H)zvoq1kK);Q zep>bHBRReZQ*E{{Tui1y%^ED=Y>4$2H&p7Ovz~QqT~n>-KIh~K?9p|8YwLb!S3z3_ zA$OcN22;KUm3JCi7^(Ek8lX7yIS4yOj?WmhIU-#^cqjr;#{&899c50D+Z$1xA?9;A`i?M?Zh(=Z_r|?uPL`hGPInmck~Xo~@J0 z9y6Ub8HPRQ5L$nudMr*Hr(x?*+w><_zOph2L)-J3nz8Opk&eS&m5XDeWD5ne$;X?FxW=bDf+Wa=A~_&2q&&Qnv650UG^9R&X8= zBmNoWT-S)5bT3kAzvn_7;mZGeKZiNCnx3gSsQ!j`G+J)ZHg}sfKtOLwm!WMkXisvs zu6FH5y1CL;eu)E{!VNkrWJ5#1eu!!5E$=A3rMSTepR(rYB6AQg`LpY=)rH%Ttkj~_ zf-qX8ky72|q;9mBM220-EmjP-#qC^)o9m+u0;uOMGxWRe~EcyL9#<@q+ zEgQ}77nl6fEA(L8!oOI&w(7LIp)W|Zu^ARfyswH6A?PU8qEX0GN30MenlxpXX*7p8 zr8VJCx)AXAf_grbk@H&_za+#pkPLchMI%tFHmN472sUbZ9L(e|nghO*=X7 z#35i-8}M{jj+ElC=N#FLLC@p^uM?jF;7zHhLy@R;WJAI7Co72}^l z#oe&qTVmTY3dUHbOCgM@i3qTA_=co}hWoAdXJmI-_(fmFzB)`#6Q1a$E0P{@a>V_R zFRkvXkonq}@#EOXkvC22s|0pW_FuWB$&+nO_06Kwg`EA?w>Im~uZgxBzUUU6Pz3f=Ib4b;Dbsn-ZpLn0CLsO2?Q+NI;adjh z5D{W5lliwhtJ0D03S-5_X(~-Z^uq#@j>6;)l7Fl$6eAGO`;tlGYJTz1mdV{R;82}B zvcvr#a&o4TU>ggAg_G-5n5ySknIgGXn9A+3aYVq$>|6xI- z89vz3kZL7ywd}6lY`kjzr?K`tAnJ3I=g&~bmA^(O9$3qrAr2A{F7?uP-j?H>i|Muf z;e|=@-AqEA>ty(E4#8cI$!NQ;>HyNVvGZCP(*N6|?Ys8;|MqBa83c0Ue?WC9Zh7AR z|9Z6jKwF;;lyQEkC^B`KYI&m+a>{voQdH=Cn)Coflq}hV7^PmGFNd;NOY6o z;IML#08x-*laSj-e|4N-erC>;egz75nL_2S5EhNvDi*6j$2nYM+9BA13$x%44`BEk<@%kpAQ0 zOs1namonxlF%IYu)0P|b^F+|FZnWtvud@*8KG4a_ODpTkz>$0F=f7s@6?qAs{cgA{ z`Qn;rOROY!TS0D_nKSU+D)rO^72H53mD_WfV{Agg=z2YZRaC{iv_DEXE|^uEPEWCW z;i0m_jO=HV`V|%oHznG9OyC!63mLhHm*jh&{-Q&UPVBN??=Cq6CVyuSI<3TI9lsd# zcd#*=nYcm3ZG+KLK@Lt^b8pqW+_(?*1G0)GRpfb|8s3w~`~FCI2I zTE=|pYIREZ>B*V6E*_zrvfWS|mr@bz4VkNS=Q?yiD3w!?us6bc09lJvl5j%m(U9(CWYT4DluPj$2WLY4oUJD6fLAEEu_v`BD zMifg{(8r!LFO&!<7js0aPP<3@HkT9-x(A#!?1iTQ{Y%Y-;!Lo<7X+ucqO+~{5863w z6`HpEb}oAR7ufx#pKOPmmFgDxRs?R z3u(SPg~n)m?cnLrgHZrp6uDFk=RSB*Ikpy46r^qikZ($&pk^`&X=l+uiNq?v;#&n^ zZhq(N@1>`#Z6jAIY-#|2^-pUtIt5&pZ478J>0aKObyIZvM+f zfYjAiN_k<*mgbf`l`>7kkpIQ!SjQF>?}W=hNdex*Pb3UbA_^I?IEVCSw5l)Mwo|aS zRb3@+ECj#L&8Lq3UprT*t`Wy>gBwZwQ@g&nNm~#0to@CJbOZ*ZBXi*2U@{t@$j|E^4q8O7Hvlaof11L! z_02szRJ-RXpL^*4#(sbOY|#Jx-e^?N|2?7LQg8O-7v-|;Lfov#jHgT8_Bs9@yx_8Oky3VsP<%?_mE{l1RGKQ^mbh?O>eAVq zcKaEv-U`D+mEVj})|lBPsqFHNigGldGoi<6s((ld7v-V-H&qB%)!U>XjE zr47D1;)1q?9p^w}3anK_8I3p5E(=t>C-E$O_tjDFp~Tuk0GRmzOXVkxX7S z&#q=N_7MdWNKv4VGRli&l=N69Nkv;u#$J`X&ypjpQfBv2`zgBLffI2vZ0Q(4c1}(m zFv>30$TBnlfuVAEWHqYYT}6}~Q$eoqxhnZ@xCrwOE(>hVd1WjHtFvYN+M>~pO{WsT zoT^hqd8N>2=6)`7)bR=fYQjw^5#E<4K|;;!k0HL|K+mMA>S z`IR3;Rbtydd@$KD*N&xvzJ4I>3&+~Bgv051HAs2~G{c3Xlq}-gZ$qQ~;=PZ7R6! zLJRvjFcthE&iOc5?TTj8sIuYhhC_#ZG#w6o4ykfD)W;^nq1&yYW**X};ZP8|-+?p4 zP_oc@3gyAI{EfQ*KY5@|^;h%J($|{{mUG!|rpiBA+H}}2aOcw3(LbB{TL$=89|W46 za%{`ZK^Bgar<00!>Et(&4N+gHeS2O?1(LY?7KbX1m3=WJ5y2B})0uo1HHS5y4+`OS z0riISA*=n6`LHwbf7j>U_P@@u*1#9M$^YxRgQERE9QJqi|8qPl{<~ln6mu}BGu$|$ zC=n@0wy@xBbC^$TxtV4iT^1P|#-RQAvysf%*H`?bV;#=_@@2fHAcHgTlt0hR`W0l zOl_gfvS0G(wkX`OHY0O|l>}B9E9}p*c5bt;9H%seI0Wqrv6pGm2y(#P?A*AO@1iPa zNNtFc`b*>-TT7Ed0RQa)_+}~nXQjU1R&;o|ISfV})Yp)52j~r-Ug!{>`x*)|*e7>@ zUnb|sI#&;xmlWp@1O_!->VS5qBa8w5=YvpftCng3WEnNUzfB?pD_~fRYn4f6%bh0)H&(^I;F;=%)Fc}$mpqK3b)js+;NB3` z05pzA-szv;_qnJ1S9hR4j{NrqCHe2UyY>IGJVySjEsPflnxX_nK8|K!hFNCT?iZW@ z07o(-yV{-lps)D6mv*o>TAo8gY;EXET{v#ymaknZWYNRhh*TRwe&Jq#*C-Ufpu9fY zC!=y#H1&p~R_?|nb>EV;hS4Wl3QL%sEBBA{G?)L&IO^Uk<7oQ~0Gs50-z%N}KOF7s z|7UsX;y=`N56>L;v5cdf_~&Kx1q$t=ycE2+icx+q9{mfn)eQ-oYSfzR5}6DNsNTgj z?U_p;9@wG{XH%OdY5oJ-wBf94Qw-O3ZEgsGSjLeIDX)ZRh)X9JC4w3^6v=V?OYNZfG7h=l9b($5?YAqNAq9&~H zE^*l+_nW4;k#EU}}D|NkSzepHCaEbv2ptcvd9U(+aZ zKCLNd?s*iHLDBMuge=CQGtz>)L{lx>d!(?0!rC6QZRcZ}la(LMgFHwXjy-3JJG?aVMG$^ODp_Qiz`MIb4 z_n7e??xEpGCO-`2)rd{dYC?Zd^}o0Ip~ zKb6w43FXp6@HP{=CRfhyxf;~t@@Bk{2 zu~ueSn+w&Ry$q!X`u2>kt}1A`fK1NMxBmp*J*(R_@G>L~QbliEll_(#xlC7ZRX>!oy6NnnIL^D~~(E_gFNnhh#G!Ux%i{|474`ZQR6CY!tO5V%ZQnv%kMQ=By zNmtzU*qz|0YX~$Ugtf{Z$@;}@Mr3Yy%IxYw1Y0gl&vlDlO#9Va5?vCK-4dQ47`%(Z z6@STB&2&W>TBy%?hu{W3X&$`3X{ipr{GN+NYwT!k>bc10?rceKY~~WUzPh=3clz`B zwe6|tE@9G5Qd{tuzXFF6|F!_(`sDij=IqsF2}p=1S=D?czSg*T_xAL>;3HZ)cF0yo}OP^-<-X@+6rB9W#LT_(L7*jFVwj_vic-t z6Ou;3&786LCQitw)lDeukP?FL-e13b_x|nK%}>|Y7dID|@BZt*Z(hH;x;}qfM7Sb> zdvlBuk}^a~tqTWWi8K#tDL|Cn;JDP(+4S+vD)G+J-kteJc|wT`EfP8xjMi6 zaDMry&5C<3Z}iE>T%+gzb$xkqb8`7(nWz<V`CdOBi{P+d(b)&uK>oV-2S`w_PyBBZRnir5K&ujRS-{NG{+aMS!h^h*B!fxA2Z z@hp!@)Hc;w+Enaj*~3%vJ=a|b^GN<2v0o^#6Svdqtw@+45E5~_KZ!DTk3@Lg_G0d& zb%V=29(b@@LvOYU;j4L-{umgSz|ZIZZ59{VPGQ|0VD}vV?dHEZpz@gef9~k8y#F`Y z`G23~soVeiMUV7j?*DD{8(RmUs`mghw4Qzs&>-{Vdw^EA*T(oif$enf`TuzPKmD@) zAA0?r{(qLo?Ehpl>k;;UDyL2s18zQ7?b4W!8+K_5<(ll$6sl|!3qBkj6?Qq~n+L~( zXWp!<^NW+qlk0am*J}Ge?2zJD7uP2*U!PyyygWJm`TXr!u4FW2?VYpnt8_MQA7B3S ztJkluetC6$`crO0Kp_o zk&skE`_2sufS3dT8YTclWO=86%^?#$8b3jhp`evg9L>~%k@FP@@g#xCYON6|^UKd; zXeW&SMqVJW)xE=6W&U>SD~na#c?@;c4372Py68*i{*PfHeTKfzxH=)e?I+6J_@)6_ zR|u%qzAprSX4(JkJ9KlV-HZI4VTGF<_RZ~HxoeMet6EKo?~B`(=F1uwmf$L$1<;&? zqgi*^Q;xeDfm7qW(+E7+bH^=DUQ@JoEqKm^6XkG@W7=KH<9!lgbFPazl2?DmQDEgv zeo@bPS*qk~am$NQ{dN~~ur0Xu%n+3pIJ!h}hrB|eH6oSD@^2T0HCrP6vcZYV>r5>(l=a|Q~eLo-Ui_2|XbcdCKaXz+Yv2CTeZV1beu%C1b6+S}4c0ruH`r8D0??`ICH?C0zRx!#IH z@FH7v?UxS-7Su#7axjVr6H>VuhF1A%G_3-erri=>NpFL*#+AR$$_khoWFBJO+H)7i z@rQnz>wkUO+}7zoH|T%Q8;smy{?F0qaHs#DSIRw-?pN@()cp2! zh!58L#k&>10T3E+A#Q`aFzceuU?`sCA0)_H8RTOH_LXpWzt?5fL#Rc&N zc;X7FhQt-OO&Joa3n!Oq&J+Oe@85&ZUsQ9a{XugJDBJ~FN?6>szEJ+;4a}kkcYv>--EWozMb1K)+j1) zr(BBX&G#ax@2$Nr{HgO-&JA@y_Dfc*Q407I3f|x#2+7G=68>vaX9-{e-|^lRJKUF5_av|bb^uyF+}|&XlG8t z;{JL=bPOsFZ8%#a<=0DvVO-RWU~yO$l_Rp)axfOn#$mB;2o?{ZetrA3gx{jMGR+GD zwPN^%v|Qv~7>TusUez31hGl5MM`hh4TGJq{YHYvM-=goKI)hN9Ak3;MQ7D}j%G|AS zS=gff`5hMJ4dN;{Mag;4W(h=7d~3R%@s)!~R~&3j92Bu+6%!mW+Rizkvk&%lkauVz z0;qH(PSa+r5m(LFJWz@ldLDnvy&Noh-^h-oG8%cko-Dr2(Ys!?<|M1VT@k8j#q2$> zf<$GZbv1msDgYfIZZOaGEG!_VvbyEmOk!T`^JhUiN6;&GDz;*$B||=gDR$mYk-kWk zKZToa3Zm2gUttB)W}&>_oGXJi{^TQZfqGSA-b^!kn=<8&+}oeD*UJ@FXv$w?h3~xfwb()Y{5g}Y7YUl;Pi+aDf35;s!VG{3^lwoVjB_tHBLRRS zLa}20tc)adsV)GVbmgi5MCoFJ5?MXFCb`s)oYhpo=WTU9rZ@V`#;>n-p>E~9FOq-zRY=f*&Knl_FyYtuXOeLFtU?@0_EzJ zasQh=yo!rr0r=7UygA<7(%YM>`#3(|GRRE6{H~tgGM&nP#d4YE`@V9`lw+RUdQ8E_ z(agC$63c+4SF^M#qw%#au>M&4z~`vk6hc z(fZgFQ5)X&*xrM6Y+>JsX{-umb}4<#GfK%b6j6(81-%6-mW`d-Lb(N>9<(}Kn{rcK z{Ri;TS_*B&L2DsBHt&>pDVG34ZfdGx;>UQs*)Xa#8yYGu9eZIrS*ul7u4G3TUM20t zU+(nRPJiw6S7Yh3(_cIN^+(oU&#AsX|1OE~n)`p_rGJmu-@i1-|I%|y_y4=Q`(K{t z**gCBLZ9kqA4DF2(-7jt(?kQuOW(RRpzOJ|Z#U^=2_V)xZEIY%MOdKLU7Me?x#{~& zy!5wrVLy(8S3%*5?SNOHTM-?-1^rp0+~#u7@6FT)%~{* zVU@V*S-v|s?bK3fZKYs(M; z(eGRfA4+9Z+|h~elQd#^tL&a(1Xi>4=4g3I`DD=pv@ZDz-I)6&Z=h;S3>~X#mOO5z z`Rpi4kpv|j^T-r1yi=xu`E=ND~wL1IsH|eza=_|cwGJ^7nr*l?&mBe<->;mC5{3d&Au8gsEw2P>c+kqrU?m= z%J~Fitn$6q4pB?zf3hcN-GI;PRfj;v3bciGn7MJN%Y7dEvLNdM!14k^ zwVHjd%Pv^r{GEmVr+%8-|65)8pL;gte{u)K`+vNlySxAAS)Q%^zv_aJCvo`NSBpHx zLLhf9Nkdy-_3u&QfGt>GiwU2Rq{581PAfeu)swn&rP(zrwMM`$q_?39lqEQto$V4l z?VhclZS=o98TaV6<=I;Q>zpZ1WB>@@Yj=I^BcTu3@hu)L-DDaK#pwbo(FWtctz9i^fK(=*T-qRWQsJ@E1<608 z&Rk=32w1gNM@EY0H#@e?Em<%NKAXcSFLD%j;)F2blQ2Ix`=I^P_4UP-$;Gff6@wlG zdF?l){v2_t%^8bnO{xKjiRP4I3Zdm4)HU-O@v%dZ$ z%bTCMt=U4M&!6?pBA*NAjSOn%pBPFa7|Q))3l%Z1R4MTqStavHL#z*=S!=H@+8at% zuvraW1v-URMNNnNyBzXW#j7SoRrxCsKyV48na*`n_f?z!nx{5G+vdp+2E)oPz`OeZ0x^S6XuA{eYrf`H3@&4zVfbJSfAqN?#1!l*IF zD&imD0*5O({QKZVgzDsq7IOJ2`Aj&uPc@-1Q&8VV%^)baSobUYUF3u&BVc}*7~#*^ zaTBh;4ywsO?4^BMgnd_At~Fy!KYn2DLmT5Dv~t|`u=K;}Sex~kY>yR}3hnocOv zTZ7ODWaT^V0A(PTb%$Z{{HcV-GH0FC0iaIuWFqCr{r}ke*Y>t;Y+)Fl&;Av-)pU>D zUCBDj_MYtbbsabLJ&EJTPSR@*`^tt$Si+bhSdf(CY5M&3=fZ&`00I15 zSXfv9)(Hy>McJyAWY2cB^ErOOr?LMJie2g^Zom!ue}hTs{KsfG+TH)Mm8X&aPY+c1 zERleE7~QsF0-at)HJtAWwgW98f=#vsZD*aocxa!(vp4$YvJe-CFnyvM+${P^y;B_x zeLDXN(y9jk5Aa-kJN%$ft$_g8#Q#VAQvSEmU>E1hK~17q)(%t-&*~ICK4za~E+4MV7Vc zq>i|^Jx-xh1!YF5AOQD--US5u{HpSX6zXM_`O%+_x+#=jLh>=UQNje#Tj-%!c$`wo zf$*3=hV9)^+*=QNUWj{M=-u`(Im|AR<~{!h!6E2;4>~Piw(v%2bs&DccxZSn(k#NWXwtdWNcfT{OB4bDV6C+qll7-VrI`2 z3Mn^Y%nPiVc1*n}py-z{k~+2ommU2uP>fb+o9Wuq&vQ#8 z<|u($tF{yqf@Eh)M?ET&-|g_*Z=F3DMMf;lTDdx=4BMi9{`Q*%$_j>Xf&A|L zK|iN+Q)I1o8As~zs!FTKVG})>MO3N!=h?I#H)l#i+qIH2cM&<~k`fnGu8zYvfuZfp z)Xt7*#{UJepZNaw@u)vE`G0@1yZ?174`0paA0rt0Tyf?Mg4_z{Jsb3@MXatp#hWfT z*`?|#7MHtO55>PXGLL9}X$z?5U_TFKuzWVysqI90*{xn!C7k1P){wW7UlgD=V`=&T zd}1nT=z-~o|A|*O>Fq842s+)4UH{%Y<2xn*<`~?jLGS>6NnwC*G2^IF#K)w!_cIdE zdHIC3!Nw;BbL7D^Mj$3D#BDgi_{2!wVifo>-<%2X3Ma^Crd_hcG1#9!@KJtodBe)$ zaKSxU2fe+ETR;Vq6hJ%@CJ=|QoDlpSPQX150%j$qF~c(kkRva#-8gHCjT&X}5&~=#`55{`ke9I*eyw2~tH`#e5}-YW3D5kn2&I=!`K+rI1Z>KH25U z5v8~$vzbduZP)M^D1B8}kNmsPIw^_*=poSg&kpE(=rm_Es&6EsBtkTJ03KwW$vT%Y zeG(>=1OcKvX0%4f@(OPsB8vkcn~Fs_ah#yzqbMK`D-;@uJfs)nMd|aedLXbHFhna7 z#>fGef4xDC!Nv(p&}|xUz&6M?vVaY?TKpE`0PJVue@PMm!5RkG2WFf5-^K?W7e+RQ z;*>CKXgh*?{wL`4_`i8FfeyI+#Sd%n>|gw_m|(>O?y(7MbM%z<)blx-x4u5c(aFRf4BiOrock!Y) zK#?(4_ExeN?$tdha~TJq(v7tl$agpA*B_o9>Qh1dRgWsq;lDn;`E$b-c%4e5S%D8X z=Wm|~@MoV5FY8j-(%@~()1Fn)hy<; zR~K(DN|0a>Sa8nay!~svfqeVd@_?1KfN=e^k%Q0H`WHo`z+uwSkFuCvD~f(eF-1P; zpm2>T30F*}ts%v59%Pa90ge+uZovvhaaIFB#Y>x|Iq2z4ImlV;-<69i$gg0O!Bt#t zrbkp35cw85YBvo^Wv7RFc8Hl5#Rm3AN>&Q!{GBC1g4zZvVkiqo<~Znz^=8N$;n}XP zGAYbgp@qx`CNzt3s_(g4s4TW^`HyFn*cFS(wwqgZ>dNv%E+Z7KU$M!moQB9=={h%) zTv=%`Yx7?k8p@p2i(9&3KrqCDO>yVmw9b{-uZSb$;oAq^;GqC;d7>ksPS_c=B9c6u~zR+sKFMnNdpGlXXty@BGA@o)-S!i1^JyKsNY)`=jaDjQ^MpclUp7<&oz< z5r~K{9J)BcB&_iNRv+S2`LORi2$cJ0MWRr?u+4Wx?u{zXQ8{U~OkxJxW@S??as9+5 z_i5{=b(Sd_?!;q(t6&pM53}mD?nLYcui?!YmZ{WA!j!Qv2vxCO&w~nw?uv# zAe!etS6?)Rwj^4&`CK!V)k)*KlbsDD==3 zqL}j*68gN7QsQN)fMa1XF_G`?)m6+XiXcTD*QEowFI0HqvN(Z@_#%uG7zCQPEkSY8 z!}$mGlYCpCC$rs1#kBnSgZfFnb%&?`6aqsB|v2tUe3iDztt)H8Zs0~a5o1>QF&Gfm+w?#xj z(Nt~4|1`i*rms|fKA{yA5+B_tx$)HBPuL7p(w%01KOy*pL?j@Khnt8Z=%0}=PAJ5o zu+yC%pA>-r(IP{L^0RFtJ5QkfY32W;Nuxtxo6i5vCguEZ!`=N4TY0$u?~12_%w2xj z@rD*IKfd*%9L^C*CNs&|b!=L#tkO6+ zl_FET6SccdH&(^r3-poIKBOr05#_Yaq5%Z(oVr;G&Nz2S%Fgm$Jj+vdngr5=Yq=*& z?zWlMlbREFzZ5iCd{nk_^y3O|QYsF<#K0$9r-{>u6Nk0v%O2els-z_Df&IJ$_%{At z`2@rX2XU;(+B_&lVLQ<&c}v*3|@N<>OUykB04 zsrXkgS&Ciyd_z0`4%380h_3jjTbLcwD$5w&W36>WV;mcqwOIm75AkpPO+#-828pu zC}Tc;!~x1lAXAZB3d;j~IOYXA8%rh-2R!Q^SO+JP72d|If?fai8|YF-5vlPQklB=uvsf@jr#i(RNxkzoKRSZ9OrBp&*sdeX zJpei4CstzWD~5lL)4Bdpz9;~cN>o`NU*U4hsI`tl(RP_u+8QxCRk@?Rf)qo4o_D3- zt3HlPZ&xH-5KCzr(u$A5KL;J z+Jb2^Jt|(wtL*c4)>929Tq&@~Gx>TO;w(EcWp3=4gKbQ(*QeJPr!Ri^@Y9={x216K z+|(DbuYX1lTI6aLyDFRTDDq?F;~jc90Z{;P$T)(v)$2EJ-hQ|`y}9}M&Gn1V(Y*ZD zrGzBi2*&X}p?(DiurCFJX4mI0E^Z!0F%G@~y+n(TC6v2W{za#c(e#^Z^SsS;G&}Cp zAf?Ga%nA7B^5vVyPC(H_lL;tWeR2Bs^oP@%bE9tx3(3%z|G$6f-WcTM`rv*{OiTMGbT{#%&;a^XAp{qeh7VZ!ko>y|XvhrDIdd z;Bb7|KWBt;{@E#mIKMpo;nn$v(|2!wI=_5-ad!Il;>~3ZkmsBXr)jc8A=3ksECr%M zHzoN=b-m65iaS<{p1yc}arxoh&H44^>FbJln8Rm6N-9v6-U@J!J)&K!&qsU;2jfs5i?_X&stgd#B9%U*=2%EH;qaZRj$dh`1H`JuGo z{^LI+js1C#rs0_wx&6O)80YwV=b!^V2{s!qLAT4XefF!$yMF`SE_WjjXZ^uU`Ixa- zR^XQuqvXFVo&2xny)>0ZWoX%_7Wdwi>z8kL$v<`2UmdfiWm3gmdaqV&I)`{a)0l@E zw3{z28;S@C5bb`3`Ds^4O+;4@@h<`NS2zUSlqqnayX-vsRn=I3>ws>gywmi_-#T3E zfxqVv|KmTN0%)ATB#obF7F!if0RHwj&<#Q7nXdSC!2kRYU#Wa|OsHmOuP(T3dtNG> zVIxbwx_E#7oIBY5OC>kxJY!!v1@3vrD2gKz#_0L8eMJrckl+;}X#%=27=fWeUr~vv zl3sv~_kc~Q3`a)hPPsr-^!UxSr9iI5i02^x8{dMzfzGoG;SPBI9CWVUT)ymp{{f#q zSw6mcbNb@q@+G)t=mH$`ONO&MxO|wv7$pFQV1-tMK6JqU{1^KYDy?&R=60VXHD{qk zQ>9O$xoiI2NB;M0Zm?Eyh?63w2!=kJWt59LJ-?8GZAC}VSVKRthM0mx^2w}pb;x>2LO<4e>SSvcxX|-Z#7D^^VTe3&nNLkp z*p%&jD!WxzF@L!}X--N(Krf{M=yv%gbhpbHdgs}%7G?9d&WZj(VRG3A!4OZ5j*mu% z4B^A<1J}%d>l|`kddTRh4MIk)8xl}ZJ>%@dU=D;n6zZ%m_xkHbzF0R_XX`Em>+616 z?f;W`qb%T?@_+YB=RZfI(eC``Rvr=m#Ya?L2h9xpfGn_Af45$oTF>{@BZ^m$K4h02 z$bfe<*vl3K9N>8`O>mGE>Pb-fO*bn1D;fFK(e6((TUUe8lzK7}#i^IPLpdynNmY`0Y17nKb9Ugz2SmLRKXklYirP=zYp|2ugvxW;_%y zl8_iAgeA)izm)2Q!&(l3E^nW#arj`}3LH{2PMk6!- z_hhom|GkxmpHFx%j@DJ20I8YuTThu~9{0$P)ZzrKT;a5;GRjX(vckQPaG;vfS%g)c zJTJ~C9CB{RTRJcgl%QWgCyVFm6c@U5qP5qN4XGC^SXz26i)Bz8*O4f3F`|3{p#pUI z;{S3$mjIWk=lda2L3Fwu8565Vq4B6XHKLBg)y|6uimBNKjUH$*XljI-kz3p0DO4b3 zQAeUc_DfAPQ3s0X4kZy>WSiN0Swva!wibpi>1Qf^EG*YySFNB50`G#TSlCB0h#$gS$)b;VJ~3Z_?ZY*W~)poPpAA2hGl z+RNfD>RfL0tfX(~9r%dj1cwXG=2gbZFJQli4>5=+y5$?DKrf7M^Yc|PO0s;NB|M*3 zHCTBA+u?WMO|nGv9>)j>B=|Lf2wc5C6UR1(9-Eq4xFMMR8b=Rl*o zxT!hka(O2Ed|E37_*rix&Vi~7n_F{i?q`!)YrFv9Y+2?zSKd4WCBv<<(^-I~{4Hi{ zaY9FdY~4-}q!G2m-Z)*g{z!52n)rD=<(17WsRfqNIzL&#f1D_jv+|h5)UCT$ zF4)3g<`uG^qTML78j3p*a?@DO7emB#83vZ$?&ZnsuCqX|yUr`?`scSCJ3LmOkHl8D$9>aT}#Y zb*kq!-g%I}!l$PF=c5R*spMf4AATsp-Y&v_@Z46F#^A>IkAB~<|E7c8{g2yu0P?c_Xa3d|#`C_stEeD~!9YYL0au`*(E z<`uwPf!OWzzc5U`0I;zK!YL99uQa3x zcoe||`Fl)t%5RKe^9TfZP9c4$+(6LPzc5?<4LR5~j*;Jyl#3HW;X;OhM{6$& zX(&9EwnZvyW&h_l4t2o3yoXNlJ9Tt4WgXC21Y`~azQdA}4tgGnxJJgd-Y3-;v`nH3S=EDkt^>5{--tphLh<_+|d+30PbOM^KVb7dl=Lr z){2BUA(ZL!9K4VKSHyoUK9pN1YV^#)N^3m*p=cr`K6(vtn4pj`g`aWgllyG(Us1w1 zeOx5-MAfg-p?^D-6&RlE~Z> zQNgrfle~4|lBf5Kqb%km4ZW-(hK<hZ;U#*rf;E>IOco( zrWR4!&tp@3RNnQ5k6!2E>hL|~b=^W7zB`9Vp$sESm>%ufy*2drFoU!gP)#coE zdQqnXPn%MumH%I+Jgd6}uqpn3GMpIx|H-&N-TD8w@mT!-UpD$9OQ%;3{ivPeQi3R= zJgT$xZQG>KGCV)Vs!#!KFf1q`$>%UFvW(Q5tc$$;I>5B_))t6nqZ`Zv8;%+rt-YGS zN;o!;+$odBTFBblY7@cTv7)t&b^;HC;IzoIZfJ^lSGIC88uh1|iIA-^`G3tw8l%>W zDt$CVu+Tp1V(B&;wuH42%c7yq*%`;w&C@F3x?na3muuvPX%YVt$Y5z6v{ar0PeUcv zR+nctwILxsYyklY+=hbu^cj(;VFF1=`FLKnGlNVp*OE!(pcJlA7nl}uwBKw(wrE3` zHJ`s75u{XVr^cdf*_fkaPu^e=leGVJu>5A|3oEtc3Hc1{O7)05sVVkFo_6-1NXhlkYS zLJq2}v1WjIoUtZHqoJ{;(xOEhwT-n$w&OC^YK(Bp)?C)wlecI$*S<7|Zq^5f&Gz(c zo$U7iw(@*+_MZ}P`Un%yxaQ8Z0`1r7ZQBrh z3LCJV`S*F^3JWSeMRcJGP5xO0*3$R})6Icy37Xk>1F$x{TN{Qs&8$US{oioU zYtm(Oex7FSmgiT;{9E^niwAq>ey?3~7}}qei|uUg-^J6){^z&i)=vPk!TukO`ZLr1 z9}IT+zqj&yb@sowLi!P=KL=p7`b)P{Z`Mpj&Dj+Oyk1~~kzIz?#;mq9S!FJ7uy;8$RV5HFrlZ-hrVS`$-k<~I1Gdq^ zVSOlBIVu`$ns2{l#`^49h)-j!RRXJFAMyGUOiQas5VDySqoCaweqGz;F>SakmQ4fN zsv(!1(x9=OD*41uEB!Af0e!OkZ~ftDX5RlYo=s;v{cju3SEv86xn)!T>M4J$wpI7z zV85X1$J$pkKlZbg?w7+Uv^@5zYI{d(OGyEcRa3M$wP==HfdrNL9<=Ye7FP$FU5!(4 zvnq1sMvE#fG&wU}FoSh+bbK^AOlhF$a(o)Ge+pG9Z`kfC$!nYuwrJ{VLz{%YnCJ)X z6(R;efYH<;g^U|zJnvdFeJDe_IrO^PkhO)K+TeO>%KtRM!QlsZd&{p_ZgTlsjrfmQ z-<1Eu*>soxe=85a`)iF?C*o=!93aL!p05~Lyd^pj_kQhhHQ^d1DGdPxF}Y26zPwX0 zAs&QK#|b9ko;_)yGIdx*w!ClIdKL)_@6baBbbfsErUN=_zWh62KfrMUIzOCVci6vw z?Hq{fvMLk_MX|%0T-e2TJ-d!bd$QcGp{E;>yTJG{GL=z zc<9xYON8zbUM!OnFwnT3F`7$A{l|_bgYnr%Q#8VAW!LP~A4~?}MrJU3i)eOlQup^X zq7`HKxZ%r3j;;L;lc8+ce6Dd+FNT)a>B<|*c(Y2%-}-!{r@&M$RLZWf;uEJKU{Of} zENNdc4xBSa#Lvd!ko_GdxYgK1#5ee)M^+IDQJCc8f<7h`zAlpS6{@QFh2NK!ppQv@ zQ)Rs|Q?SU5u^bQ0wcG){;zM4xgojdPUu1nynx!&|xp)^8hdRsY*^3VbKB7KMrtb;HqYTRIdE)LQX z>^~XMC2 z#U;C{MNJC~t8<#v#U*r<*_HVdk_bO9B@R)|-OR?grzd@~ccPk|g8WNhDDD^Vbb#;M zfBE2gOQh|7whBCpkWYaTO~MiMn}#OF39{iFhyBhQsHWNxsDYJA3gbzm_k=yA_(d+A z$%U>$Z`BpA)2oOck4+T>Fjnt>xC`+d94-(B!xE=?I#Rap@KRHf`W%A{oJECJv7ll` z#cTw(n8<5L)r`5cbTIvUAj_F4rK~c-JKoc2&~JZ-PY>5pflpxK>c1@3?V&5clo0Ny zpflGHbelUXf>>Uv{YTZdQAMfFjR9Psyu@-?EOU7y4wE`wdx40KyM zMC%FUJ0ODk&LH3eEp7-VX(+s4M&f}M0ZftQ==1{R0jZoyRAqr#O_Py2`-ja<*ZcZS zo<@i!$!*6`#sadZuo7u8WN#2c@k3efZ*aD1O11D2c{x_q{2DRJAJXzvyA`?OclxyZ z^7O#>MEg;oz{#`goiCm|_$%;ugB`>kOeA-8;kUSotUZreJ?_}wKdK!kYHB1l#X)vg zQo=j`Nk_W4h4mQsRg~jH=?1LinH0gbCpR|2>=0j*e*l^I$F53d-}L*Cw+pyWBe-LK z)(QBQ#sez^aMN!E0>7^QTUBFB{EqoK54x-eJbw>Vsk54z?9FvWwOAmtccsq4Poy{e z)!5Lx_Z{s_;>-5r7!a3TT{YZbOe%a>x820Qy+a5EaY~`qc-%YOO^EB5f(@fSyTc0# z*zx=#i~f(A)M=&DNytW#}jWeb`*O|hvJ;vu#>&ERN%`b^=&CHuEzgD>tCLZ(>aP@aiKifo(<;*-npruU+q z$lh-+lv}6*%_mw3XM_S)vv1Cf)86nT7yI2cyPpRUY2RenYx{9RJ-2ZiWF%up-uG?) zHIoQv?j^RB;1`qSBD2o0q*b%b0{5!`3|p)Z{KQ3UZ~RY`H$?lUwlM#~qof<20aLip zGa`K=d4xP75*D{+v7^r~^z)h|aCha)%#ZVB{RYA6P6Z!FG&>^ICa7n5^&sZH9E zZu0{C4jt499OXEgUD|;@&2Lunw!QOL2%Q3s0#D0#S+&$v`e*%~-Uo;eEz=k$#4bXa zM2h^E+$`a)j=~ieluHiSxc%-LhK7Mvkwq0EHHuMP!p-)i`4D~&!9MD{@9CkJ2$9O`F7$S76#MhT zd)G2OE8In7M+HHPUDx}wcu=8uFup5wP_e3zR@5xf8EoZ;uFM6??_kbz*MTg9T94;; zd1mley$CEro?nAm9{|1Cfcxg$D~G`CG3Bj5w8~(FI^&n*ue+$-dm6>Q%hl(}telqe zTKBK@gWJxsc6hzU_w+Q+km@ZB4E19Um6Yna%kf)B|Cg9l;QM#o9w!cg^e_DgAnxQ) z$NjdpyUvF`qCFZ)+++kC4RJO@CZy0(C+UxR^dacGSzV2Vp<(@3d1P_P2^O^zh@le{~AjkZcAHOcmJ>h8N`F;rs=zS>LQM zVn;h3auF#aYJA_6Uo>+2-U%jhn)1URcaJRacRXpyTbP%C*%{DFj& z-2xe^JscQ2Wcuw+Gj;{;yAWal%|zh;z(OL^-{1zX0?Lvgx=b-abD1y_b|NrVMu0qW zQRg)c^aG6(=;io3^GT4m!y~ACGH!uE3WRmb z7a+Y*UjiA3P^KS1yXFp{1)co;z3-V~HXaK}uO^7ma$TnNoLglS%){i=`pAR-H{<peAkuURsVl}4OvA?-!- zx-AL(RUnw57tP*_@TTwkGcE0H+o_%x*z_$o{=#|-8v==7TPD{0N6ssxlGS~6`5oW@ zmd)MR_Zu!;WIC92M1Orz@T+{Z?aYBLWN`eaI||z$dHdEA$<%;!6RPlli(e^n5**i& zMS~v6pL!`BR3!f)Ouc&V6=AJ^8o#bd5bRscJ;1yYfi(hz-}c1L4xlTqeBgJ~1GYEF zF}bYq9IEs{TO$M`C;f-l)d;QaZUO1%I0wmS2*)4D(sCKT&(!qyeY8Atf52Cm2$56! z!?o`-@P4(#4K_6KR4TL~Iaj`hiHT7^$M3wrwpZeNiL3{n*YrA6D`pw;y%36iK)_gO zvr1-x;0JQ&lj}er`H_YIjHCgQFn(46pR5c56|-kIw$wf4&7Y9%Fp$h*Jkb62Zt%89@q z79KBsfhbw~d76kfvR^&76AwW9)SYj&^6u^jQStXu0pZCEL)c2p&D-_%4OTz(BVna7 z0XDMqdwRHex1DZ8EOpM%XP-R&+)5ne_MI#oj~2PbWbaj^4#8^j2srLc)qH^)`Q+St zEuct@D_9CgAtk0u%K4*$xW_IQJ{u=ZK#XYONiS zx;pFTB+6N?Ue4n$ta&3ZwVquY{8)2|SXOsfzQnYA&KP0e5f>~pI+mks{^^c*AYQV@ zaFsSX_JAshMZFtM=;!T|mV(2@ZQPtt6?Mc4#-de)!cSHKqXhBO*8>sib2m-Xv~A5e zxS*HD<1_16#tuI0NPWy-JUMK<=F&b!%c$dYIH&$ROUQ|ZVif%+rTXPcKA{gZUwsA} z=XjX2ynO%&JXl^eN3oD8%>%b%3Imqc3|T%jTK2PL)?lwvV7xsW8jNqvJyaredEjH^ z!<@tFFGvYcg66HCkXhA^O#*bzg@(Uoo_Tqalz4#wmi8i_^7c(zJF4glYd^M(fk@xa z^t9X0)l*+>ckU7%1TY7r-}S=fVjP0fel!r?yS@E z|KdkbykEZ8REg0ala}4RR{Rn|YSvlnoy^CJx7*eV8fL=POkGa(&N!2t=>3_ro0V zZNKmN9G#c|a^WJlybFBaB2eI%#3c`VgAY=>+19>Cl;j4bL0yl91M`~+h}Tct&HSl8 z8y6qA{kMoFE!jG}GA2OR`!N>!=TWPjcHVjsr*XnPEx0|QC-Y81EyTIiVKTyUPow5H z`|4X-_cc790JP=YyaZYwmMsA9MDpZI-c3k$GatGW9E}5~T*-D-EzN6S9(?^k;rT^% zGq!uuL*|`6OBB)bFyPRz!=gOp?SRjFf)~9?o$H0WHg(9n zq8#M6qSUL(6;g z2iLh2OO>(wkP-9AH15xU%O68Wh%xh}X+s%o>fKAG3Bu-(^KgG#`E~_|n-4JfT!tOH zQ%dqbY|*~jc)lD}egfIH27Uh=@4_E(6#N*NeuNkZ1l?gH>CvQmc%@=tI^Zh%e*Fr_ zIlU^G9KLBcL|OJ%V%+v|M=n5k7AKsL)`~^Qx~yJaO`~m1dg0>4{%l&U^4UkxGkFNM zWF(WLAYdC;qioV5PbG8T+eOhZCVFYkpYEr32Yub?+jD|xGmz-)1sFo{?#sM#=({$i zYys>!UOk@%3sbi}baIo{?`?+%Y@J}&s;(VP&Ge-C=B>V&tyy}#^pP0~OCb|`Xccjq z(RO9iS!)3s>fFDKIMXjKfK_~6pN?%1S%q*{_Vtav)p%%W%a=5xH=fo%El2{EIP0}( zUs+I~)oZzS*5FIcOQ@8DsE385BlXHA*Y;?^sSG$+RjbrA)Ws-f6!R=Rf@5Zc&~*3W z&-FLlj`ZF>R!f2M6Zb^(o3F79{7aAeQRQt9hg}}g>ij*_HI`jJdJ$4R6m~Sb#xPDM zG2K9plh3sccFf1R%7v&p&Su&pz`1Q3!-#GhwScTh-VD3?#~;hJ|4hC1%|Uei@4=@(-`07RUGB6v z*tJvaVy$=u8J1W#fjvx~dv}*3Trz#uZU&HZKaTkNJdE#9=C{r$%9@Sp^S5{{r=&#N z-VjE-6_6pC_94^aB;n*c3aX|Q(p%pJq(B)}Jl5ckl^TKnsRxcd3rw1RW`DLMOK1YG z6frJ(zq$s~b7`?|pmKJ8A|A{kU2xl~p`UTb(;0B7;mO?B26at}R|@u4Nwva@6;=(O zpm!WU-}9vam+L^e-hnb-0-J}xl{uqhU@?Nm+d{y3OFbk}-*xT?Wuu5!r*3I)(@Myb z8s2KC2RN@!x2N@V;j1qKQ7`3}emBsFb?eY~duo3N$aCEDn+XzV(|0GUE*NA^r|uWN zwtR^=;-PtnSh{R`SUV8H7@45&UJ|LP@Z?{b0Dx9Igq~$YnmOER=9~sX=D2+1zBoUB z0TrmeN*aLz1Tt^DUp>(hhrqvz$zwfF-PPE{KF+1Nh)r@kv5*24|MZ}AB(!70Y-5ku z+HC{%M~fTxewLuh`Y8TcbopG~eE$@w`XD-b%Y7)}efOn{?f&}Z;`>zISMD10c9@sL zIV2CQ?U=tDeKzmE3_sVDzSlWgqeN%X_GO{u`P?$}C2#Q=E770*u{~B;<;zpPx>mAy z{NCs+pE%^n^A>!SiSJn%JlVXj(9C8$NM2i@f0z>Dq5Q}&W{7ZZ**e;Z%UM_B07i|u zRGV@=D@jBrn9LW${QFtE?g^~?1e4_rOv7$6Ze6ec1K z5V61RNVp^Gb%Z+&l>D3p$CBZL07X`>xYZH;@X6ot-_}ba8q4j+e)Thc9!unSif3ww zP}wG$rqV%z5+ad6>;Y#|45OBblMw=QAF2-{LGeJ+Y)0kKRenXKh1Dz~KP}@)ao9nx zB0hT73D3N;3J6j}=QC#Zm56E@eKXUw?g!T^)CYv?j%ndD5{x3 zo4f0^frIGGuVA^%&Y1NYc$Q-V_NnC1Appv-5aw1GG*R3962{->-g|`b3N<>B41gQh zAerGGXfx{SEi!f&C`8Wb(gQ0g*RE0{?12A#3k-if#@QK9-pQjpE2~Q_=Xn|2?mVP9 zM)BcfYqZ60J{J#72e6~P@g4DhQf8b}qqoVmJJ)JU7*c2n6mgH#3k0{g)dkEJ&xY@K zhnX`mP4DoE|Mepzi!CUkG*@iJ+z`fAWxIuEpMF;w3AUtfHAUc$Ey_p3BimHHGHjM5 zi7zeIQ7fvxRYZ>q#rSPw5fTn5(PRzFq{t+ntGi11pYx|wE>UcDxDlI*S*XRL7u3dD zg-&<166*ASj6YAi6jB4p%`4E9fdBRVG(#7ImJ-xlE~Se)A@VOTl$Ezc8Dv_vajbM& z`kW2)8Exl5+HQjf1aHra$^js@E_E%CDR>(?n?P9 zOelyc`j0}fSk3#8su~VuWp)bQE=s9ZV)>aO5akM~|EqZQu&#hC(n1&}&x^H5=wrrv-@ugvf1Sp;GP?o74>crw zIhTT`k*`U~ zyqT8!$UVZxZnf*hMcDUrz z{0AWz;U|G26W8M!n@EAk;2D3-GPMMI~c5mrC#~6{Ctb_sLpYV4npSGwzOLvR1Yzu zKA!T)303WQ5+g?YQnR=Xvq0Ek*nFg#Z`Yoe7ejVSGKQZKx}Dfjkf)V8^KA-g<$KXu z7yVF0s;VzVs2YcUNkOpnFj5hz==c<<$cTB|rWZ#iJb1yB6 z?CZv&UlZACe0XB`7u{j0m*d2*Rx`&kFe?*Gv4NJTTClrcY!_5MXX8LG`La5&S_`1> zPqu3y9^!DvyFl|@V?6Lx#?1jzaC?6v5A-0|m9|$7awQK;0UdHBu&$%{r8;Dr5}nfg zmY6XK)#*ZqjHSOS^Pf8chgRS=Ha01w9_T^dLofs=;x}PjsIzY1Vykt$_?p6@{dWuw zgLlOp4LZdl*&9tb0d!Zzqu6zrv_kc*EDZ1cDFNyvwLIqv4bH=UOeA|AxtauVhmZPc zr3p%o{w+|c%-k1Jpqp+hvadz~!zm054`T_zQyDyhg0wU5Ne*X|rcghYRZAPF{M#mj z)(`KY=hoOb2Z$5n`USk?V|eJn<3R%iLQDQQN%)&nb)SjTV8pPB6#)ieFgBY=GWW4sONB$^0!Rn63&)?2)MAu4*>XtXJ7IZL_wZh z02@GtZYlI7-$_A)W;Xc*w)(y8 zdn;5(g=BtArs(;P!K}%c4W~z=Pj~-4Ft@+3I5XtZL_Whv%WSyDQK7pJrqR@c05Dh< z>Jg-m@fd2!U~-zK^?71v1jQnK%d*{dMLHMb1kk3~GYj+|d^7I-!)>kAISl}llL<;B zc+|BZlKsDDHv$coiaoYVuS~b>yTEZ6pO|~1z`l_QARl(L%lmgb3!noY4=?1z+%u7t z-hKQB&XUU**ol37Pn;i}I2;rpnN5gWJyCi89&uhcKXMi;_8#2nn%uqom(BLBybK~t zEghW{ZHLE!&N-AH0+G?)doQuO=2~;W(EZI%eQoz7Yxn@5{z%6OZJY06xZhm3VGBr{ zn1bwAu5RLSJ6+?>>#B_NjrXhO?k5gD9*`@R8LZ!PG`$l_$>?E@cbunXaWywPaXc5=LGY$(PTFO)W>Cey)p#eP*COh4*UR`FY(L+9^R0S+I4godS6*Yn}Ye#wI1> zph`_>BP%u7^S|06{ zX`V&r)(IY=(NFeCp9eT^&bK!D-4ju~%i|qT)q+Oj6aFy~q|=ZmnXy-00Q(Hg$3K~0 z$tN`rMi&zb-5AnYc-J)H*0L+L5nj6i$_y1PsSK|<+1T`@G4LwiI||6Y_%=QPB7wHt z)bBvbj?dih(qF#Gm+q81{M(LDUh}W87^ru)Fzwe{X>HnQDsbm8zaFT5pswKoJ? zLFl5?(b+y{Y|_pQ{4r;Vqu0($`Lzg;eG$m+R|7M+|LVa3@?y*XPul@F|B98gJyCmI zefG!zFqPT)e67!%zdksX-d|+?D|dh79OJDynOXf|W-zP8D^GkarOTB!*EC(U6KSY| zTh0J)JeiFN{I7VA-3Y(?S8QLA?VE4N=jLbby1VoTFa+rijTt!My}l?n$BJAJ&X z<$4Gh-^RMovLhj)ccPo>C7Oj!M z%_*Z@;9fvk2{H)ldh7c4f7jAc+CSqEaTK)%oo#WH{?#m68`D*h(63Y7dtgIZF}~c^YISIZ!Xj^E1JT2lWan9TBun!EPSeE&fNUUDIST zWQGV>3ZJ3DwWei;gW+wPeX_p;ZlOZbb;7`k#o8Ew1Fz-9hd!?ZPtDuMf$ho1cy^G9 z5VOpte9}=|t@;JX6Uz86+&X?R9+`J$1kPK6is&lMIqa_YFqgyVYPR{##ks zLwbiHjMz*1Fsf;Z;omFl-v+O-uLd^c$}#EZ^myFYx7-n}iXXlaJy3zOecRgBh>%>) zeetHbcC1Iy%l+uT*h_$2EiKPf_8F({5;8$o_O>&4QM|y<5|Ni}&uy=JgqO^xUEilv zDbzu#(9j=Q^z%H43!$*G@mX?w$1&g3e9?(Q70=nD2W}B~t-u9R=;l``Zx-Q2T{E_e z_288^RYN35uA6HZnEkalh%l;)`VCRg*q*>%Y^9wr5jJnfAd%4UFyL8pYi|bn#3-l} z;x%vn5(NKkB@i~>0BE}nAKD;Q)xE8*TW8Xc(*ZlgNo)ht8XJ5y@?W`y8CCE3S9TK6VpmzAwcXiflvE zAha?{&Ov;jGT#eO(m@!YgXZR?vE71flfFEE%Yg zE-~ci*gF!6v36zuI1C3r^!PmyaHk>Rt`zN%y~xL1&9z!jf{RbIs5y!1($K`pU9CaK z_*vZKVPwu#?!cDTSZE^hX{_)!w{;;=ZA~g*uZZ_7TIPt$BS7vMPc9FTDOiw?H4w?R zbq8Mjg%n3Rq?*@ygf*>P{KoRdE05LL^rgtJnAWr;a7Kj9mtBCNNp{l{^i{)LC}p}J z+%735ZMsxr(Lc&tmDb4^UDfrkIJU67`f;5l;Hy>B_kBO&>*r%r^Cw3WM^jH5#T{7y zY_6P;;8kCQ0z~zeZYQ^w>uo>@&jDi63&}%}$UepU)7@V1$yaH*+B^|KN5}QtzE-)t zw`1#j@@8&HMVMzPS(@7~o-?MQVUR7qBSP2!49pyqYnV1qQ%Mv5TXF<=4QzFt`7Y#3P zAQe{~_bsGBD|-{d%X(xDv1qT^0^tn0Wyf@R3mOVT0tFn9z7{xM=9dBm6fem@r7kb> zil|-yeip*tKKDAk#4vkckg=w`Xl`gUzGh`-!!%k21{t97>R$5vUX;Z+WK)O^YkKFT z6-C7CknZgQ*(Y)7pY3m$o^aBS?{h{Hp(pp1@n7R(>JO_V1C&+4D+31BXtH6C>#%i& z7G!@@lWR^I0^Mb`*lNQ2Iw^7QEzOSMV~V5Mb=116`;F|_En5Fjs-6$^5m8mW?rS)^ z!%EWf<6WPG0b=o{@^5eblTku-+J9q%;3q(A10>(YkekzYcrsccr&rEW(1^6q)Uf!B z2HCh&8gEU52sn%-$+$#tJ0PZ8n|5&U0?aC5a)eyj%{R$0TZI1N{ZVO`)ys>{wvHES4;JW$hi}oCHzV=8gNBR!x0x?K>F*6K z(I|Kn7B$hJC8A(QGsy--jGTOylOYmNc!U<#Zgv~h)B7Rb zgzAs0edZEXIF};^jbzcY&6oGJ>2~P|v6I;t)kFT;>EY0QY#0L#h6(7$2@4v+rH6+K?A zeZ#-xONMyYCpf0Y9Dl%hAH;AViQC11XBm(HHAL{Odv+l%I+`-`t!5FlncDN~PD0)a z=w_M!C*8#W4G<0TmZq>0>=X}uJSNAL#qIq(fYXjSUinn1}*v-tgll$vZ|;=3tTwcCG`OzydAyhZ?c$tBNM zqW8D#Odm9*ktqS~{YIHP6AsB^SZ$7SMW|N7e3xYR_TLv39<|>tq@uZ>HxCSW7}V0yA8aUC_rp7pyk0s zrg-vb##n2R?g9?veWra{q;Q(7X<7mkTE>UqMdu*fWFnE2Xt=&-l2esZ`M4NPWNL9c zWv$oVmYeyFxACcE69uZ62v+I9Wx2@kWom$+yFbo#w(xK9_cfjnJm6J48t2g|C*@3P z|C@oW;4Vbg0Z1{?fQpQNdD+K4tmefia!_*7aU>@vj+37}+PSe0-{-5mQ_y&nqud0G zV{P5jOu@c(r}^XNc4ArdA6E@I@V^4-B&M!bVo1V~Vt-mOv$Z=Fxs0~qD6SzN^)D+d z$iHD&d+aEkLRG1@`{&Ogs3ce0)}ICe{E~)Og^&v+$u&ls)*&e@2B2poP~g1LJ&=g= zkwd2t+a8*Pth{XuPOJjUnnbSpj0!mcmdz(a5~`6?e?=D;ylk@BlS=)|Mceu#qvWPC z+Ny@xO4i?2d?K{H+!mDBOO9JrB{IuGjh0U-WBki$Ev_*J#-J12%zwfM{I=CWP?Cpn z^K@}xsI@r(!;T$n<3t~#5p#KoBh5P=(75)7?gZ&$juxGwn82!*BtQ6zPK8AL8;Taf zG0WJDP1N^Qu_$P75NwtnM1WWR1UJCcEJ4G4agW811AYTHHnzf#W1en!UlFo41nR?$ zy8>(pxgkF!9iJ}R_g?d)koqWGYNb(|p5I=Mf&7{OILoyx^irw%2PEiOT{v^P z&qP&r6?xVBi{%-)L87{vCZhNbrO{0!M7M8rvN zB zsAGe`4tWqAefyT(u=~N5J-{LAQgOYGe{T3ml4xBh{Cr3>hvb+uc0@d?AF|gl$DVgR z&GE4p;3i=MJg-C{lpMj@d}Gy0Q^02~3jOXe!w>XRA>k&fy3fT5E7TE+s}W>JngWz!)x|MOb_JD3@~WzMq$v!%Io zOe@W4#xa8ILp<}WqfBB#Si}5Ww=cT|ULo&n@J$hys)a>#Jm&gci6Z&i<_&f4h&Q^y z9`fJB=7I%DR+d@OGG6*c>=mDW&AFO1ihfgzCk^*`S2|L%mo4y~5sMM@BLzigu8q1IG1_)n^0=^OYKI1e`6qXW7ZJ%<_J+ zfen@Nq!4BihmgYvuD=kj*Z}LTN?8>{t{7PTC9aB;)z zg$p0Xf_W=A&w>$cxjX;NO_7bn8@F)7alGhndkuM`Gm1v3d5?|z1eaM!%@kxXE@2Bnd+d75 zg}P-JQdLRcOx~1aehkGCP+I3@p8pvPe-K7Aj?&ux%v0o-Pn6BHfAeTUf)8B4{w?rhOPA=(h8Z=N^Eh=ZBMh%sXPdZqa!dg2WOPAk;w-QErZj{|dqH{KJ{!cMuhgUK1C^ z>3bogAeDal7ZdU;(z;3%_vgWc^n}-_2_v{z#$Wb03BLOMoWKxhedw#e8nRF-r-dan z%c6PQN0s1NZ?EBOblaJkeE~bqZ(z1X>v)4z=})vr`PdPl#b{(Qq9pO<3hj+FXN&0+1NPH_VA3*(w{UUGR;2p!cmE6$%rC_CqZgWY;>RnZyU zh6@iEg{I)NPrIirYHjcBW1H$KSC%ptw6;CjV|1UW;JS{dSRPFMha=&Uy7reXsygrO zduvSS>LEi5;UWJ!68)k6DQsUQ-d`=(Ea$Vx1#O~*gwR2_@EsKwpHZfNA_R|+%CS2Z zyTHn?1dt#8$yn&o+WI2t$yrdyQW+YeJJ%@3U~G(ehLuo^i-1MvIe}8?&-3do(>|Rg z$)-Wo%RF#$BF+;mAz-Yx^THYO8hJtcqA zBCHdhdzr~$1sEUThQrf#KVHILXi`}A#Zf2-BaG4|wDlH_D$I~$GB?G2F508Kj%IMo zY@CPEtJ$XDv+If-Z(23odh5avXBt@dYwv0sSHiIdtTAKl>Ho2~Sz%R#C2+*r?fH`I zg#I>IMOCaBizWI8;WOayfGhS+&=K%yim2+jq_${^fiNgEk2eO&m^FS&e)G@2OXhgY z88d2z$@gam6rD^N{+d)_KihC3*>F?04=&`2kuuf3XigN#fy6C*^pqGNRclUv~`7}39#^7i)WPmj?{Wr1^ zk$WZDZ$8}MQ2Y+Y`V1cHEKO}Zv*LAbw*Da+v_vy}vw$QE;kZy$y*}ggV+)kKM@;B2 z=$~XK_x*cqPDcagL$H)&R)66C%crD(t%2P&QoJE%+u#^QRJ$87F*3-&!LE+1HASqj zU0OQJ#7*6ufRC&hQLB`jw?e04e?*Oc2#|O2c}CbzmiDt2D*sLU&YkEnIps*u5#uPU z%XKEByhYM*wQWU4B_D?^e%xo9<)*KSz z=mRMSY`f|uW+IZ#`mnovM2-h83X`1VPMf>L&t)Ef|szj|BO8EdBDDgSl$z+8KU3s z>iQ1;6%|R!dx7}4_7xzyiOlWz1Rjd%Q_mUMUZb^&qlDWFpMbwWxYce^-4H68BKXOB z=C+UBOTEW_4wC2{4DY%LaHl^#ZL$8|!4|whgHzi{CXeJMXn(#xeLNgI97nr(Dv89i zdzwFe)V8w+XWZ_DteKW)+74*3?L|7?*}FTsJgrbaX6lWMJil*fsrmY+-HCE+`25tq z6OlU$zJ==Ux`F(%&P4Nc)ovY5ZV>;QXfT+X`o%YPW^flSga#fFNTjzPviRb%;yZed z{{+3Mygj^Ipgj@X4{jG}k@fIh2#REDv*$DFy0#)Xu#1tKPQlaPC|03|`Z5x$YjBU* zok+jy^Ypj{)+BjLlo|s0Bl<@vWdXhDbLiH0J`cf#bH`@aJTb_!Tb<1BVlC2kallDH z%Nu&C(7zru*pmYw;p4stQxxW=kgeUqxnrzw2WR;U(2fr$N?bV*I89l&`Yq(%_eV*A zKl^{d6x_!VWGDGu7}9x2Xm0h;#!I+QSRl+193F8&S7EDqWeMTA6H?;0+lx>n@_du3S4kKozBSSZ*t>g+1sanmK*yxN z%e_lfK>U|^Wc}zm4Uh{JXKMQl62^~8VxsWL4?+&>mZ&?3*&}uR1uY?dlQ=$ z^c@J86x$y4k;^6yi^b;-!QTQh& z0D3Tub$1FPk2<3x_FyDnz9O=-x%G{yZ`BJWw!R>#MO@q0_(alq!0Z=nxZ0t$VE2W; z!iF6@bp&-p`r^nk{>*nvY(UKgBF|zu}XG ziAM5n6z?;P!qS!OqL4#=MkV+M5Ig@0 zN3|!X+N~TPN65W@fic16TfGgAMZz6Oho04k?fnG0Q&QIvRr?qsm<(@fD8z9nGL)se z?@U&c5wd5O#BA<`evfB%Y!17eHgnOXQ5``1H~h10q~BvEIDZ=hUWO_@TeDW8UiZFf z7TDrde3M|kIrXDVr3NFePIBC{kme7gl<=5MLy=k45w`2C@iJ(t_63;OK-!EnT0g%L zcY4Lqgq3Nu(m_5mEFnnxuU|qc?8k6imn%*t<4b~!`Ysz}2xtr7>g3Wm#}9oULdF5d zTB=AoWGAjt*nD13k1G!U`h1JgvlS266qsvelJ6$yq}kw@MRGo|z60h1OkqJw;2B>? zh#l?7rbIciatUEY>|bs}B519}NO3}hoJ z6Q(SaBgOcxAhj%8zDTPUn?38mx(%-5+Q{pfmj1$*r!=_PwThxs2`JU?p&dVnMeq7x z{df*avn*li#UC1hW|mE{_K@DS`&L&;H3UZdaVU&c^y8m!6Cn*@soryR6b6HkJ^W!O zH&F6kb{x+xV=1@(v5{8_d6gQLF>cA_ectpvC(%h*MDHDUv#?F#E})wR5vLX%fBkvIL>r4S*_=8I-m8fDfd!`S5xx zmqL@756PeYl;FrfaT>D(O`ufFxH*I}0#vCitDr$_*-7FtyA6}&rxWxU8H!??yI`>* z+T9Uja=?CUcxvRVV~o5|%h`>nQe4@u%OL0EF)qtvQwc?!LOj_cJqq&uie z)C}$q!rw~hm3Zi_2Wu4x!g$wvC~n(jNau zQ^@2iD?7j)_YIWR+J35(wUjgElTp0IA`fbEfV%Y%74`Mw32T=E)xXET}X|p3MJOs%??ewIT7uEe9=`Dg#UQTzzoS260(8A#|)PDW~&0dc*nVV@1aN zuf^CgLb%;O6lFkuVk^b3g`ch+IKTuo9opA1!iq^HeJ6S*D+ z5Gry^0S!NeJxH%&d3@j>AGR?>UMad7(aa}6wlB(t)fHhDg7MPBWy?r_OB4$>g<%wo z&gx?K9|A&W0DN9K;&a&^{TpPgYfho`wDm{d_UOwx};uxwoFn{GF>^-Cp%4WKC7 zj0xx3Oc;^X;d**(VZjYQ7ZJM?hN1T^aNF2q6Q+LM8+ZIyemyNM!^|)mL0P`9L>%Zs zHXR2VsV#a@&`-UDU#v08CuS)1>z^T2%}mZ=824xu`pVC@_WTHX64S^nR?wXC_~W;U z!9T8#ZHu;6ElsmqSWM4tm#jEFupKvoA<4HhSLd$@X4$=y1igRI${Q0?W;Fyt`YMj) zdpBxwVof#-B3=?~I+CWRe3E$7udc*UdqH1~Gmt)>Vl6XzxV=B+C`rsF(vKX|Yvl*% za~qsXgqP1ekH0e{IO2-U5@ptZUaSiQ;9z1tEY#IOUqwcw%F+=&T@o1$k^tEj&bBoE zs8(?yr>p(^SkH~?!WRbI{o$z->0(C`p#l+jf1SvHXTBOrnW)=JRaIwBv%s0O7@PQ^ zgOcu0#k+^>wU<-eW_o)Xm;aI(Jy};9aLBKEwYd~oN@4JFtaGo&CLO2*j^Z~4KNI!1OT^%S}M=ye+3vEr0`uZ*a6zea)#Bu9v zJ@Zho$I!6xU5}`A$sLBI7O5yq7@@+{-aM#=Oe#;PP@-_PE+lyDe24Hk{e9f>!p|1b zl>Ki@{wQi_-4ChXv17ZhriaZJ?z3K32o-~;)e-mXk7VA9>Su6_1Fcjk>bVE4n&hFxmIb{*Y1ZhzdnRPMuiB>4b1n zgY11}v~0%fN{`e%Uc;^a7f#FI2B@~7^YYkBV++w`w^LUrF-@-;Iz49XyMr6QWdsUe zvNN=)ie@OWY{Hu`A+1RHa3_1^ib)>bA-#`g8iVDErw+MJCDW2{N)G_oTTsB;nCFNp zh$f^&&qRPl2mj&f>*s^U;3!Q{{JxbjzOXX%NpR=wv98k z&e*nX+nzJFZQHhO+qUi5x%cgj-5*_v%IJ!YsHpDF%r6t|9!VBZsKHZ=sAG>h%+yHT zte@qUNNS1{g(pn6^8iT_Q?gIYv@_V!7vFeBwMr5?H6)xsl_W{ddvLlfq_E3oszj1) z2a69ciL6{~>f{>p5Pk*%q$bsS+H4UOPcBF1Qer$+r8dc`MY-)(hRH9}+2QcDBc$?Z zutA|@ZA&r>n)N}>=&uIO41rPUtcmhuXo_Y(%S2h%KL_TO>=4pg!<=+qqXpEfvJP0VlB$hAk7Z75?i%dh+jBF5NmRnc@=M-JZr`Z!vA>3x9{ z>b#;g<>Qm$Sk{Rh8g?^2__s}REM1m^3@Nna~W^%=0jViRNX1BBXz%ToMohRGi_T1 zkaw^BRqe4v=tBup#>IhcwXKAfP!BQ_`O{{+Q5zKq>()#!L4~FSRL?Phz5aJ?Qjl0o z7ijdHqpw7lQb61I_6oGTsv}kC9638YaR4{OFLg8k z=8^ec>X{cd?2)D0-%ZiAj-yb$8mkT12jOoo$r!}W%#QNXtK6C6jmGa; zgqB4!?3vi^qx+jrx?Sk{Ujud?I)2(UdL(N<%v;R;busNwUV4yt91sF^mU7*LHMd9^ zzFjsAr8nZST`-EG6HS6IKDQvy?R>v6eL57gsfbUhXqO=?7WmYYmw3^omLEf@44xNo zr7?zG755TV7B;lsm@+jtZ3_j)z)>};NBd|t@Frc}6zGQnpzVFhuF&8qjoB&UX*hg) za0Br_X%XEr%{cEtBE3EbI)U=iOPDh@77C29dNG3@*13z%g9NZIMtmnf(-|NaTUmiZ*=bs5Bx$eypdOWxDDNnlnzK}}xKSRg=^i#h~%*!kB**JekPhHprR!P)LFFT8vBmDC5ITXwH zObtVb`KWZ22cIDvk@`w7_8fFkx7I?(fYX6C=g>Z4;(@}Djr_~S6yTt!)<0s*LyX`W zV>0Bn?dM}HmJJy>P`EAOELzO4L#{YP0$aScSRma}!6hR&zHC^ar_>gWRk3B%hvg;T zqW08jkyqb?BV{w?CeD5gx?}5=_KBpZ^C-wFhn1q*I8{F(Sn`ovCC_TPoq#&Sd-*n< zJ;mKrfI%2rhEGu_>}^Az1A(H;IOu#BM1fA6Gylv1iVEl1&!tL=K!{+5S42*3CH9P% z)P~&&paM-1;muvDrco@d#bG?_z*!iX6`9YON$Yc*aX6j~-jB0P-ZDdh5t zxv2CKt78n3;9`Tr){x=|wWu(ZXBDad1>TXf)?Z*hW*PfhOS)mM}Yza zyes1}vuxPM7X`r=ebg!%BMv<n&{QH`n8hH!MAd`R)BN zi*>rEwM6!*uk&cqosAuX$?CbSyQEs-NPq_Y_!h3)_+3iCARwuQ3PQ8rdWXq+yY8%u zi9D3|4;1-4qM}~W_DGipT^>j?OAs~6t>ZibQ;^RBeE`5yp!|4$E>xjNI8ME>juf$O zWU-DUp&p1~g|2U!!QWz^>0hE=aD(2Xu(ERznPxATEIj-~_=<{daI~6i41LPatbvAd|k-l|{zhoFgvS#41-yUB4aW&;o+Kt(%_j4(HagTuoyl-|@A8(nJT<^0!NRLkab<#+ z?U!p@uP)%&9R(38Z_1wq8{=V?ps@oF0p$-8F6NeSS^$V6`;$BCWvkb_-r>FL`?N5} zl>1kJz`#o#cW{lFU|xSM~Ob{r8S7%#k;_M0GB-*$z&QL{Ia*cXP|2pb`! z;Fk(fg$~H`1#hQ0BZL_G{mL1DF8|RhNrnzUj@kh+X8OW_uY(w|_n9hL`_H8AGLgMT zLh=~;&)l~BlHEHODvxTekS!D&_`X z*8jcj#s3j3JYAhA>h zXW&#s5*{PSm{ys0lNo;$pypgtm1G67%7s%s*4&+Cc9Bu+P0pw?ZZE|Tc7p3X0@sOV z$H*@LMA$sErpAPo7jx|GqVfYJ#==l2M<2Aqrocb>NnZS{8m8w%W8$Rv)U8}$#)UFO z6hz79uQTB_5jc&{$mJ-y5$I_46VH~Up~qmoe;hOOLVQ?sMYBMRlXOuqO+b05aYNb(lIE&aUQQm98M z7>TL8p64dlpdI84CUFzlGXrbn{`#&K0gpt$p&f>s`(ht@M+!}>KQJNnEv3>!aZbW& z#bp*H4mig#z(`RA9(xZ<_g#xO#a;4L-afDkJP;m|sLt|xktOfn*49+m<>{SPT-lAR z9|`x1*j`%jA0q&-Hg)}joO8Kt_*l&hciVpLyn%VF2c$s`HZ2c{V}AK|esWvb)cOJT zkMYl4V9Jnm3dHEXLK~n5hoDP#j|7L9PJGj}@EM2JZw-?VeGk~zBg8ib-Q}boS%P`8 z!>nOm_YY<60HaN|7}g_eDh5C@M*;eb7-2ICL_W^Z`Df!w#F<+y+=9;IQre-bwAJql(~- zZn3$m!SyKVf&0S^eWSHqZ*APw)D6~(_}LuekiaoPj-~uFAi_KDGzRK|#Cw6ZCAs)G zP7@QlCwjUqNX|QmI;ZB>;x`S>o9;N3xOHY$`T;ZjqcUs6ue0C8)mV6KFPUph(QzV< zGsgu+78N-tDKEaMi_vRY$Tc!tp5@=$N>b2vEFUM=v(}gS)il{PcF%9AYW+fmCXN`> z`?%%Z(4B5)S(ho;S^uxuecT0pJ5HFV*;BU~$Ce6nxc7`f;fPz+N>q9;Rm?$aiwG6{ zwqb(THVpO5B+#;?jI!7iu4oNUu%nVxoo*>g>(eBdUvqO> zzB-a#1B(WBXeJn7M~?AB#C7PmON46yolwwRrCpo~+|2f97D3sw{)wCEFcY~X))tz& zXDJP014Fn+7|4QX;rzCg4~LETLt=Q#Y!wyF1A=hd7OH6pzs19!xFAF~V*#Z;=N1-y zweCV*6b{Y_^~u2F#S!3~wN_D* zAiZ2)t-j~mjnod4jc%J3RqMO1#Qp$ze}6d*T)~G*mO`H5EuGoL30uzhhu~skB4mh5 zt5XA8fbnIluFLzqS)$tNKQLBm?6dlo9G7fL?}Q@HdGzq*9yn|w^u!AKo~E*Fv-(h+W7$mna{@sPiF~R8LCR!6Pm|< zumo3bnoW5e5hu*ysS1umEB@z1rVD6U&8G*}bG{*ySARvEZWJ9R|M8Fbwc)llsB-B; zS@#N9py$y8Q;d{JJQLnx(%EZz4xI@IF$SeF2D>RzYzf?eAj@}8S&SjF6N=53gk=yX za*Bb?=7ygpo14}Urb)RSG9(6B;Fm!MVfXP*Uup)nyR$tANB@~)9{Dk)CQqkDj>N-+ za%kI0bxoYcl%DfeTSl#vUh&V|me0m07ZOkn&W|#i)+z_56crU%9^rCaaOWasyTEsI zVM6I}ZTR#v?dc+9BxjSDrQX>L1L5Jkg?T35J%n>W?ywxWf^sbE zy)G$|{~%r@qErZe>1)GE-6z(Rowj*p^dd85uD)bhZq8#$G$t~uLVsS(`|x{^soLfN5Ee-K!LLvJR5$H6y$AD^T5} zWb*f0XTfXg5muhn1rWwvu&XmsqQ=qXNw+4{;0<@84^5Lw<1ew260!#Na4vOF05kdq z%;in7Y|~61aPvp2d4Rd1aAIQrXNGvuE2BQN1Mr+Ao00lE5S}RAPlXm7gmV?N4$4{l z5x|k4V>$^nAmvnrk6xsTy=X?knmFlic^4l%EI6%XhrR_OZ~kmhspVLBLLnss3C*2T z(xnVU1x1mk;(E(oVT}x22M|>Gr3Z9!^3hM3NoaD7>`Eh~hD}#zLlQdBPr?GAL9ZYK z>#h!vvr=_K%a1Rn!;A&h(>-QhH_-OP2vw=dr{NY9z|WX4jOf`l^WDwt6uL#Sr^`fY zXhia&+!zk>8O&sFbjob$h#kk1i^Lz`7GLb{GzAjMub2P8%KRozTpAs% zy93Idf4IOWvpv28r9RK!1TmQ~CVGrEBK#az&vT9-knjmI{b|pO94L2$1~45>JDRGJg_kReLI9T*?hK^fL2ZCMSd!v9B9d@m-JR@P zJ|z;8=9|_}ir(thsn-$_Oo56;i{#@eKc>)(g;rW%6dRZ-+>doM%eo6p-wF1GpPGBS zi=<9-EK;!h5wR>YFg zFE?%iq<4pr zGSWHjpa26MDV88#Hsx1>&fT7DsL$Bv@&+Xy>0LL! zw@OdyHl|GlNDSTL-2g9QlRt*(FvNYio9}XPC5J6jJp#rybXz*AxLWDj{)ur7w*{Si zs$q#_|L6uchKYK7yR#T`Iz^9gCrue7)w<2)k6QkHmM40pif`it0SQb~^Jj+1O^XXY zb(?FjKXWvc?6MLcCE=1-k#vrW5g(sMF^gL&x4s}wT;Rzt20YB?5>b6ar*zWCx`Gdz z_IT1i6xR%}lrkhp^j|+%bNL@rr4-?#xH{@l$>bv#fE=1*XW)f}icf&@GRD6i3%YqG zB$BDh4AkJmyC~Q-`^G&*0TO-)6J{_f#q-|s^W}N6Z`_<{dJ_fJFxzeVrN#lSRh{VF z8{NRk@;fVE5;mGP7esmGvnQD+6*_F|g7?GD2f>?+F*#&<$9!&RTxw1} zjCJmTqd4kZ4Q)TMk#WiY9=F!I;BHna6HT?Bk$NS*%hA~PcB)K!Wp%J&)sGLM{9O`3 zn;IC5YWMZbME<>|LnbTYBjCz1Rg(BiYW6Rm!zxCl!d*x1i|=<|-Bi2Ro-?XYH0(`P z-!R&8?eS`5aUX^M89@G{0ehR`5Cr-YLh^~YL4)xM1%9xDUr0RF=n-ROgtX%Q!v7I) zc^wyWp}3{}8E-A=`&8cuja;v03&2b(YYxx}=ESO>Ze`40+bR&&0d<;w^a2JEMZt%z z=5g(JCrB)b7&L^yErBvunjMr}3`HSY z;)LJYi`Jr+OI`Zs#b7H$n}9cK@g;<;WoO|qyecZ*ap)h!vymzp53ShvvQyiVR9u1S zu@cwEWy_DtX6@ITETYE`ASZua(>`x4BSP*30DELl7LziG8o%gbR~>1PX^-cZY0M38 z5x!OIoN3S12rE2oS3buo#XV)<6l}L5v+FdqcpOrsE*VEMnTE~O^ zy(k|q78Kf(8y>i!5CfUp4Rr4?nrE@T+sylQt_oXq1#{ZE{~AIuI9?_~WSL3`9;9jb zWf%*Km54X}c47{u6l6@ya)~U>-rb2)l2radPxzeK%cZcB{Oyw3LY9N_JdPTw76jt&dQe}dW znX%kE9s-Vm_LSIckVE7(^BYb zA(hl&x@7@)g0HPzdZT;49qlQvu)q$`KvUsV8|Sd;3o zY1e()0Xw$^GOvHZHSXeADvmFsCj>|}P17;BMm&JcNnTqg$lT#ug2;0n9$%|00Q?6kug&zK2Ay5ZsV{Qi8q0S5z4>t}}N zK=uoGyO~3e$Cmu+_j$X81MO>&QW+czZ`}~lMAW_)F$e9~5mRQ9?5kH3In4kG9XW;) ze(evgzrf`r-ET+`7`!FDrfJbm$ZD-`rDMt`*;CeP6Lhoo86h7wB$Cs8w|l$F1AVFv zI*D=iT;T(A;%%N@qrhm(oqdUgo%$z`AIOw9BU8h*S$MU0X+mhqH{n#hoYzfbScfq# z_VzcytPZF(#eBf`bK^`#ce^r)X~~wTo1XeCv2*%qif#3z_qro* z%kp55^Kz#KvmX@{AH7a@8<2>tVCMTU<_PNF^o{Mh0@tr|3sbfL+kWktt%0Xue9&z) zZ+p?zni2heRrX=oG{_8_>q@^X7k6J?NE53T$*K%#olMEHDSXd7HK8$V7b;WuyFAou{btn-WOk=+|Sz?SY#pSNe@CtwG! z>hn8AZ=&`RLtpEGYOP!!> zDD)RFXz;|z<6-M`?8O46^2M%6!;qa7_w`K%wv0a$Y5x8wS2`>-3$5s(D3uFr3oQGo z72AY{{gl!Au94bMAt>w1Q@;5QS_fAfOCuNw3y}oE$&jcm+{p6NNlDl)Ck|~i(AWA+ zGZ}2UT^`O21ShTWxFp`F=UyhuxYU6Ns59bR9qFx-goW*@7 zOdZ~dAAub;g4ovQj!b>egQ;arumi`~j%GE?ZCA{D&k4w!P86wH5$*O^s&GenQ% zwAoyA;B&S z)E$=GRf0*=d|kb*GcHYVp-s+uYp_~ReF^P~^TefgBlL47^6>SdXVDDrvU+dP-#~b@ zrE%nuIP&@C(LXa_fJ%^aPHFT>bH6^-Cr1Jq+CRjP~I*eY@K z3vVy$!PA@zl_>n&RVh$_u4DPiXKCRU29|=5a`cojN0Eh*;kdaDZoP1MGqXEZO<|Rw z0Hz8Q-BPRl{Fk0rQ=AD{Ry3~_TG7Ca{+09fpHk}mL$i=8vKLH4S$0n?*E(;2}Kl?)a(ByYsZZI-dAe*5bL{*Pxhlv6bh{hb?T|& z0#f6Sq);gaW+|%SLzWgh5r6>80kTv7U+;t>g|feh70KC1e0Bht`9PFaUDvY;DxR(? zyW0nI@h6?KX|N=WXOB*@z$GoCl_;)?6}uhT(gV5ikLnD5Kwd}vH+q1nb8F*2<%OJE ziq^aeRbIDKrx ziz2oxmKlD>G>cYX>#aNDcD<+FaM%?`#b}yYu`6G(6R=%1W$S!JzG$R6!TBT;N=3sh zfEpd@=`<6l&X~fs3cq^WDj=~&HmGw{G{XwBy+=){c$8j=|3hlmOq~Y{PkY(;lGre$ zw0vQ9=UWs2cYap{u`pMZZ{u!>#S1L}GIoJcv^CgGOW^FX4 z!pIh)JZM}h7Q46!K?(_hib>LrEx{NRE|o{5SQ=_c@nvVueSffNTqM}DpNOU!B{&)S zL;?4K*jj1;6n)JgU5k8&SIwAeIWH-%J^7kE;kEfJt3X-Gwc2qZv2tfZ+{`I}v$%&@Jc#*%oJY8TiH5iv}Pec=9n4I*JirbJBr`%{>F_Q!b&&GSPid8oWJg^E)Vkr8P9WM1Z6NFsNNI&c>iU$%4hM5tOhd0#Iz0RPejkP;>xV z9>+}=)_m{lcA@B98@Qcj&njaSA=HQp^mZ6|AoYg5gSRc^jRyUqP2a_Fv-BKKXwXT$0UD8NT0leA6)A^omKJ$n9(2K_D)h3i|97sF=PD-VZRpsHPf zeqUs>1T-p^V-Jg4(!BRvliR`$#E0se{^N?x62$HW{=wqxgktI#O;&Uw(bbW%D4r?# ztW=)sA7sVU)P6;J&=_#?P;w)V9;VOSw6VW; zfzf%gT>ATvRnHXnfvyVY;Ly;fB_veIkTGP-^mV~uEKbq8!prkC0Y_afUBh)oF2emAMkZQ`4^t>IV~~d5ED{s(&nL< zJX1~F$3a!oMbXUu8loUYici)H*(mx#Z4iF{sA9iw{5*7^|Kl^zT`1Jk)_t@xC2&egdQDr zCbqQ>0pKX;=dw}bCU|o;7>PC#IBG9PPKAAv%(Y%c{N6l9Aw&)*_k_X2m7-#FYBEF& z-~}9Jek>Jcf(g7%iZt^lu)Z0`UV_s_Br~ep?j1ZT1ExOZ+JIb;F@*@|Eq*7&Kt2M8o_8hZ!Y;??2h`bXV& z(6PL{1diWYDKTOwUb$IJnru9y;GrePQzB2aQnRX^63}?rxJM4$GVYAa^>aHbM;b=R z3B04FJWdq%a@-7BqIQDBAASi}>|l#%+3;jz`-oHK^11C( zd_b2KkbQ8%=>z|T`3pjQ99U8jY9{ivo$+Gz`dN+td)nwUCtyKUE2Exw9{O`=8#Ecw zIMEOUFa=?ao1qz*Txaw|?FwU9d#w-AFLB5%Hjw3CKDY4e57#FJAy)P}-nIYuyJm8B z^lT#=V(VF=#Wl^`)9jYN&S6C#cQT(G^o5|!1 z=It)+87}pqHAvM>Mlt0AxJ2W9&-Teju5SAlpe=@Uxszh$2^tKN_EGpZ$InQ#ej%yP zUuEZQbU8kD_GpC7E)rHAuAH=^r~3+)A5UrcYl$AK!&`|Euw^N0{yuR7hZC)J#G5dw zo7?B8B8}DhHs=(qW#7Mw%$m((2dxGDF9{obj{ktI#V{ATs})-(jlX~Uif*2e{SJsO z!&U6Pvra8GF>4w(mZZH~=@_?gEF?+8M;2bXR^l$Q9XM^d!(M9JRR#OJEyth%ObVk< z)XLq#BrzHoeSAd16~JiuyOb+QSx-Z@HL=m8jv{dx1aXk}fH3t9I7mVYfexa?{JF3L zylt|qs0_ zC>@{gR=G1-L%bT=J|kLx7(aSZ)l}(vc!)(`5-%Lm_38gCKHo(W5j#n@`If2>vT%&2 zRSovB=!Y4ELa>PXy%wX4+K%GqI1BQ;o#f?wOj%z1HA!eM$I^9D7N;qBYPlLcU1oU@ zRvz(eQ4yVDH@#ZVPM-TSR1nYQoEjMsPg9M^iJ*5l5u zrfl1-Wclg@L(=Mwc-hzl+iASIrXb}lDrlB>2wx%e-rD5u!d3IeJRquziUJXFmLT z2w#gM)NVERqI)0Q)XywN5N<;AZ@Ebvf9JuGtu_a&UA_@-7ze!-Q{c1k7%Z3BMI{Rs z?F_767*Gb&31I?ZtYR~b!N9Pkd1@n7TJD40+($7w@R3cGG^e!a8Y_W7> zsm1arLpD8(Sinv0?6h`6ND8m<9Z1DY^}9P1G(Y8Yh!lr z-<0>72$tO2jzBvas*zfj4-If$)x#a0fn{>?sy?Y;TKCZ2RmSuHPpl3WV##h79dzQ4 z`$n7uMlj?$B>=mQX@o`fh`C6!jJh=E|Ejpn1O*7#Q26 z*(UEA>N(32qyQIe$9rE*5O2g90-h@+GoN<DBY>3p3)5%NFS;Yzo3?n890s&g;J=%l_897bJ(R zr)lgG4rwIE2DQpFfOkZ+0LtdZ(Kyoa4&Vu}U4}+usRZQ!g@ej*B-#nq#5KAII>DZ6 zu{#!_ho{BwdtgL6^dK=#AoFP#`q`w+28X9)rV7JqC{UvKVJmZE*=<{*LRwf{b-ZVzgz> zI>-ID0#oO!L>M=NOKuH=lQ-DeZ|qUekIVeljqA8YJICtHi3Sn&jb3AMNlJ&HrTr@6 zrbrMoSa?;euLAGo0A<<*9yz>*Z`aIaiQO}4xO@F(pPs^S!fm-6Yvg&vOtYtIG@JA} zXY+_iV4O314)78#yn3&Z>ujj|?$oGY==NqJiw8L)xm1YuDl z{sb`o2H;5DP>9NjuvXCKo>=bNfeOU{8Wv6sln#sm>yo*i_!5K6_)IcWfWKcAHa+me ztiE_Ixt6@1uiS@#LC)l!vi8#e1yATo01#8=X=Fm91e(-g5S1fIq=<1au$&TYW6}%2 zdB6}Gw1kf-qgWS9txP65l+Q9echCUnJ9tx!;k3O|u`_w$BTYr5UxuLXdv<(Sf4H-L zZofZte=Pn1-}qu8f=)x{sr#&)a8s>(yK|oSHd>5cE-T1RRI z`Sm(3TwX|<7dvi-a{W|-M>+!J&)BZsZ}+=7!t3@tbC84PCW%&G&Mr%(Zp|1tP#l1^ zNnu9Zsm}>Z5|uPoHPw?MALD+P1B9R2J+k`x{8w-6~1MKUu`J=Q*sQ& zx4<(vDV5otbM1K>`FxcX6+MRV`N=4_LA%Y-#s4{b#lH^O!NJGJ_5L`zpsS{v={Xts zc~wC-1?ZmEDqkYsmcEsT~V?WuWQUm^&IEo(1D3*)GuQ#5r zoUL4+^_KJ#Yc4oI?0?Cpqi#=$NK+hIY+Ui#?0TNA?!UHiEUoD1s45|Uqiu-ff2A%{ zHGAzXG6RL3b6vRU#ad+oL{ou6m}xTLWl_=$b!j`{j@us0-@9d&R4c=n(MBT>81Yd! z8GI0}o$oS&d{STkTm9q0N+qj4rK&t#YmDPEM44k$!cl*p{|nYz6<08dg6GReKUkS%_p-WSWBH{KmV-!V%Rf&mV#N|ahhJFF7QDVn%-cI zztwkPw~qp5*Pvxzls0>4nTFD3FJuaNv?Z}sn+6zx-IZKNcUm__ZCRsK<|Jc3seTDX zR+QyVt;|%j+1IMozYx3~WyX&Qk-SI(p`|;Ea zACOE_R2+=eilHMzzO?wZ{ZP>@Py}{2u?3m}vj@pCkTqb^EpvyaUFkK)wv;ap2v*M2 zU7k>_XA4~&QBIRjS`60F$jX$mDE?&%n$2K|K?L$$y_Qza8Nd{uQ55Qk>*aeZ#q20J zyTobj95%kV-9Y;sLU>5a`6OqvKs$Gs4+*MOp4zVkSzFaVY%E8mkO?LMQ~vR?s4w6ll1Uzc|5jDClW^=#etEmyWF z^9o^;$YSN(fBRgEd_@yG7Xg?q!q{I({7tA19gSSxAwKG{?EHxjjZFtSrf-ihU5T5^Jzp9#VXa(?*{6% zYu~G&2^@#YwxH7PN|HgyBqN77okGxl72uwqwHEQ&?e$)N77r0a~UJE(epG>0Q@j$n>O{k+Xo?0n= zOeU&3TK`1WTeY5lPU!M$6%k9=-c%KR;k9rEOf@?4Ghu?t3*%LMcGkx&!ijFPbH7LW>(G$_(9AzRt z+hii9D7!wmM82%WkEoWvZHnbk+%;_UsD~}!40lX3{^p#a-np|fMNyw7hz4i2m9z$1 zxIz)yd83ba$ezIAxUgx#qBi4?{+?v!Cetm;vq=Wu-VP|2O|=fK{LauH%jDu5OUJd2 zXCYT_xCxV0T7G;*)wUc@bIx!NcI%Qp@O<*st+-+&^}EB(pNY|yo)i7rc%An>)bxccDDB7-UUQYx74q0+$srB z@Z;rJNw@TDTh;Om)pWgGckbL9arkW;omzP5`qIvNwI%C#6WksK?y(4^4&i_fU-fS) zjceGNi?4a23}>GQkKltMXWlm?F(@7e#bNWH*?~*D9)$k2In~qZMpV;G$Iqw0!I{F15#vI1{WywU|3nw4@nE<&4q&SFXLlK&ViE;iH|0QTKmJ46Q z61b3Mv&BkFk)i5 zE@fLu6!-uxS7-u+AW3954sm*^?vGhNu*ynMuG zWje<|koN&XUM%S05NiXgWql1=NYz6DgtUz|fqy_gzsXy+tfsPMm?E6rh9&HF#4DZ6I~o}7 zKOnrLT*wFovcr6^K~cc8W2)IuMAcWsx8O5gAKSyUd$=j{lbO>!85K~hSG?jP?mTV+ zvSIrMS+&C%%hPf{p?S6-(>xlBTpQDFr)jt~5je zV=JF0eN|xM3|R}ntQBI++{2~7y%6;PLm4nl{pfUH&9C5k}}c1w-rjco&<%Ms=r5 z>$x!g5Rz~`jeGTA;&<4w)5&FwT+*hmrgH&bQ+rZr`FM*o!g^}QHo&4R;FRttmqO{WSas^c1o zQ9H~pDbT^Y$|w7S7SAEVSku92O^ zCP95QJ~LdcSezSj+B;8pttRP(llXRv_@Eq;;k3{vx-o7HyP@)(Ese)7(O16zm7|IhXXp3~8wc$J4FAYQa|4sjw_51Hp z=NQl8xN|MX^wL&g*v8e;BCDB#Jl#iNeyR|B}D-vtft0u7;`7V3gnPt*V0=-(3 z+M1+e6x6&6J@4C>U%|N4oFKPj05mNjpv|`@vzfh|-)!4WUkLo!jkm>t#@Ae>kYGoC zzigx{DrE^A`0mVS$~6vFxbVS8?hhnR(P4%jr&FL-pF-7**oN+tDe&w``rI9-*ssN2 z=zJZhmkr~5BYqoTWc$ffKl=*$TKi@qXG7E$YU_5_ZwFwdazcNRt9-hOChMfGTAr)H z|H5;K4R^;q+;ZlEaa>#GlL%P7kZQH-pkUyhr8EhKP_jh^+2^f11CWZ z7yXKL3Xq!|EdtPSA5R2qVHQGitlfU3)rTIsuAFzasS{~<*4bZ8Vc`PNXgY#wb4xZF zz0ss<{Xbeo^Ke2OG!rtjuE}fpY3>$;db}Ks8zT_PrYgf8baHXA&*K(A7-g7y3=fYo zsN`%=MXH~on4+o58jB=S_CKbT*XqVNHfZf(@E&ChIXRlb zTD437e~NF?yL2qJuXXAePF(?+Y$3)G%gWeDHYjRC> z%8^sqy%Nv44oWtC0-@hF&d+UgRV~SKdLy}_&oUYg{11$_`71?x7hx!WjA6_8OpgKx zXxiq#x#Q(-K!0Jva!6HLM+^&zs?Y{Ztm~vUaxbuU3ssmdzO!Q>mOtux$k!< z?!=9sOINvc)2LbJuBp|3#mrRy?$S+2`_@%HpFa}KJzlKjzpE22r*xB0=(;&ehk2OL zVcc|kI0>S*yI!vW-cNjPz#jHHfFGW2;Qsc+9w|&1*LmD+^*LA$wwg9%8Z!~&ew#im z-N4yQw&!H7?s{c#JkHRj3(8|dD!>0N5db{1+_p8c&1`$NRK5(Jhfvpd%-}}0NT)4J z6-=B!nXYI`@LPZbGq*Nkh4LKZ>%JmCr|cuwbmS014FI^X>#St}z-TnNuF!1g=u29W zZE82y^Lk134^c;EjldfV0B8O^>-!wm1!wbAG4`x%{#;Xql}MGzkU(2W^V0A{@T^P6 zDHM>*u0A%rXN2;9Jih+J{Z}NZPC#CA>zt~x!-`9%j7e+Zc#j9Pzx@qVpb z=R}={^JB@}A6L-(?|Bt8xL;SHH)vM`@8mx|%?rLn707mh0gQm@O4GN0ox2fdnk3WJ zERAz8IdQa3cfK@tiu(Z8&1U(w`L$7?1eP2|7E^N+gu~pz zD#~G1w@G*EE3kw-TsG`@xTwD=&k(8jy|+?djJ|2SWb+SfqJcqcSBKG(GjL)C;Hy(xQP4i!4t zvDS-+tMm&job^y^skT5V|80N^Qo{$-iYrhrHJ$PK_$*f+W-QY3%05px;KTW<%7tW) z+L=xC&VB|0SPBj_?ZM&>72DZ2|M))LX#3i!*{X^DaeCb9|9Cmj&EfYEcQ@<#anZrq z9eU~E{Z_iN9r469)kWX$6zaV8n*3vxSJna+Xo zZkb#m8&|nvqEpPby;tE}+`NC0XksBsZ(nfHU-xZqx}YBWz-0mpJ9=g`;1C;RIDl%+ z{0{-uK^60otE&c87>+MvrjiF7T8TsRNZLAG`!Xc*zQTlJfg^^uUFiZDh)SS6Frtg~ zqUZ%V#5h|?Z{zBt8st@sEf&;WhRI=~c@#M#X!eI8@Q3i^vH@gWO}l6KHxu84H&K@k zLBf7C-WY}$)^+YGT*0Ja7<`IBExi~=9ylvC_SUK>IABzqNPBkBs!BQklS~_qtJp#a zB@W>+zbic3XGFOYiS~DM&VhM+O5z!|x#1U%ZP@JJtL&%cFAqvQjIK_$7k{oLpp76^ zw#2laT@V;6vWh8K2}9R|xi+w%%BHez=(#d>r)Yx!GzwND@ND-;F*-iN805;s3&{@| z0(F0RTYET}@!gqoU5p;CTnm{Kwr%#L#Yla;Dn|m`kB1RBOYa=XzJDKi#^z5$jY<9U z1cBKB!_~fl2KV@SAhbPqpnQ$3?GBZ9v6|=Rb%+ZW!Yv__kbY9&Wm`JHJJm&eAB{1W zFr?Owgw67pZ1wosk7zr)EinnIny~>sTRCSP`IjK9O1q44Y}gI};V!74h$60@>dJD| zX+q^jW{H8;GC>cXMC~T2X`|g!`cDr|Js(JFZ`ETsl*^riQA%O0)z+r}zdU%hNa3&d zk=Wo7I@1&-cGY8R%9PyaMc0AqIH|U#nyc)0)YDh5lj7UQvd=}8m^A!HX19DnFkuN@ zVeu1;2JfmHnHGdh;9TB++6DsP!{Mg!-;^n)_2``yKZG|?c0D9NYP2->XYmYkWUY;1 zS20pBV{PwHXxk6POjLy&DRf&V1Fn{J0-`fyVzjV9+Y&auE5Lh5B+AyUr~IYQ&KN}2 zBSE*_);)93yVhVg%Yx1wO$@jVejSAw_QqJ{U<|!kr9FU}bCkP=S*9S{zAJ`y+Y*ar ze?u;C(4Rz@jz9Y=HEm;!q$H1)4ut7Z4?@Hg%cb+|H!E#%!T6_Ee3OI2FukE5s@g8y zrtaZM3De8+$8AQcU$n5E7}_sPnm}+)oYF-X%-J!;A27D9o$?BV6-5IQfc8NjBI5`dz`uti9a!{6->r;^041 zvq{XAU&oC$PxoWjY;POnPXsB*ZC$_rCywMDD<=~hT>X;X{4ng~VIi=kB!V8V9t#D* zJba3sPof_nnqFxZPi^ibm24$+(>f`Dpsa~t?Lg7)4p(O51C;8ck}BP(3A*Pav@X`hy4Q6j8T8V6_mq-`ZH8O2sxHY z@Cr2o=pZ(LQxDTOO(w`gixI*K{$)R>}vumFZsD|G8OJqAFQ)DP0c9?!IhwWD5US)gI1VZNo4l-XA z#nmSop(#xy12xQ&gT_d@0c%VyQ`10nD{634MMpaPsD@#j9Zqa($tHT{LOboR{3lLc z`_Q{K%JtgBb|HKwQdv5>ZXcheSLcg+=7$UHyjL@0l;-B$g^7s!E1SGL7i6Eg2`*R} z*UHMv*$#_v{D>=vap=Z-+#3hv{J=HUi2AZ*<9KMj#=}z!Ehq?Q{`GOt%YqTJP*N)_ z0c&^k$S2vejhwK~ey7;Q(hIuLp5&{Nq)t=I-chjM@#jZS>D zrq?4fU4T)-)Qo>HngN_rJKn7@#YSxwGah?qo#X0@?DW;-R%f;~cN#12!JZT4U?^yd zu$IMdm_b??jehUYx3Ssz#xIOL+O4JlqqErxeUaM`dGo(@aaI#@eSyad_t|g&DUP+=ptLm*+>aq3j4HL%CXb{0!xWHrZZ06$K1?OP^@t3 zr)*ymZ0@0uWxdp;1f^MHTdO-o0JxYq4l+`XuM;hMonuci4ronkHN>kfnSdBd#fuQiQTrxqy@Qb$pk{CF6**gQB zvRi#Bo=zhD!szD6&D01)0*PLxxhfcrEcgIYbXq=X6hj3VFKeUcVKW++Rbx0%FJC0l z%%!)5AcLqPGp?W0cXfRKSW)qSH8|z&>hrX8@qpFql1KQ=>HJY(9Hp}c_pVjlB&PH95@>i`2-yi>5)?kG% zo3-Wppv3p{;?+e=sAtuM(=r!w6u-$@lFPs*Z!-!c+a!^H$~0CL(;OWYrpKyM-d*|| zjGB|4HND9*HL!tx@g=cWKG6+f{icB zP~u>eN?t)(5118l>cDWK7KusG)Uz6C3|E15EAgXVGN3aVV+{?<)B%UY+og%24VOOV)mq2{hJ2l!7qBNQb1Ho zBvVD}IFcvP9t$IycGl3HX=$n>53X<)mLNq5{r>AI_0vIs&PagI5HyR@TEVR{m2Pvr zWMh6UJskSy^2R<+U7E7Uaol^!Ye2F(O@tfgQnw<8ZX%I&71So^iT7A!p9VtCVi;&< z4VwwwYyPy0BSKd&a!O?_52`fG*4O*nUqr-roByU2FdIpNlLdkgBBlLn0AB*=ZvPmC z$@5vV4-p()No$&{LJ}HOzA6%pR(@OXni?vq6jKw?x{z5C$&1sE^zkZsV(@q!a9hGc zw&kdzi8i437Xv3nZ;`Z9ngf*DLPG~Z1wVbe!2*bqIblpkv%)fSc_tE&_Svd zte4hK>Zo45V5Bd({?D57bc&f}UKqMCeH|${`xy8%ff?^AmX5aV(b1l~4*U$kOxif{ z^7>j;%@ZEcC~nySr3qSi!iM)=zjX$eP3yCk-BDX{*_i%{if2c2AoIirHR;sxF$622 zWEeYVX$7*q^$X`)BzD>qu5jXo5Gb`CZNmX5M=*Yf*m-HJF<+igt`~`<>JHRi4AFUT zeEbE|9E#7vmJ3jqK3}qk+ElJ7i#|~-Y1y;3Bi8|9aMjdnU&5S=CMOL-K;l?ao1?4i%*(-x))NFQZc=6S`Ig5BZ6z$!**{{CGQ{Ec&Pcw>zX#o|$ zO*0*HcBGnT=a=6QR1M9hRR`LS&^Z*_27l9@_p^X5!EX8U?ZIP1rRrv-@Mo&F&*ZgF zo{XBVe%Wt&WHT4Uzq-Zb!mYr3lzA+UT&WC^^dqZCEk%~WIM?Nv?D%QV*()j_9G%^^ zwddCNI-cFv7z)rWtGwX644Oje$7?Kqk%A1G-s|n3_0}~2fk#Jxq#tBs`Jj#*BYCR? zXwI?RDAuuDl?)^K4N?rJcmXmDC+Q5MS(gtp##3CpclsJ2+~eQ$;pd9K#oT}L{ZY5O zB4>7Tzq*gt!KfG^<_(|aHZH9|W~itlv;rlt{KEnyjsc7xt-dcCW(4J8_*U{tP5@;e zMO#EKAKjH6>%UHFi-WCiAgP#}#pCGxy0m6X~HZep7+u;#6U<&xR)Q!jCLpHSeOwcE* z;7F;1USXlA6R53{v#Uz=2TT=-#*d7>F}MB=&CSWVj0Dk|#alsk9K_KYdgGVHT1M`m zU+=ItS*6^7Z0B)}hgR`!n!-RF(Hwt3Va;WfK(s$TYlrQmM4|w?Jbe>NOqS`%GeG%u*BLc_8FefFVqTF2!-+4qaq4I+ajsYJMBOA?j@y6*okA z`g56c7%ur}F-+7Syg-gF0tNs)mW!2I)DCN$*sd)%cDg#47yUb9$4UWLs&y+papq_Z zX~yK4J9hEbY%(Zc4JwZu`9vxmU$_GZlDYpe{9Xdd+yM&7+@thT&n(mNTO`beyVcpB z@o%|FV4O;ST{WB6dCad3_ekKHkhurvrCi8bHmy+Df3h9tjHzj5dOYVZ+0Z@5L1CMc z=g?(Gg|3F-bQZm7dW~EqsyN{7@kg){%a`j3Z!qaz3OfuXY%nxlh&P%^`E-0esmDDr ztt3k3o(WWq7usRUm$}5Jqu`5HtPNG&x-t_IotVs+4ixqZ++t<@3khVM zk2A4BvkIZ zP2AgEwL&IJ0I~soi6{lAg@cE=!cD3YN+TK>ol4P9pqp6DKve-$+qo?8fZ7j2V9jxo z>WTNagk$30$?M@yll}*%((XG=NJW85J$AtcRHZ5N~>TDCcRY#C{} zXl$7&U#2;``-N0fPCmnmN8h^sN%}uJLB0AX=q}DR4^qt;ql+{v9)T*wycgE{#VTCZ zd$@@RC7yhuK@IrxVcbvMg?*-QgDK9#y4OfTjTYFY5uKLV#_*yKO_T-Ib*s~Stqhl{~c>6l9=ncA~hBe zWDA9*ZXD_qk1(%a;_AH;8s$^AP6#Tij+W&~80g<+Lc$`YzAhMxcYfx6wxoRL`;zkAfm5g}Z~c z@+}gF@`cnS>N*8N;vz80?{FrKqV`LPrLR4YuRu&Kl^*GWOyGH*n17b4hsPY&z}+t0 zz(qBrKD-ZV6EcJ8zM zJmVs7;NCUcdcxHsWlGzAtOO>kZ7h7*(Y<6};O=j2ZxCJGS-Jia*kN|KcCN=<75MT6>I~(7>`w$rxD4m<#gFAO z^ST|32by1F`SRXNZU+*?blE+JvBAZ#)C4~T;RWU1<|y2i0y7*}wchFVcfa17lq%4V zWv|{x|1x~VYug`n0gCNiC`VA>MIyl!|G7JifhXd~L{|L!ftk4&278Z(SXSr>Hrn0o>jU#@#0bNcde`Wmj6f&bv+3j2D02bZrTx(hwH z1gG&rIm8KSz!OJ`dnL>CULno&zIi~J_UV#g|9E26uaQ}`Wm^CA*f_S_ut2IA)AGBA zj4dyi{YUz{f4~F%_D+|6cbETf|A4gkj~(CMC3p|h-lg1s{NN`+n)>#y<=8#Du8Z}p z*&f<_Rs>#wLpO6I0_6LR@%^#q^CKr^3MRS+j}?~w)*Ji+2qz)+Mc?-U7$W^oJKBDu zcP|(Ap=~X=nFIfV^*_z+y_a?W1lAI1XD1|GO^J+~yWx6J3ftaMlsS^lc2LU7(|?D* zikR>5pjJMD>t7EEpai)xs6h(eu6Qzf&RYfAeR+ zzmN@n<(>TAAnknxH-A!uH{smEQ2!R!!@vK2GvziYQ84mpPi~n+qS$1vb{B{L#SsMT ze*X$Ni()g#KnzBP5J40MjtXz!x1HMh(^q<{u#?<-M_2TljT&LyNQgASW7Wp6sm7X8 z=@Cb*K{&KNoV~ug3d%u+cN@u(57eq1cOrdi1XTb6U|IWAcpp84pD55uZBeeA5TsCJ zMF3jCY4(amk}^y7xf#C(pg(g6qocxws!Ej;n2O-&dBSzcfz|v#T*{ z&6JdlCMc7{tP8i@5e0~oeS85#qSsL>ed+}@w@yxyQh>$1$X#UV;#NAkc99a2gEFoK zhw8e0-|`DC$ITk?#WKaA4Th`*fbB>c`S?~*P$Rd~tJcJa z(;AO4??ez*i{lKm1cm4zU($?!QXE5FO>>K{Anm8;N)4`=to@BKww8Wu-;W$Lp^1y# zsB;w1F#k+icx^!Ni_F>kmW18S%l2Pr&Z1VD|3Y&ztF)X4K{;wp8J3@Q4ok_(C#H)r z%9MqjEM`x;w^hmcm+Mj$FeDI zOd@0;4u=-JQTVs5>6@Z-aQZraUHj7R=ybNZXj!H%!Pqz9RTGJB^O;A`(J zopoRWkG*K+@}L>vE8MWGyUKvgKkF7B8NbC>nZ<#GI+{tq!lDYfrg^)>9Q?S`0#}%_ zsQ022qV(gQ8oB|dJ5=FCU5u8$nl(4g-$KCm+!3h9Ayakx$TZNcJ>zHwb77<>0HJCH z3z+Mnv9=&1!nW*Rqw%wHx>c&^!bWW_L-Ww;8OZIpzRGN@oejJvS;{qv&N&+G4&~-z zN+8rpS0K5Y+Q7K@I?z3661ihq+efP!I0Ml}CFu6^5p~#oJs)kL9WqB-!z>Ecsl=_$ zdqD{@eX~rUq!?HQ9sY08C_0k8^$bfAMu-Bpo_0-dQlquq!aa5rcGo1JK;NacDPXhU z5N^UATS&{sYiXuE0*7bt5;vG2&gJ;m+oApt`P`HBj2)>MD18~>gi$q$L|U<^r&ekp zo8>nI?l6Ptaj_Q;cJTSezyP0@`!}C2H}~haiRuT{rYbtbx|`7?03#|*P~;lcDcff$ zrVsw>0D5@(xgZUz;#tH*+6P0z-L)L0d?CK4t~knw2LM$q@_CVqQad>J?TJZ-wqh5< z{Gj)A6WB|7Flk&x+TI_-LB^FxHdANoV(F8cu@7ZAno1 zI6`UEZl{2cPUjOt5Z&FIMIAs2ptr{g#naN09Pra22eTBQmc-)t4ShzIRx=SOn{CCg z83XdDiRK>HZ>|wYw+Sd6HPN(DIjI^!!LX^wQ&c{RfPf`5`q#E1^@}zyu68v_>%cWd zn@rl=1ioKRJ9a(|eLhPH3T*i@e!f3;u)SOSem>t{OLU{oO#*uy^G+CZ4g|aLIq8N+No~^c96Yo!9?(!C z=x!ck>~^2q!nDQszC6|I$W7ntsszPZ291?iD)5(xOnnhaix}GxLb%gIcX`1Y2Sv6x z9Kb0Y#hoiff}*Iw7}HuvACj%*jJDg?P4VQKtG1r)qWR7n_8jTKP2kZj;UAw6>c9wS zv!~sFOODMY7}HQ7mkv6MzGPQ}J8;YCe{O5367A=0_&7LZ5c@%O;EsUS4|ATLc z0cZ%lWz?~AN6gvm4j6YMFm436liwqlSPS=EJs{2rAOAaSNXo2h&one2JE?AGZxOl$ zOHQBPCL9rip%(IY?c3^V{45+vF2gOoga=TrLDQDlZK8)z$P-8##DQq|$Rd*kiE6hs zL^LG@ykwk}8<29~UTJQrtbaDaNC_dL39}3F?@XMilkmc`PPY%T=^vk zgT2arSWVtGmM40!4ynVVpnVR^>Nh2vh{iYaOlmgQ;A0^*Q|M;|36i=PEWS?O=>t+P zl>UrZ68#4K3yDLbRdUTi)lRuwajcVw#N!wyJL;>oFevu@4)yumkit7_EYAEv&}e$L z{4pG>tdnvI#1HI`^~;D>NzYH`jRQlP8w^B}jmleEq>Sw~<8k62uGC{!Az~ zOgk6q$v;^so=!F%xw1YQUywcsgfLMk`fK2*SD?HOzn^ni4spnp!Avn6n$N85hR1og zi+TsAwx@IUK47orEP5TGs`hyu$><&Qma0`-JM$$grVPDBN7)7_A5OR46 z7Y|Qw5AC!dXSJEm^AHpfL#&pK^ZV6?<5Yz2n5CNO(L(Pc?XLQ-9|Tv^Fwo@u*Xn+e zkmfj?cP(Buh2&3$erb+6Zdn~PBMx+fSFt{=cGT}}*1@dhKY?{OBqA?8f}0XH@yDi$ zOvwMOFdZfyj#e1(ed2KwpAd|t57af@H4gxtN#1Af9o%-}McWJe^YFggIZ38U$c_dg zi-AR(NM9E&X_lvm`fH8FLmV?2tbPz4K(ejxQqgz`Gn46^5I*pGtc$6z9CPst$ndp&}+c8raQM|O(=qb+K+1irnHa3Yu z{u@TX3th7)p-9h?K*>jZr6nGvL$Rh_wFuToPNxl-td4zy0ic;;MX-{<@TQUMBBI1O zr7B-FNLC`+=cQlr+CR_f3AV$K{x@kj9$FM`>o%ErXDx>#X?--4`g5@YWb3roIL6no zcP_TRT76GEEcA!L(tpFfb?a_NF3&_42rAl1x8v-iIGgrJsx|m8a(E>Dsjf2@uVkQA zgU0(3dj{b6S_g0TUkmr02!LEXTNH1pRneQL(vfjq1HcVJ#$I2h&K>cJOaX6jGP-ps z6tW)rra|K6m4cNzG{h3#Pz0R94L;!(SHJ7zbb#Sxr@tkTdhR&TEIaN`0JrB*?mbJ<^OlyqXYfg`pRxJd3inq@FD zJfx)YPI_KGjTkwmZnOnvdR`sF+2}itgl`JII^-^vMsou(`?y|%5sb!6l}kCi=l9}L z#~+xPa@7Ts0`*7Bc728I(x}NlMqXne3-8dG1jc*FI>_o$H&R2gSJidcF8htsA9WLY z{oZ5J0R#OVAtj?&-UBYx#^Le83SImb$BGEg*`dj%NNKn@OPZD(ds=fraRC&x_FAZn z`$}*4qlr^(v)^I*(ST^Z4+G9BQwS}fH-Aa)yePE^Eys^uz|l&j{!UZqE!cgNAnR2B z{woGmH=Qr~rD@1RzFWm2 zG=rZ`eMt!^7x-2HyaqZ&QtGytbCwhJAI*s+1PJq4|X>EL%$bxpVHNj=xOEbfR=r-*@xh=?T19qyn z9*eE+VfE&y90{#9=PiN_dl@iy<-tsTNYR@7N1G5-hfL+jwlvBYRe_^9SLy88o%`c({qeX4pJh+eM>{qGB9h`C?+Q6B?p7BjmLC`6 zc0e++B5Y&53AH1}bNgBRyuT;P0nGHb#V`=*6&B)tD1hYUCetw#+cE?kbFiO-Ey96Q z*2u?%F7soCIboq8(_$bo37JP1o#feCYjVWhBY^K+H@E^=o-NTjv9b07l0>|Ca-Q*@ z8l!uKV(wNlL-VXF@yNfqf3xrM$V%aM(s=z8I47~uMRE+ynZO)*aj<4L%EJYx37Io< z4hnE3OzV4E9C33IJE096it*fG3GTMA$3D|XWXm@`?MiJW1T~>d?mN+kG0PJ87IKC- zBRrYIb+8BMrVR56*k_+nyyfV5tmD^PGsjyK+fh#U%UF@aX<07U&Is5r&J|G~6fPHC ztCa`XO=e`)k=EB|uTgC!58cPx2jREdOx5`#Oib2 zf}-?eo~$sk%50WSqQiLR;$+}#b*-1d-Jvg8Uic0ssrVyWK@VK!rGM;Qs?X2WA!>BM z{4$0qkVj4RdVvx$mp___JaRu6h&}Wg7%ef76!5bU>Sbm@RXH-(D>HLcTk~AZCO{=ixT|UtD3BZCk7)&#Re-9-~g-k>B<#=1l}gE z?MKYLze3KCs89qY9q~l}l{6UQFU^rINZ@73*|=)V{No^c0nxfFb%kZ3Na7XlbW3Zd z>O7x!m~EQoyOg@gco2CKjbx&z2l-D!9wFVlez0GTQB*{u)m`(uGrs80!*G@c{gIlN z#_eU}9I_o5P{B5QfPtj-P((}K@RRvNSDrElY<^bOFXfTLn9>Oy#3{hlwDt*s*XVMh zf1p+^2WZ_Sk{jCo?)FjU31P60Nb5ffa-vys+}gugl1nN!5o4dCY;`wMr z1Z7_EWS%c(0Z0!v7ky$KtYfTWGg)&B3K5pJ-C1#pW+8~Vn1n|uzS}+GV~(U!4X$5r z`h5u^l^(s0#s8>RBGGHOPbEpk{H?OLd+HIRj<3bd?Tj;xj-j~K#4*PV7}y21@^C~Zc8;)XvNzStyOYjZ8LEZ z%m7}%XIXM?q^`r{@}H1hB!b`!^C{6ft}3w+t4A7wmwP$1s^|aYL7h2r;oXQ zn^yhe*cKomk~u+J60o}~*ey|;(QiU$EEVfvI82+tZ@0krH|C{cIEu2t5u#N`pk_6S zg5@yO|9TK89-_s-_bbEsRsM>8dt}pIzw>y0d)jjUwT`8Fenoc}%9cvq_&=ZOme6em zI0p;xB%%N3@qe8|{m-L#e@Dyg;??SAh1e-CPEG_5`OJ}>P%&zP;RX6yBZa=)Jj(QO z2E!-W0y%9q-31ob1)?V#-oub4+$UQYhAy+rK~6G+EIAN;-7)GrLZx)24ATE z-rqv!##Tl~dOEScu3Bbdd~pW&z8?-R65#d*PRPi96<$Bb8y#aywx5RsborAvTP1KK zJ+&1(vHY^K-QUnGT|5w*)>^(WC7ZWP8p|mQFTJp4v{L?;F}#5xT+i#usb`c+iXTHu{OXd|9@y$$|vI`AHp$KWA=7!pezu`bGKj)p4W6*RLZoeXR=Oi>*j>=ahV zK{DN&M*bJQUCHC!vBt@Q`9c)@IiQsblk6l2%277C4x-Cs7|OgQbKeDr zQt28bxN!DB z;Ta{i?Zk&S0X&~JrbT1a1rOt$xoK;)Rt8BVY(rvf$ee8{k+YZn)w3JztZ4mDYKKdZ zn?&UjPuYoH{u5&A@-np3WIa3IULPNCM;RAb4n#1Hg)MVD^nK3xgwv<`t}w@cFxwUl zYv~+ia9hQX0!7zOagrKBC*aZJX9ENegbRfm5QG*%0FG~%d8Cr4Hw8QW;hO+i_G~Lg zr^r=%D>N>O$X6Xjg3D->Sa4sfBM+Jm1~|?z#UeSof!z|#*6A$Ixn(pkdt&6EFghV> zG?$hzMh~y9o_t@@An!(_U43vk5klZ2-nym_vSzffWkH@s1r!q~uQBnYZ>y27Bn4Qg z<0lfM#)x0(?4X-L^NJ&PKWp`Z_LwJBVKiVY%R>eSOjJTq>$2vg*~$p!L2HL^T@-{0 zGk|0m4qmg8=(g3P=-$IB$Rx&tn04}7Y(vX2BuPt?{M*-{|5@GqZxOgo;O!Qs z=P}8rq@P_~!ir4*{aw|d6jh?AM;WZQurobW-f39$_IH-Jm(+J*swnm{ePL*2;!hN| zC{a4rB2fk2Aqa4f9E^yN+ue(EhBkXwHL7q`Ot&q!+BUoV9J7SA&R_{EL*8bnFA4q2 z3m;};aAzDGg>|?WgOa>o-Ay^v_N_XGIF!c*vSnLC=kJxgeMJ@dS3nyO4*-$uU^#sH zmq-ZK=HPr^>~$8xT}Um+#AFD z-ivgCU|mp=wB7@L$IUlsyZ%->0=c_-C~59(6mqh4`%=>q+3-jC7=u)9lxRR<}HGgzRU5b<<)X z!;FZr@#_F(79dhYFF5F8VddYxFximE=Z&EiER)4YA1$+Aa5JLv;iNx|c^Hd=!$g1@ zVnNRM&b4h1(;GL0UbM7&VCUh$%(i}LjK)#5uwmn3LS2sL2mo}4FY2&(gcS3~nzy_d zXHu74WfrU(QTl{O2C&Q9O8M$wac>O#1oPW#pwYd;7^E0BVwc4Mha*L|OrRG|u}db= z*^V+gov`5lDg{3n)@GsDCjK;JZhdD*EP`ikLfSa=c;9aK>w=cC z#ztB!?g*PRkK&ZdZF7M3R`i+07F>A<8_U8ZxYP&*Ruw-50(doD;2;pJ?CLw4E7nav zx+l&HzFQQ$)|6bx&2jlU;0FjMtWsIGre4%~s;iMr)hAn8XWajb8YIetf^4l~O>Al! zEbp7&mZO-g)bfBx)62H>$h%~ODOt1juZWaprPS+gm)Whk#vow>C*fz*t zTqQ3;qyo*gE-izJCX*%0O)>5k^$gcydM2=Jne z?=tE}6QADM&|u3GYjGw}S-ZZ{lN}Dyil9`0(51*~Aw$j2h~g9Gn+jntaGgw+_7PF~nfq}VasM&#CpG6^&G=CxN1l_wt%l$)6=8ZSMM{FfK8Y!q0fEos)Q-j5!eQv5HanXVqX zj2e-3=^2>i6Q!*h)CU`LF9zl=G>lyc7`qT~rnWB+b8p%3EP&|=`u|T%|NT0iDg=zp z_dAR0f3#+POw7IR`;(zy>>VS&;}xY}<2=CWS%8x}hF=YBljpDMe`O^szjpsU-Tj~N zzdn8+9`tLl#``;?%03p1eZ8==!HT2UAXjb$B3OlUMQE%sb1D@m0ImUI(oQPQSnf9x z&9|K}F-d_;w@CYRjc{8^X;`i0MntxMe#NFKiIqPMjD!Q{=uOp*^BIFZ-t466%PK+2 zLdfmZ_ZdP0MF|2W$uMw#=xu*c_l5v9?NOk=UWhEzznBB z&LINwx>g3CPF}_`HZgfiX!va`%p{)Rh>^K8Y*1So2VnnqW|>Zt)$%#OJeR9G#fnTqr&=a2A}&rHNtJdkep-mF!d2ya$C4RHmGMUF3C{&Z*`+D8u2Z$^};mCx$ys)t-CKpS~&b zL9BGvZIp}$W0dFhLG{H(1bCV2ouC78!Fa{0rc~pTMI2sAC=28)8UN+brGX=f9k#x&<=cT>BbF8 zDFf;#ZhSzb-iKxEw2)7BKyQjB#?!QG@gvQU);t)MVHhj12Aoqy4swbwM90se_%%}-r52~?$Wg`M2IE;$*saGEJn&ewk`ig`k`Vx=V89VU+ zV`v%2>-?jd1iXGGhCUQTVWjy#87L=dIb&M6q^Gr&P6H9d(nuMf;DGTQx1c)&22&MmRIPw`BZ==G!yTkXs!4K=#x@ z(sSujXDWSjsRWa#Mb4`XlOP|a)(LG2dp+vAdrBenarx9`e`(&>aeFD?DI#OBR?>l6Yh^U4W2CB;Xwg znw=sk3p@(Ua*4Z=Lx_zgye|iXH1%c?afd@t4wt()ZBC9xe>I5D-()&Hbn!13Ym%_Y z$yeLMM_iHH4%bD)))j~se+;17jnd7sA0o@Gj9Z?UtJ0*Ugi_TVNJOHq1jI(;DPd8X zkOMKXRIA=EUq>EX;o}_lBVt;;1p=s>sPdL{JPj>81#@d1JlFM_Z*z#)<#p2MpRPS~ zjEasYgyaX&G1}s-vg^VwE#%4Xd_d;vfU%vR3{3BWxnYgS-8*JiHjMs3TP!&X1<78&YEy zoQye16V4}aq)MrD1g2)j!Fm@rH82Q*(;Nn~B?@symr8}TIh=Bx5SJ=BI)|FW%vc)dEzch{S4)$&{DhOZi+t866& zl|K=pg$PDFXH5R`su9WCtanHH*<@*vLDsA@fdDPt2}iO3S8P=^mAX*t-O$L-rFA06 z&k;ggcUy?6)Ss@eNP2gK#S+u>&jQpJ991$0e=PKf$Qs@Q`a|fVINVj((KB zoyu)edkL%-EIiAJbsR1e@ud+FqHwgw1>i)j1m}iNt0q=lw6@eD^dO`g(_&-$nBgyH zT~fkZnWBtln}o=dhd|h&I#Xz=T|irWV4i{2YrD4Ci#zN8Kicjou+pVn7j|rSoOEp4 zwr$(Cla6iM>DacDj_ssl+vv_7bIxymSZn?JKiGSpjrXayYMj=nan=2>yq^?pyuT0< z#?PZgJ%M}aIXm`(E^H|BtK-PGXa#ZP(PGeTyR_0smNl>xpvK!#eCmAUaeuu*L9HPp zl?y`D>g01B>CSgJPhmi%qS60xkV~1kRvuUR5U-2T?Wx!&_~Bs#J<>892|kfgsHvNb z)Bak^TU|rIQe>|~D4^fx!cN|^{^TR4Uhta}18Mpu*V@4emC4qm=_)|ms#HwXtzQ0e zp~jP@`RuqUd!{|zn+>>%{B$0zYzn3)-Xf6#qNG1(%n=41!48{Mz&XRMnK-8=`wHu( zXgaVBU4%;iJh+tdV(7^4QiolS}cBEpyKyJ zvpU%ep6A5lP$0sH;N;*5e(M^9IF=OfMTqI%R&9i-%uryBQ*Mr(Uh10E&4XxH`@NOJ zr!f_a^!qxBJ#FeE$BefS(`<)A>Rn022*qW+4m_!7kL0RCpBV0MJN^cb#g;Y_!r&DeB~Fd z7v6|A_(I~Pe#`XqhFnvO7U~I;d1psV` zFmkS#hx>s&MRkkN_;l8{D<{lS6mO=zDMrj*@#QRblT!Gxo6os$pQ0o*HXk{S*wK8t zgYhmUO?+`@Trp(X{Bw7~M7-&Znoi6Gj5V~gFe0I!bgt!_T^?uy#d8OeK5Kpey8y;i zM{l6ppVqBHhW?EV@dgzn02oEV?@at|leRg+2z!fDL$EHGUq`XO z>Iu18BcD}+4q)^9g|{dmF+7mO$+8{7o8unXinx+EHoI0SPf%lG&A;zcRBrd`@^GVe z%ro;1=uxRrGoziriI=SDCqGk3QHN@WZ?io#%IZP9SLf`^nEEia+xyM-rl-Pz#b&5X}#ycxj3##>rZQLn%MnD7f+NQ8w7+zHh zH?D(bssSO11j$%(j@?SzFQzc2Nb{#MZ&#^YxT$w4iET=VoGuDCOh=I^`F)@_ zm-%qyedCLl^Ocw~C55k1^`}($JoV#=xMAg&=+nbXF&xRWbg1~T%1$&%_2YIRSl+<6%f(-+Cu>6FKh^*2=SCH$71?ej}>k>z>*`%p~Xlze+P;o^H` z=8!tiFJhfGzGx1ahu3?7d|^K z@l+)L%lr{75zG$HdYm9nYXI)~$(uzfV9J4+l-iH?aPnUoUyzRcw439iZ{FV+mb0aD5MfcJ3% zEuGQ#aP)ibkdal3LRqk8h^eVSLO2(z3QTp-+ZO?!c5|q((_NmeP)+~>8UhK7G9O8W z*u43;;C*#}sOraYI65u+L8X;l^H5x^APPO|2sDd^Aq3W)Rvf=fJZCu4f_T6wVb>5W z9pvr!Bbv%yNU{a+UipAfcA4)|mbRM+L#Gw7WmHY0B$m7cb=m5}B=EOHJ@-$36Bkp*J^3W7>X%EXuJNM{ zpb`eBwv!m>3{Y8i+;M4N4?DC8Svgy)&b^o!CEZZ4x ziJ_|$V=2$V11s+2*(AH}yJjU<>dkDl+hQ!JJ9^l2VSoe0A9VeO=pca-gqKMq-0H#}+o(Og{ zJ5|uBkK9La4o3B(gy-br;*N|6A;2l^X+{usf7IUV6H;6Np>k|Epx`Cl1j{_Pa$U`d zxPR^Jno=$#WsEG{JU6(h2DebjFrdn79=)9lD^ebiaT3BS=3sJQQBW*ftn#u%9ZR7p zxULZnsi281nGi{>v0f*dKfHEUtKD|~(y=y%<#~!d#3(MakDhx=%B{_inGph8i>wr_ zbFM7?@m)4|^oZRq1YPYwKV`ZNkHVa0Hbw6uQ2|aNI(%`wO0K=0uth9Uz*>3P1}~` zV}*o4e*&Ev`!6$c0=i8h-H9~{hhK#Z615T_4O2Bo>ic_siU{M6bKF+6RBKI~ZuB4l zeqE|V+}+UIuN!_Oex}_#N4^~RU}vJ>1@@u&IMDFQ&1CcAQBO+4Wm4E$6M2jSyu5)!~bd0ZBcfNnBnT8U$CT|9jHr4u= z&Kj$da-D%uwmb)%Vel)2gk_C&<%i09j!eP0I1Ur|3QAxooUXGKcwZs!uwZ-CH`;^6;qOa@g$w!{ECHxliFe10GH6Lz@+92_73uV^etRKtbI(X(2U#Xgolg=re<89hm zb^44c1hZ~QzsQ_3JA@{OD0?Ux_!^%pcUseg<#1FxEBk2My(DIUg@w4o%O|kEg6+Bmk|Lrii*&fJHX}3lI_W zX(E-!a~3Cz?og9|^)%Y97qHtp;-%21Z5?Vg#-jOiVh@11%4X65XsiDlz-$2=*XWlZ zQ2TcP^%@%oj6DLN7odT|A08|RV7*+U`(sZ>|9rFq%sKn^=d2IF+n?ys_6|P_MtfU9 z5r38SpR?BgFw`M;R3PW2^&^455U|wK*#Gzqe_!9kIZqJBIx?z)w$V$7XB`~3n=b*% zLzV<+S#-<0-LhrrVUM{mC*Y2`h0j>Le^|yE^o~Hx^}CA7_&pc?B*Co-kA`*H1xYl| z7pZSch_O2!>ukF9>K%v9L+|Jb+rk@gBLY01Ym;S>seksEHUJ${KBFNy<8Cr{eUd>G z-DP|@`-DjnQ@Vb@QhDcXp)J#KspS9-BD!)JMrkpxM<5SG?I^R7D3{&m-Og$5C%g*S za^J9$nKX@`BIKA9P|pHulTI#^Fb;MY2BpI@{9E%zQbT;@I#8eYc(kH2mDtfDZm{R@ z*n;hx09B(|PR1ZYr_!efV+~=Sx8ec5E!-n1F<;FQ=?hfib?XAO#F=))4$9!$4@oonhnorQX-CF zi-vk)qFy=VTG{#E_OHj z+*LolRdRG=zmDhTvf;|G71tfSl{htYK7i)pt>W#ftj}G-tfiVS!agPahvpL4oZ;A< zV2FMQ{Y!H}?Ea;>7+)wMw!1Oi_jxic?9KkrT)C6~ljcG&{abT=e*tJN)S0^s*nX0$ zH5QGwt*W_l*aXFEM5QhB#L~B__$z+bNpIrSttrTTG485};gHv7-mdEd&;;f|FwP^Q z>>WvA)$m4VRrOIJk4Gk;O%}NV0X|Sr^z?(K?b@$%pj&Z-bD&u%niJ{aAg9sswqDN_ zHB0X>M;LYl(twfeWwI^rILr6mBY9VaH~R^s`0(@@ z!V|ei@aa`p=O24iSqziN9ZwucCAFx|BxOl0UZXGu0Tk*ASSaPC~s4o{7 zRi~}9PZmqPpq~EJovpHp5*p{7Vfw6KY&RXjn)ymTS=@($(wI-=B4!d1l4lYf+2C;B z^5ID;jdm2n-DvQm_NC$Hnq|@8h8&n!Hz7+iWiuN6c4*>M+0^q7Qsu}piG{5HFkao2 zx;R)qHVglg@j7A#7_YHbdy_SK&ZcNPBQQ?%M2YY-8gO=w52nNuQA-Ib{Gst}-prpv zT^n9Eb2YLJvUkqr4=#&)>sj{Z#i*GDVBbR}UJvu0>6PxX$LB9}{rxm_&E%^cJVl1SOsir!KE+XFku*ntOj2 zQaYyueioSoA1O^ji#Cl_3IWO=UFo?Fg`o}L zY;{v0PiiEO{z%e6l48NQucAzH-|#Zx_E}oEoP#YZl@>g8xXcJ*0v-TSs_V@~$}Ig6 zNrB*c->g<4`n4o5=F?m9x7>D8ZxF~GX)OIPWX{l;pW1Uz?!)S39{OV6f?I7giSiY= z%F{LjDUvSk=8d^){Iryt7o-pwLzi)a4eY_&@K{zScwKLv4qe^nr+!(B3RQ>C$3WwVN|nBl^=?DUM0d&?Fl8nJYqqMlLa+t`4p zG=FAgCqPW0h+ufB!psH$E3-1oRf8RZ31zL6;UxFj5pKv`;*;vnPgeY59fJOjD4Uo<99=LQ478=r=$}8RVr*#%DeT3SzintN2M2W-8N3*wsoP>*e>m1$0h}eW7N9 zQC>sN_To%ox`&2Xqq580%%BeW(5(yGxvXNzFm=((fM8+9QIo7H+%J7O2^GRWN<_}& zokjD~UO5tK`yJWE1sq+Psd6njj?tzQ2)=Z%=X3XdIn&ykr{B}wL&!eQAkKl)-HSpM zEP_LGQPZy@n3d`U*J4;R4vJCkGfVN_QKb0ffCVCqqNQNr9hxl8w&$M-)aQ~@YF?fg zq8-kDRlt^C4y;@AiXj9>^>eA}Q3(~WjT=~0E5Szek#D|Tzum>Pi6IvIx&z!L$a0x> z>ylea6SFf~7V@qeyi$Ee1Zr~k^z_#IJ{jy`GRj?pkTWC{KK!9~d>eb{#F-8Cln_*m zrnhxAjIGILUt#UMea)JBG^|2e?8juvX_jWiM&Rt!_F(Pk+=v(C&+0^0_i+yZ$6 zYsw`Fn`r9U8qOYrRip!R7L_@6NAq`v1w zt(w6~Re~-WaXUQ8(OUEv@)`^>&EEBv_(MOqtAJXFnRc+psb1EROwW3hDZiX03O;39 z??ZOAt@vtvLK`dT!h2cY@Pv1vSb@fn^2;jj$W>==gq=p3378b#G8Qz24{-=7`kaK% zSDr1ytjuU&BX5-mW=bGMz|X?~mE=syIw;NN&5Yn4`ZAhEK&OMl^>AmgyJT#2=5NO? z(@?BS)eMOY1+?Z4p^~^TWr<6oP~XV_4RaII4pygM!EP|$>~T(ou;(y0k?ze5OjBeA z?{)`J%5f8TNI^#XTry}fWk-Ubhr><+rHgxZIO20ye%8OoupHZ!0LN|GqmKE`2H5&U2w?RR-2z-Bd%HK@Iy*^J@92gaH%feBVqzY)!C-5LUV|FxF$M|h=X;#gNY z1?PSnY<>STPx!jyRkZ6*ZlNErwy~`U@fBkE%uYMs9D~D8K39Hb2o%V9w`mR91g7-_ zUio{l1uC(;ra@2T7t`ZGk8u%IftG^~=eTeCVeC3P?$RmX;pBUQcEwXxf->lc@M53k zNLvDV5VDUtdEkE?{0Ebo*zYcvLi`UVrT7S7Qd0l_Op2!T?Y}Uo=>K3+a{tFns{en> zq_j*OTdDGXtNl#RN^E!5wxzJPmQ)NX>CRJ1*KB`4V(RBvc@SDN#g=Q_08w8`w^6C} zarWMZ0Bx8I{APmp7pG7FP*QW-uuH#3PdO~hb>pt z8_Z=2xHTi$Nm^e@-aT_u6l!A`Pa83OJfy2|TCG3sOJB&er>@4|E$ zi@anJH)-+{UBDzQ!R7l9C`$X&XrPp(s4mBx06k0=weM*V1D$A%l;2M!*!L4F&`}fx zn!9yv*o>hMPS}uV>T8W-5d!OrGW^U+K^JT)unXPb;&m?v0;7UMf_XguL$#|lOR2uRR>ugjn32Gv~sZlgxY%VXjue^0g zVX=6^;&BBj8UOZ86o`5Iu(b+lUlM_al2SCjR|F7|XD*+}N_+Xo+|20=$oaif; zm(Sj?#6Q=XohxDujm7&*7XAGN|F%FdVChvpz#9Nr6pQzVEJ|fAjn0fSL|h{Kud?V+ z^Ix(^#btpG{}dpL=A~;woro1a{*Xmy-30(y#02**S%k~~r!1KBpWCQVG)O-M&dN`iPK)zbqVxpBqi+3u!Z%X9kv@ z$z*S|1w^|rU3K-k1{^wT;eh=4+MDTw8KE)*yvyjbqpXHrI$FJW;%niJ6i%WEZZKbZ zJvAoK^*O}pFz>Fr)O$4&rG-++92iK=IYx)N>ws+g(|SE0DT~SvmvB@!5CuvGa}RHF zjZX<3*Y0$>no>a^&IAcWD&E@~m7Qw4Jn^hpu$dn3jx0J0p1nGb4$P{q9A1ZZ!U-Ud?=)Dmn(xR@uaO;HNs3ZtYVUDLsIx1V z^#ijw@C4pOLEYM5o2wA9;q4Z);v2w6b_(i}_^iAE9z9pVrh!-ef)xA}quAEoq50&* zM9cr1M$YbK)JFlK8th})1yijCR4b4eRAG)_iA07Pkrt(ogNnHV>iYU(eBTa3^=Y;& zlHdO5WbjX}nsGd&GdP>j8+e$wGl~0_D@iBzUYK`$RCb7O**cvSV@L<}ddf!@w7FaM zLhLEd^sRl>DwIkX;C!Yg6&zU!SYb#mPz-eqZs_Rk6;GV)1>~cPiWEr@Cl;VP_wmUvS;_Z z=IryIt-wMIG9*z2UW|?Zy3T z-Bv1;_j%_1!tTJT?dRTM-sf2jc|zpJBk2M9sogj_6s?558tRN?s%GeRmj=4xfarh; zLs(Q(tGCHs&E$6SQD<$^_N!7h)v)I3Bdo!zMhr6x|F{c2qh!>_WTEjf?rNi-~Ee2L8N)G?|4)*A--_66V#5>>hY1wfj8>x ztFWV$Ik`U)+{0h`c}>2?v?i!*`3M+-5cByw=5q-Ba4WLg^@ek*S2e^&la$kffkq*d z>T@G*8H=VX^DeZ=rRYzIB(<1AfsOmpI=06omWV+=Rv+YkKqWxH%uB2|W52ib4x-8L zRShB`*dMOO(^E7?x-ufZ7)w;}8$)}RbV1}k+g!zzy0f{}ZpuUpdtfM$no{A(oIO>= z@%u-~YBVKTRnODfZQSuSfyC7i>;CCW8FRV9t}XbkclIBZP|sMW7&!#KJ*1Y%xcnu0G}> z?qXa<)Z(i?CS=AJ$)=HAI?2O8HuhMojNY;Udc8yJy}!w=AW&myf1==a{&ln2QUksw z(+KtUrAAAGf>N~1Y1}}5UWIT^CLz)h%ye{KdV4Lp{xYXL6%_O@@DJk zKZyngmdyY``^|EnYhUPrEKXhYLO47I7pDGZK3J0w_L;e(!sW}pq(d%1_yN2(m%CN| zi-($7V1;YOplo-o#A=r62HS&JS1Gr>qyKI$?Ggyam#~~Hqj=UcDABtVY(j!=fyp^l z#L1EG_1Dw!#?DSx_s8yIO5^cG;J8&WA89hw6A&{>-~1Q-OgabTwzAfoZw%7`Kj8!n z_nqusa3kT^MFz`_9`sT}X(nVCLQd&sQe`-#>%mRSDsX%;+O3+!o)5qH-X45au-s$C z(I11yt9+|IcXNMO&u<3ZOC?$q6th}Paa+RD5-o90tmvSsft~7rS5)M~JUd;d0x1?q;Z0Q9!-XnRu!kAg=#;pXn?~pu2mCjxol4O%!8u=Q zzG6MYOO~}_7Pti_3&~Je6Sx&FT?tE!Y6`K2r*e^4_<`Ja<}!#g=^F0tve>8!Vq@-L zo^G%dm1=ca2)L;9npj3UW#E*5^P11Mz9ccYkixUr8z-yu{rW9K``o{cw7M-l?k5g6 zDgScw^!vBYSs@A79j8XY&ni0qGr z=8acXR}B`6aBhg1P$M-xspt#&5PpPYZ{dfD<)r3_=6XK3nnrw1Sp_o&A?BaJpDX26 zo88?$?`WLz%GXa&o8wA<>yCERvRQ}I;2%h z#?^BwSIuQcJ!4RxWzHt792d!^N|W5Fbk=LTS`G_)vj+4bkv|ML6RAQxp0>cDvJmLG zAt}1o!^_Hyz@6dml%;rg~m<%s91}F3`|ndCdej zTCNQOWB8T>@h5^yPuM&g%Bq`;=xTE#S-$x6H$h{cV-3Bj{tBv;9Q?J>46Ax3WqUqD z>5>n0CLt^F-BqcD?*6KD_go`?^q@H>w^P|w`lwlVy}1%8?~N?U`xq)<(oDUdGWIn%FsAsKL~gfmb^$11)iM5wHs3o@p0=CL1zbcsR2#QWbzpSV0tZ@o`2N5E4DoRLUtB(6jreG_hn(7*UE|3Gi4A%I{;XTtl zw{5g2n8;OdMW7ja<}ICHwa6}2UQh%<%js-&G4^bPsp!vbt>yNF-{UY6uI4{njRL9* z*+H_vKOG!rvoJ>{r|z1E=K;!sQxhUA&daSXEG!<{DT`lBs;$!`q52A5K(U#%VkyR5qM}8vnG4vsTr0@RbwEV98DeRm ztpi!bHpj{}P*kz`o0TmbS*ju`wZ&)*wN{R5k(IlS!H9UIVGqg#emUBY?$#mh4t9)r z=v1(k+U>6-RP=>L?pZ;6DfsQT zQ0i2u+D@8hHmc3uC-{72>_x%(@j)6PJ-G6~u}Iem1g-TGbZ+5b-6@t=Mv)S2of^k< z%i&<3P@ulSf<)i0Op4;_B}p!}CYy{>eT8TeN*LaCKJAkyz2gJ4&EsIM)@{KM3nd(pb_WrES|LHF--uvs?a$o(Y8r@a? zBRL~1g$5HklPNoc{mV(oyz{YgAifcS&~8k9)Gr=*eAtW{|M`=%bzdwc+4@`o7@pvY z6ukxmPSKV2s!?|IDIpYJ)m(9bZbaFGDsf0g_9~ASpO94kU&6m6&S_}&pmAWlf4VPh zbw?hG-^;j@sN!7RkF#oa+`mC>%!L7b_R9yQ&CQEnBfFILYy3*(%CNx~5i|&i9+H?E zDQM=(W86;qQAx!S1-eg_X{T~E06a^{=ARd%;)){*HI!mVc}wyZwVuzq2Aq4kxkax_ zUbdqYwyE&GDXx-~78`muB@{E2a7J`>XeXfdQw8+|4_bcBhcW}HZ?Yl;T$SSWN*qt7 zZ%~3AZ)a{$Rf~2w0Avh)sQLXX;*v-u_x9N|GW7j0wa>B4UdKFE z>5%$?f2{wnkHM3J^Zk8&z1ZJR8^@!)vAg)6o_CMqVK=+?NlAc#9{>Bxt%Eamzq?%w z#iQq|g|L17)g^lg0&;SFe{|NVZWcyoVw-zqyX($AXdFYKZ)N_$uq$E6VG(@(d>2Gs z&$ehz3XF7FUWB$vzt91t!*n2maN*|-L$KleSE(*r9L~xekaK;Sw@JF=# z2!PbG%b?L9TWepQoIUYww$gwhd{xxI2-1<^M%HbD@19dawT#>Iqd9f^eRyZ7zhCO8 z$@dR7ejOa}Oh948@~&dI2vxz9GMBZ6n0%0aDV-j$L0`HCgGPSQnev z9dN>x7Jq!!$onI#tp4O`D=Fstmw3TIU@$=#3b3Uy%}dV{z9$aG$~(?N(Fyq1icD?V z+x;lQVb~By5Lul_HL!`dL9mPbMr`0t;@@ptCG- zUMC~*b|2IzO`s=4@i@q7m5y_ARRQO34+p=dhg+$~)fU$zFo;g?SkWBO*s}>%pqa}8 zrwMl#2cU;?x=Pu>vp(7FFfCmE z65koAs1c3xBd=)#M|CC$nNjzn4k*qQcJEVm8cdaOP0BrAi(&afe%^|s#UT(pGp4TQ zzZ8neC4TDQIu28=MgN_8^+~~MY=K(7FRP;COO71tgQA))dlACzrm6J`FF3ZxRmFD$ z?d1SK5}Be5hLXiH9lP$-wB^wokSm^XahQ-5=HjwAM1DEwKEb`{3Xp3!>SvCOYwFdeGV zKIz0RhspEt`$dgK=^S4g48?TM<=xeLNfBsNYUuJenWSUql?P;@I^EIEFQ$ivmD?^> z|AEA$75+kEE@-yvxTE6uu|DQMASq+vaHrBY+Z$AOOB4yz8-j_v5YQr{$u~`?^Z!s{ zCp$z;*#qVf`rXH54?;=Ick`@At|3s)e%iK zY~u2HSZcf){zO7c^{DUKp?kw7MOG&OC8lk*EKv}Gxi@$tl|urq%v^paJU<<>c#@KM z$*N?DS4`cH61C3@YH%JYec;7J#y^1)c{yv@5@^cl1F2n=KPJ4^#+;b~iil_Jn zF5XeQ^^oOz(B=T^`j}bR_Za0s*j>mn#+Fs0AJd4HpWS_4}2qj0E&s~&ycVblAt#PIlZPdDmlMzM)iy z`I`iIJ6|v7=dY(xSc%El{`_vyC80zGR8|{r@SnG4q&k0Cu_m$8%NEIby;0DeY7HZ< zNWmW#Miz;CYGlv6hxgKI6sa78%Ui=kf(=$PQyZOJ8z9|zi!d~*_2buF5t9`v&s7X5 zEqo>8zd%(z+9D=ltvFE8-Cfzy?%~OG>nf(4>&#td+aQcB@T1YTXnTvR$B8Z>1 zJbZMNl~mY-Y8-hrGWUz9>BU_if7^P=96Z{Tu(3R*r%TL#yM3KA^U2+%oTpjjW9YFp zmXE&XO!)ZDPmkKk+R%uBxc2a0tr*G)EL!{)wlP8?ZEGkjS@pWri`KAthh{z|`11U_ zQvKgf?B4H!DcwPzDd}h3P0cRlo!CxYj&(*MiJ}U9d}g~!aQE>@nr`mc!^!t;tqJJk zNU~^D8AlUy+p%zYK-XBny;q@kVmDp_9=d?zu=9#cVmsLFW~sebl@5{R>i(&10x9+kY02J)vg8WXMm>)Bug z^E|7mH4{mII{;y8p(iN#&b zW_g>X6Tx-_+s&9JGNc-rUX^0MmN~NSS1e3X!(pob#0Vbb_x;8PUPZyFF3My7^0akO z*pKras_I)*$z-a=M zrm`b~Nop}!i!9(0CTp=W&WpNpgl}nbI6_Z!{aDcS=(iFqcgXf#2QQgp)iK_V=bas% zxjTz`Jew5e24d%KHveYIoUi^gWkDJo$7YIhqY;xc7a`7{8D>sismiwL4T**Sm6W*x zorN~UB%-_V7J!W>Yig0*N|D*C!Zd9#jiA599&j*nA#34B8c89?o(gl6?BmYYKTwXO zIunqy%mZKM{O~~aO}yvSqC4Al5#!FLCTH@xeRp6Jmr8_mWV)W}-<)ax7<${1cc*%0 zIe2s+yWU9nnB#&LxwNd>Zwp)CST@AnrxD|dB+lub6GtOn6kF?lU+eN->r9Z__6nNg zXk3`?rVA`8uxobYAGYhp$a2jtLcc7Ish{HA5_}(*EY@)tv~(M1>gX_yK&6bVtWKe; zcF^TU+O9yxzv#`+1f%YdAA=(EoGI;(I5Ufx9(y5%KRx(KhMv|v`+U=rgeWo%_vIix z%E6BuUX^fqT2=Qe?C#P8ki!B;2*@iOoQ6T-f>*Db2%-yrs0gBsni;Jz5lk_&P|N97 zWk=UNb-I4rH;$q#iHI2y?_Bip?>9*;6xtzK7lUk`0Pk8leq0=ROEETWG$!<+HWw_LJ5(^3LSk9|ot!l#|BxQt${pOeyfa31nc{$d`Uj16LPLBZ za)Sa@v2h>O%eiIpUwVvD3!i_ty_hPbuAysGQChMJ6Y4R^(q+Ev$hk8oRatP_;w$iq zSGn(?OhvGK0>U=AqAQ8YL8pC#Wp_M9`_Ob+p|Y-I$go*>skxSO5X_d3P1wNUJe@TOqc!=S0S9ntKJfw-`e zBw&@PfjGE+SdtHgEF>w2dnVU-vJOVuw!AMED`abAukFlUTvm>kQ?1NOFjER3D#FDd zcQfx8l%CTjmQOYO{4^d7;i`xp(<}*xnaKMokh3pEWykYFAV4{E@5nS>-MU-+f2tNCgSh_k!renHNn z)R4O5U>I9(2zbnkYfDb$d(UK&Y_!*8{m|`hNRH*g!WO!t-_hF=Iuj_+(L@XXAp{-5 zkVM&txv8sLBRSG+NYF)4oK#BuYj}e3;~KocvLb!iHD0F^Pl8;9IyR`G zuT0Yz6r7oEf+aRXQupNi>Sog$&48S*mYoSjGiRadN)^_FO4uS7*?G%-v|&!HsA z0|0KuL|Pv8=QJymau&`8*u|wCv8kkL#^erb5nf<|kaO3`6J5=tc?P5;j>R_)3Z<$~HBUTxP%7{>*C)v+(UgstgaMbuSBEQgR|5ce1r zp*!@nG-=YQTJgkZl=2qsHE&;^|C531_3h;) zEv=~c*VF55t?|pKf3A=39ih+5$H4($;Cjc$o4x%lCePpD!SRwi0k3I$h;&LyH`B*AvyQ(vTX7KfB_M=kMQb%_T@{lPVAnK<1S}!X0 zz(AAu*LplmDyW$#xb+`{ykA4w2#|#Na=7DuD^DdVIW~6057a&9j8wAqY_;G&3976^ zmbLGM(>Q!>TTxoWXqZ%zaG?M{X$)}9#3~~RteAsWnI3y13Hou&vhJVkBgtGjv`;7} zplJazOcYx1)-wXb)<9(0eAHNHdV}U||3vi)w2?{CbAXlANS!kaSI4BM%Ha=&lAW7~ zrNphz;LQyUZw5NXm!(Xn)8Y1qefu3i3?-HnNadZ`kG`w2Se~3AuQaCSc>f@q7W^Of z4Fh1`Qe~?e4*s-n z>wqL{lT#VO;{6l95vO^QE-*CE%oc@X5vcr=t*o?vf`0eAL_zkI$EuZYe7Ofp? z7{-Iux*HYTyXHGXvuVW$=uV1bmzxgW@{CMm4>oQ@gA#HXR|~t%$cWT0P+U3jJZu`74D*( zPicnR+juvOQ+X?j@Aya}nGruC{qS_Dz$!cr*36{9o<-sOo;M_k8!VD}1|t-|aA zai+xFowK!Tp(y~%Ej?^OCE60Gp$2~yoqgt=+Cg7OC#gp{X=k>Se0{+O;SLd=C~@iX zBfE0Q>L<4dLtKJ~<1I7~PeUxQ>`tW3qny;eY|0c)Ob);2RDo?H1Y^nox7gEz!UQD9 zoD5A*Rh?rH&qw`$(&mzS3CGF~m1ZHwLumf{YtzjdnTJ&bFcl} z^Zm9ux*t&Z*o5{ck+U)rb+tM+s-xZ2KobF_^E7O5;7@z@10$rNE4h0eWcV03wG0or zmP!<PZCcTj4NAZ|BCoe_EswUCwmKl`%m`9^@4LcK=cpx zR`%c7+rV2pY6`%;y#^|m{F{4&vj5+>w~B2^nkBb1a`VvAMTHp&ka*yf#AD)a+*DPI zr_89kZdj!Y^YzYd5F`@lztvkoibo>Wi3zu8cb*rBOQKmu6VDV(yGk+BPI{B79_IfH z-+1i1Q5t;br|I&M1BkG48sO{^>j!m{egu3)7CR7YvXmLG(ofyy&S1o-#YDFi^hE*W z?Y>oEO~O~R1`!@BYdA+FYmU8TR@W`)F-u_1_)jT{=}aYx91V+%V~y&D!}lBuf|2_& zEWd{LX^4R+Dd7;P#u!*0^nmU|DK351_A`GI%6W2V4qa>V`9$yd++Bl`nmf=ZV+qn4 z^B^HO53fTgMqqQ__5?W6nPKor0bR#{BlsJk(kkR-V8vI9@9uQ8AU{Js@FsSJNkrFu zV7JMMeIvTrRj1548D)xfCi~aDrBEjbnD`+mMAo@G`;gNq21y1l!?#r8KiW|JN)2)l z8rCQ0oNLCTR(1&zR4w?)aJ+WSG!0W5H+Gy8-twJ08BgG$+mL9W^pwILU~}2Z5x2Ep z09_X#5*1_KvM6F8+Cd-3xyyh&STW(9nsnp7PnH|bU%6V;Ej9Te1=PBA6B8X^^HkBv zQY~lj#VKh?=-Z-xKDzv(^g5PD5K*u|@h*YKaQ^Cscz#x_x$IPJtISuQ;6dU-2;909 z+R&1!!K$(TP8pJsB8^D+Wzt!eK3TVPm!*@|Athm441AKk_1KnyU_!tf$H&nV!~sgy zxrTMsXU&E1ke73N&EK^6RVVKimaTz$U}gG{sIpL@pM@wIA!C9eqgV?KyOh^Jzh-At z)z&VKy4zmyz+lt;-ol>9%F7k^ItD{sI75;rZKI>rZYEpEv5m`B&Pq1@O15c&VKnUja zOK;U8DYy=DzB64P(DcH6=?J>+kQ)?XH3#IFAe*W%MQbUf9lAmcS732dAh`h~>cUTH z^k7QT6gLyjwoD?c7SB{j!FKfe@?S2+S&ovb*D)0N>)Ui}S@mFdK3U<%t1FD+ko~KM zn(^|Y4QZ3lAmgvz+~;HuCoOcvR2$u2C&$y{trbaOcBxD5pN5278tcWEY#f5*azoqM zE|%3El}t&R`@QBQ7Lt~;E&|1;K~D7Qh2 z9J%#}Kr2>r4R(ppUoEUaGC$KYDju?0(1fC$h?;~cs%DR4)MN1InbSUO(z4j<8D2@} zCjAT}bXN(JNmhWdR{GYe4Wtx!y#rPPjl?HypGHcVH>EL_nZcx_AnHsFXSo+=@#6?L zZA+nklDKmB#pGRiG`5|PGmn1Ll@L`b9x3_DqC}!(rqF~q5t?T{RVxa%EILxCFu0^N z_$4e{(WzB2JnNQ0wcg>SmEk8KmFw>iFF;;b<9RJ0)oTfm40eJ0Z{;r|`1)AR76JQz zB!P|oGdD~=`xWr~{Kwl~R(}SD0m8m`{s{V-DRH|74EwLcKi>HcLVZ7ICyX;8RtSYt2R8uXbUyp}qBHbXXEEEXI_m%j7= zrTEb4|E2hjXwnt+jXm}Ub2Vc1$;*45aOzwGW6${fBTY5S61o(LET7$$fga4kTEg0 zXYEK}J9WJ}A!yZxn5Gr1zPO*ZMXj@xEzcU~Kg#5M?7P-=FT9Tb?-Gj8=A|uHMP@u% zMO~Iq)|4#dgHxNgU^uey!_?|*MVYxYhi|H48l`5NnbTYEIp$=-E7rUFxG3u|W$ClG zycHeAMuL5Wd_%KrN|XCL`C88PTXCh7RPD876rqeJi&EUX##dFnAvw2Fd{LT^e6wZ4 zI{~|rI)Rx6i%0zy_MX=!3!lK+txwro*PNdY7shV;7cc+(S9d*$ROGKOAwxoU^JgHm zz(cG+k<%=*nt1bKSwtDv?H@ZKhKsbfdt~CS%-%%*yStx3?&n6cYcwcd)RYo*9gwMS>( z3R25yQE)Mb%ruPUnm)7^3ilE!|3u{O$N7rfi!h?omUY(;hvO>X-!7R)VzYGHB&o{H ztoFe1WV@Hhnlu&xaAvAV7Y#m$ueDF2@{Huvc=?Kgy_q35Y*Nh1o^t5qF2lxoZl2FybiFM5g{>;6tvr$QF^jn=myc_RT)V2Ov#9 z)@yE4Ci_hUX>xEr0zra_^`u8YiTo7XL?x(p5fsTCc%!b0*Tu%fg-6)4^DjU`J^JeC zAXLe1nUV#aquVO3?c6$uW+ZIVZK>g#EleKPqz0djMpmOfMbOV@@o9*<#S>vFv~TDa#JxBcUKQG-_S;< z$DH4IQ%2P#2lN`S7{XT%iX((!H|plP#~{91O`}oi2w76ap`w;zP-DZYRi7RI zc>WF|a!!2l5w|Z$kfnAdwAyQLOl?mH6jp9e8_X8|a|8#jeiWnm! zSCY*$7Lk4JiA&yj$JT0N)X3mL)MY8aMbXX}jkBi*$J~*wvP_%dC8tPA=<2_?*x67N zc|%ZyN>hETwfiwLVeqLFJ5YGhjS)hoYLXLSa9yUFCDJ zlPmxK?7eGuMeVON?Fd3y+QRWGUjW!n5m_27EQ6gHSt#-J3#g0iY0JtR?oTtzoW^8 zmuBU)^%?;wPDgM(rTGhQKNIHJ5t3;DY1DKVLQNLDXp8bD>2h?n5k1Z7d0mgoy?iqauBh|EpouR6UvIAg&Bap zSv5?D7XWH8p8T;$5;0eY72mjquGy*(EB2fWWCQN6j-*}nU=7KZzG*6ZOFe76e=T2! z06Bn_Jv(v#Ji9n{|GbfEo%9FI;nWLKb-!-8y<6C0)vv}_;WM1PZg@PUsc}QD?8!n# zMdCArDb1Ni_Ea~J%xJW-=N3jYyzf`M+OeFzZQLci zZx7r8<$f*NYwg~*A5Nieuipb?!G&pbDkGY7g@}9h!<2van+*T`=0ONH)oS1hKT~VB z(WxN~G{CvdrJ*4V(+SZg?G70jfaA(MXK9fvh&n3*5Wo5p5~ps)xP;hcxTpZ6vV){Z)d-)rf$NBjrPV6!YrSNkR<8!PgA&4U7Jrf@v>1zg zHZUUXpe8+ZbmbUA(4?^{Ue(*0J!YbL=2)NTLL~@qpOls(NR;f~E36(M?BHj@z24O2EH;95bs?-5W zCj5@2rpnE6LZx&q`)eucnm%PAY={z}g;PWVB0F_df%}Ga+sHOn%p(^V+M)$rmqzO^ z*AV8?ROR2Rrfz1uQ#F)p5v#@VtD&!&{|nKrD=qAiTzua$$iNusHA@J z=RbqSYNmew^7QEB_33aH-%EYXa>izG*t;SO>t2pVGb3#1ztovFl-ILP5ldtWiI_uN zGZ#vP8j?3~r;~Gb$MQY%zE|o;7v?u>=(<5@ZEZbLkvy2c>8NULZtWSf+Ox5=2{KRAo zpdKOXr8!WP)o)%y5yu7ckB&xXzm+rrU+8sSvaL3Yboa%MC2aOT|MLOd?Y1Wac;D)a zy)&+?84P#nuC$p%Bgt!5b64O6itBbJ*WK!#@ne?OwMU)Mru(vLi9>+9o>nw{!1F7H zSv7p?P0Yjl4Rvl>kOa7WiH%5BiF`}BIVNUfy##25y(36P z-6L<(mzb}yhw@(yq6&YsLFdrAyyyK-^xO<^m|e2=dUoq*909le_GP18ZNJyFzRt)3 zUX_^Dtcgr=QD)jB-zYn)>r8dYW3YsH9oD;JjRbI#SY?llNz|ownHv)`6;U_N%hc2= zWpHIWp5?8CO=z@OC)w2c))J2Ze$$lj85W7aKEf_uD=z6&9gs1Qg@BMyNbcvxKJbuKiLRsn28fc$mfXid+$f_i+OAoml9!RW_ z+!f`vR2>-$c>|9F7rG7`RFfhRWxI>wl#%bTzB|NHgCiBqXmj;~DbG+{r-dcn6#_fL z#x9`FbMi|{4pILVb1<-edv;=vMmHwO%PaJheu^|CD<(W9BaGuw40k7GbIga(mcuT` zMLl5C^u%^tzi^j4!#8Fu*JgpP(JM_r3Hfg>w{p}7TVRU@mA}#R%A+E``Z~|1%rL9EK zorng92$Eq|ERivQ>Ai=@w4H}aQDpBkfmrj969?s8uiXl?ri8BICtX{h5Osc`r7U!$ znyDlss$OV^veWGnboS!zkeq45H0YZ;=_-g=W>3Q@e~5(L66v^AkXzZD*IYFbvgAl)aeiwiW* zp?lIc;8fK`VMA{>#T^whxAOSfdahl2$5ea0(LjA5m74q98phq)s~r@z&#GCLwX5E0 z2h|nTSczYi)vlf1sPM0&5@}Jx+pKM;4vJoE-Q7+fm~X?zI~Q;Q1Ge7TatYQ-z6AR! zRxj^bOo#-A(uSopzSLY>=B;=HTuj&D?&MWdrmGCoO1DxnZ7R#0*^uB^Fk7^+tB;c0 zoSl#ZvI8j%7B~VSi)h{)Js%U^wa?V+>pH7O^GOBrSyOdfq((sMX8m9yZ?BHL>I`;E zY9SSoJ)}wBI>_GjjeS$NZ1`3nf4$i_e|0sjt_s;*>oe}Gi`};Jetdg_wXpqo^U}(9 zvDQxByy>g{1M}v3%xK`oy*h=)h{5x|&@uI>?Z#T4?GmT0wrhA*-Nv$vxaR>aXy8%^ zB{@xFF6XffR*IZF_jT_1&8RO~!(c8D7hYIdUOJ_r(Aq`J-xnBP3$&k(t~RIdTmY*l6L!Q zU##)#58A~{zf%JgOh=pNG)oOair_1-gnFa(%_u#t;lDbFq7 zayYV}e&9}%u5wWUJ!`$UOSCEhsJt%r@4>#(sUAz$Xeal`az3N^f_!^+g3^CYfk}nw zwmlqsmTV7Nq06WL6I+Z zQ_6=*dDG#fWm=`IX=-F=)akQn<3zg}jKbIh6I!Ox)Y%lBM14Jfo81&Gb8g*jl-#mB zWeLe>PG_tzwU#@%T=!NFL6GxB)M_c(I>sAHy=tMWX8VZgA$T#~)s*WXepoK&!TaZn zX5)oV<5wTq8^gwrbJUah12vX+*tkL;F##{m4b^R>>NI~DAD8#O=glF=c>a6r^!{uqClbi+t*h|bppVR zAs}B(tNPyK09WZPb2gd^aZ7euQj?whOvxv5U!R158pW>1TX+gM-OKpvx}zkrBY|o6 zAc?V=TH#-w3}Ct#;k8NaX?fY!#~YfbW9eFw;C-0yirLfFkc|#p+YFS{95~v)RxMrN zPd;{mUVZdqtK*;-mr$||WkfacZC3!k_Nh=rDxejbWK*hx84)1BgwBi@nTk~8u-Uv! z112pFc?@Qx!CL7nz?qO^UqcmiR@X@zCv*Zu{~Gyf!1G0ku3!CQAF>IZm}F5?R|%l{ zC9*-|_0`aP7we&W%yXpXPc89<$yqQlieTTd>A6zvb_@dIcRt;9w-fp}b_{%1fiaG# z?7&5?O*RI9nJ@&(HZmPDGk%3x$*M7@X*LYg}*Xk#AAGX&G)$nq6`LX?IE(<-w z`?>tcL%aP*i|g-0I|n>|Bw2pPBX$%;qD;Nx*iV=m6fIbMRcnu4l^DL|m>-|;wShuP zjjz+dl-}wM;IC=)^L)K#!&6x>x-KT&E5yI~M*k@PX3I8Up8BuWj7IxpoWvY7dido$ z6;$35aczdPKe=TK z^4ITAfBgHaH^)b>{{H&t_^)T@r@#Di_2bp`>FZy9IYw+L4L5MbieG-wCqe%5%XO6T z?3Z6IjB#om=O_eBGTZ~0r)uN=KxV;Zhp|qntYV}+FeCt9VLj5g&(+@wdFRbURAXC; z(%jIMv6PHhF=v=2y=FwM(2>*uiO`sjaFu%bd#y!%gthnXIGZD$3l>eT>J$Q81E%JC zQP#O5Aj)PU-m|5!YR-mbS3*~3wLt|0y;+H?NRMrf_BZw6@U{IBD1 zx-YtPKP)23&wwHk<&0w13W-_5D%hxX9Ih(9zR|+!eafk?AG}*ceRU;#;|hieA{i`} z$A&I-whu^&FkY8{k=C5$Ti4NAHE_g}F&xmqo>g$YkQ5`=mj|G=DuR0Q3@^k`Oyu0| ztLR!I#aQGKA0-PirAbvw&|Mv{gt*h3h;+T9(27!scnBHZjHYFVeN>XcLX<7a<@!tg z*@2l-FFc+#eor5dXCV@XtL%HaTeF?FrAujb$HP!Ot_@_iT9s={AG9p2t&IM7{H7yb zjiw8t?#lx0X>NXgkwb;)uWs3555bdARQeiANvu~yr>sKFK(JAfldsJGeZ7tu`I`B$ zH$i^SQ_P2}10~_`b*fw;u;1NE`6(p(qri-%d}xx?h)Gie+`o8&F|j$ha_8boC#M7Y z*_h?kCtg*U&c*3_7L~=OkV}Y?=7XmFduDOraDJ3JV6%v-Bho!R7=cL&FHdQwnr8(k!@>E_TgqDCk{<^a_7MH#fB?rsF{?^Tv$U zLG`4nU)xfL@QGATd3XGo3%6K>oFQ@C$2gBL_ERNudRIDyIm9N02nX0Den%6QY7F-z zj%eO}7}Wivk>I2*A)(=n)U~BqX0?-~kFSW5jOGQ8%7o@b@s)|l*Mbs~Ae){&9-ZTis+82kG8C zFD$sn9;sXyfCZrYtdFN&avx5C%w;TcsCB#(3!usFcvS2T$xliw29Ji3o$_6k{gW z8pI`9xxxr)-+N}7Gb$Q9~s4lNTB1ToQ+s+H!$ksJg?(J zdyuVd@GdqH5)ldGK7Fq)Y}p+ZhflpYY=Z#0;!KP!%%ulOQq6a*U>2yN?k7GcsCqn$ zA}9T4Xm_Rm`>Q^*N`7Z45xJh9kYzH0 zqSW1T&EFai&(nfXJYKY#K9Cv918;OucMs60@EfmyJoDr%OCYl%E_1BEq2!W+ zO?X6RET1rv`PsnC6Tr#w>9Gs_E1{alzrrhlp!ZwmM|WVC+3V*4wO&c!DB*esnagYT zLu=?XJLSDz%Q6Ud62*@h1)RhGYYof)&+j&*JO@y4?fiDy8&`_+Dld|%Crh>@ni7T? za;le23CfSf%%?))oo~$B+t_@qF zNrZ)px~Kdag-Bc`qgEwC+?JWy5)fJea9C+1W}b?cuEwf%rrxsy?droLYj;H#05U!` z-LWwth`}nxgsGd*sIuJ#Lcb}rQAZ)89}-w|5OiaaZWq`$!%z$=i);r>YNw#3GUi9o)>dyhP&7GR6EOR%pr&Q{nag-2c6>W*VxFh zUtui3Bxi_f;8kiI4y~?4Sf=cbsTGR3)X2*wKlFw_SA0H^XdMl`-jh! zMugrWo z2DkHUaJWlES|@kMg}RH(4D1}P4IReEoia5gpSDa%qc*z7=A!8Wy0)5M8CG?aF6MOM z&9IE@( z+G_mWyX->5)^9@4ae|&vNq*U?^RZvHz*p)KR)eaOuKuVcMhy;bj-3OidgO60&b#NY zK0p3`1eiZ4D+Si03AlyxrJ3{r1vK!hwODt>wJN?iBu9AQB>2ibK)6WIEgQ1-whRZE zgDh?xfHQ$ezNrxnwR5PO5299MxBc0;C0?|09wPF*2jilUW9yzzrxMtqG59)RT$)XE zQ?4!dfj+2JpGATFe%IvZ-Itg)9@ga4A^9a;Dcp3DTrK>lTdY1io+b)2r<#Rbj{_jum>i_BR(BNow8GDyuX0boaM1fv8$+j&L?OT&U8osHvNt#zydvUiwzGwrA;ui0kftn^Hc3_##Mc)fH4b3Ge71 zIyH)RJ5k3TMs`U>%#OxT(rV#T<)bOXoG-O^WSOa$lerg&u&I8J8SieV_SGMD55v7| zuXs-rn7w*6TamC$-nfu?1M*jqiu^ffC*7w_#7tJA(dzEv)et3RHxQXkg>nQKIV1ye z28O2RtKZUno8_*#3UX{>dv9UqT3_Bt7;EsXNYk)YUTP+IA01D%hUL&j2ZzpicEKim zaT=V{rbw$Td#1)MZC&e@^W90c1}V{Xc)d+Pvki)GZ;d2 zRwFu`w4lbN4ISbDLln{O)!B)X=rmpv1?9zK2K$#-iG)& z{u6MNNU^8*qj|xynHpZD{~sK{zG4Dng-(}uys>&8)kP;SOGopD7!o#|fa=@WvRidz z2$Rn1;g5z@Q9D;-duThoE?#J7l^mrpfbuvm_F-9DmO{OUO7P#>!?%O=-Fdr@8LZK} zv!cz`xGBD}WN{61XDuoCjjI}>Sv`1xPU?h8>SI#~Dc#<#?5@BLQ1GoRAwG8Nnk9kk z7)6B?EJ=_dRtB9^cu98F;=>Ddk=AY0ZG?k}nsi%mGc7Ed_#PRR1)1|vGyIXBo zVe-a325tp1Wl2VI7MGD{N3J~za?UIV->PkhEhWTwaD=)$fscVnfRlxf3A~s|-`*k~*&R~2*O9-w&C8g87Aa46TX$Ej z>FL@2;r`+CwWg&D^`D1v%J|RBzh~oR3!gKV+R5|q+<3d#J_S$Kvu@bQ%G362|I_`$ z9W@u9?y6aFd}No(`@ z0-Sw5zOX;eM9%)`&|B%f>T){yR*dwBXB-#<`P$zUUf1zp`3hU}>kZ{KwZ)ChXg0WA z8`b4Eq>urvie8z~Rk7e$Sk*WGYWtN=!qClh5(4^qXPD8V)F&^DoDoxME;`{V{Bu7j zut=m4%L=(K3z5?a+t(dhy=lX8px$EH+gf}*!prJ{xCVNt8$Dfz<(H?y)Qo7+9O-<$5Q>17Go&DJj)Uu@xsH>O+dUDv%In}Akk%rPrI4Ch;C}b zdA;oV&B>eRpjO2~DfwB>?v!||p?Wo6sg}iyD1_riVwUA%#-+gk)CaHY9FWkcd$4i9 z1`j?Dwy8N1&If*hhot*3oQ;XV=tln(7+Z^4T0(03>o=u<32Ha97e%F5=;r$|yW5vB zJ=}xt;!a)E$L~dxO0sphH6&Mj#uJ(+3!R0Iuc_uz=}P9Me&-@k<6;BKHKBupq(XL%X7pbo zC8sa0bT@Z#Qho1T_~J3kq^$w;%{y zRTpssp+bp-Bgof>uN;AJgR)x$*Wl!}hosbiT-kkWk zPG}9I+D`N}P3c6DgxkT3;tZQO2W=5l?vGx9E};yF(+rgX|8d*YU z{>D3-j*mO;O7mw^2nF7u_K{BQg`C8Hq%au*jri!Gu}TE%q8679fYWe+I*WHWBROg6&_P9-X{C z9nRuUreZ!Q#GsUHzzZMABLKxF5Dz5;(uAqLEcI}m+t zU>}){EUih^w!SJ?_H*BzhUWWXs>GjLwjcm-H5NIP%G+~23j3^xV3PJr$?_p~!A}SO z@QdIp1i&CJ*|_f#T(WW73gE|{MtFly2aQrRU5bp&bbvk$rkp+Jnj zmCVV~D!7(CJ(ESS>y&u9PsN>5hS+?6F7jKRP6l&cOa~|&$$co{v;PVFjLCGPZ8Gp-i>6Ni)o?D*Ad!*#?H$F>6`rgjo0B!v-s??)+P59x2ikn>O z0_6I7&keuJX)OGf2R;9yH~5>nt(QSB|v|s9l|DV zr*oF5u{8kZhl%jP_#P8R;Kc}M3;A0zz+McpxLUWzAB^)jjpOUXXS~Q(X7r7j$h`!U z-g|+31PT4$!rPjXwwvw@%-v*j_5Q-_-2x4wJ_8OVp?IFCGT28%wwrdgPk z*0gHKX!c`mc=ZB?%R~m?qdFzqXDvf`lD_}?1<5##>+F1{J{fV3oOFUJLyS1C1p-v+ zN)jR^kp`s!VatIk2^7{+BBFxo>Sz}4^5Ed$05ROY{PIiUiM35h%pyKpCI*x~KRg_g zACF$Yf)s+xa{{28FZNIosl7n%k?*eFoL8tZ`dcr;2DMk@)shTr4(Wq0KKpD)PIwNP zX+D5@L}z@OObA*`A%p=i@BsbGh``*|`Sx2bNcf-e$+XZ}lA5)S^F3#2!ibEhA(3Z7#~JD)@{LWqy7*%%j0h*~x{9%pX5a*4xieJI~Onp%v&< zXp7nGH8&aMHd6+|1Z!pHt@$n{$A%?(?mEn`%X0Bg+-8u!??ggFemtzQUv@mv5}Avx zp!R|iD0Qh9r{-X-0;``mIc0#w%wmMxTQdSn*>i@Asl|10@fuf$_%>-=?`iQO!~1Ngb1C{{FcS`#u<_eH6a#&4(qDi z`E39&g3tvFQEL*=+3n$Q8`+!4i7aSd_~DbQN40&(0!6QBCb6i7QhK0}jsO&jVyc<5 zr$9{gnmp=qL3(`p)I4Y<8vnT7r4Db;v>f!NryPXO8fi#ZuT0nwM4JGjoq)dQtI>*csLb904aFQlvL(G}u{9g*YC zaLhx_+enI}EU-Hj8TS@c-vm%Jb#34Rv;?c$6J?#y+FZWZDL%n$|KZ9wdC%ShmT>Yl zIfj`VKZY66--L*!K|kw*r};2wS6Nd?=)9YTHd%B&WjaoZ1*%ITCyJwjT3`fYgckGB zF+w~7AEf+JBzc$>PI9tyY=Ik0pzK*%uzXA-w(D5uI_HCBQ#NC{S{F^nU?faw8fzTF zh~>aG+53X!sfUT?`09+rIlp7MBs(tvB^dDsI~`9!CO&vWc(N2UGZ$Ctu!E}Go_Zhv z52|UBt`&2r_A^Kga4{@InPZ%Q7gbY=2`cGE1$K~1lCz0YhjRx{7BPG_o&t2gG_5La zeK`}#YXWSx)L1L$;*Q5g7R54977#b1QhHhzOh}cKBI00st(IGx13+=Nb&kDl0VW*8 zb({+*;_3m87`Qg6h}lIsO1PX}^>$Xa5kWjaYr+bd(v?0-$x_KdDpWVCl4yN#0hCfq zp#pm2V4~l1mL;rU<|{9X=hc`std5fK)u%UUR{K1ni4XWFF@{}RrqEn*s5}_R9o(^8 zZRQXUFqc+(v!z>GC)%@IqpboVQbTBu&?GTL?aKRC*u}%=GgD8_WZ&05Ig>k{`)7F> z>jv^W8V?|66P=i4?$4vlMQtwq`=>+p!MZpqba}l;T*kK9Q;;>8)GU3V7o>abNsX0g zt541}BU-*J{Ft~A)<90fhTD?FA}W=_Pc8n8je`sDP;R&!Y(Vm}!yJ z3QTwkOdwBz32UDZ5twj>feA_yNi?QujW-5FxQ+c1z54oPPbyB1YElC#z*Dkx^gz($ zfZ0?##nByo^Zu|35y;06|f1J1Ci_iVkUwrNp%+V&9YI!hVUDgG0>{+i& zkk8gfV623}0K#5kBZ!2-z3mhp11NR{aWq0R0at_t z4YwkQ<3Bqz!x1{ny;cj;2$(}qH(W27iPab}qbvqTZJCe`6Qv>YdVu2gaJY>jiXnG} zQ9jFJJoqzVX(VFY*s9ODEI{}T7rN@9Ex_6up&!^^|1H$xN;7D(FYhUgRwAgyr`5}9 zO96z)4LGH#nY$Ol%B9>aL>*B z4Wzks*i{*_{$#W$Se`y7|7YiyKm9(~{bpz9=Yzpte*M$VFGKjBKkk0B`@8w$PrJK2 zJ3oK_`rGS^(_i`S??0#I>=ys}edlL(`l~0A-Q92gS5P-=5;sqafyf8Akk0`xJ%E^* z=KGx9>T0g)k{B)P101+Ms*&mFW7mvA;~hVK6r(p`2qQS*fsh)eRXt&|V6#l*G+&Td zo1r}ljxJ&9IiPy?t_}eGjCsCERE-&nc{%F=&Ij$>8Jk1xOI_f`9~;|r!T762G`dAC z*-kr3r-6uYTU$C_X~t-3-AWM5CSs=6#Y80G`-5FK7_y>saH`srA}6mw*!m!K3w*Z( z2?qM&|6;F{bm`?V_mwlkrHf#hq5(KzhG8NZ3jr1h4VO8F5}kf#5)=Aa)!u{91}@2| z;U6Z*;o8%2GDyxD`%vXs>dR&)2TW<_ew%1 zn4AJYk30p!b!(CO=E}}=SS}-=rWg~1ES2hMdaD&BF@_KA52Of_dC0fT8O--=;(jDn=tI4>wT+=-mcy6ZaFCrqn;D# zO-)d-8j&U# zV|3nd%o64kTrr=rv?^;XNzP{CPVM?%QgS18R0$tHCv-OiZiGv;ilmIim}u-&PtMC! z?vc^1iHDay=BQNZhl#Cr3C7TzsRaUn&RoohOlc;kq5w-8&1mFPZlK6%bgM`}FadOT zk3_pVlgVBFTJE%msF;g#GKDl=q!J}mn$>Be-+gDJkw%huk^OiksJkzP!t8fEE@^@{ znjXyY)ftlKlW8%SGxbk5Z6)wH87-#MyqVnriS~?oRP#bJH@e55I5}MaxH_KbdW@iF z@k`x>wjBk-KeCmkl~nKLl~P*>go)*`L)mV-Gt9@G6lqbF_yz^9%PCX9mZ`+hd)BkDR0y(|cW2y$8X{Q<_qeb1NSK5Z)1s z;by=QcnfG^p0eDW8Zc|aUtTXj73A7X88}ax)7EYxmWfLAr}HF z7V#L5G0bDm{%PEhy70f|K(gjAXrjS;49$RQ<%@4v0JFW5Prs5#cy|!Po#vs z=MvyGaeZJ3sm>Vlmi=}2)b6qfpK8o74}VNW@ke{i#-0(IR?-uM-U%L)5=yu#mX?Ay zt*T%>@=G|Laaqt?HY8U{&@=U5wcrLdn4!2Ki%FRl+;5*M3RQp96uLs-*_g;OQo=-* zvq4C}uBHSRjC+ApbGv5`)s*_Fe1#xo7DGp2ooTAs!4hP6Cj5FS(x?(kVI#>QIR{BI zF`=Yrwn~NHMj9z0GGbEFe6dGHWub(7odl)RSU}{S(X>=A@wDhhB9%p6MzHFXjB;_y zQk(mzPC}K1<-6glv=4}Z6C|3_biyheqZy6W-Xz~!?az0a%*xWS(xP~wmY9r`&}W_H zzofS4ho48(`kd7i^Q7}KCOuq~Ggi=;7PME|)oW@?$?IT5m{=!B(cg0bVwTbNM8;h# zDd2NcGnXM=4_>I?YOJfc1Wl~EM0}$bg54xaa__Z5 z*HtiHRHd}QoVMu={$Ur2FiQ)bGZ$P;FI<`8!NMgB*aNuKuoot*kX2R!-usH_YsoRJ zry$Up<(Ftl>!&Q52RD%v`hHi^jc=FwL=n(PaoE=)4hub~n~ohKRoN}fWR}5k1V{|R zsbmcc4R4Pry<-9X0`r9X4Js{XU`roE*9OqF!C{DRH6TphJUs&hLI6+9qxkeyuphbs zacXJkNM9WsSNi7D+W`m*>A|>Sug}RJYr?5kfV71wh_=pj-ZAE_p?y`t4NlgZ->b3tL%Hg+&BLho-a za)F|Su>^&1Gwp-QE|>>wR;q`4gpZY=A<}_Hazb%~OQU;)F(pi3MjMmjm*@g=$Kbpy zh_YqgWG59VGIXT7i+M=*QyYn$>LGbIWvMHKxX#uviOvXbJdM@q25AP&T(XQJ#*865 zSg%}+~ysW*vK@=U4d*}i)X?uQ_(12>9<{6i1 zgmLk_SeRKjX{b(Na#jkZWx=-0#|T8=*rV)b4O{qP$`&YtD55+_D9x}DQJ z4$EPU#4Mu)A8|DSd$sQFRPzu#12u_w*V_9eGsWS9C{{xyv@FDo7CZtoHXl3Q@36yZ z%4OOBE)>N;c+^V-?!iF2hFardE(o6~O^&7oiTT(fZ|V4eAd1dzT$)*>iocusmVj-c zh&J*h5pxOMHYP+AL&Lb;SThZ|SMQ{uulTo`+bGmlgk<;Bv6?fbzsZd;XE`)8=*|kC zq=;X{rM4f3acNBO+=+9MW!jfD+ugf|nh3F9`5luGPG}NQ)pnS$l;yO5NPr-cSib;n z>uQ)4@M2(fJ@Wt<=q|aDIBd(LE!N5kML&#bJ4ONRfYZAElP3M7Nk3`QPnz_TChgnc z-$|3UIgtIe=qi=j38;3m1A^AJBDTscb~YxLEE0Dt#|!WDeMVEI!@Q(CDFekIbL~~8 zZKzpY_j3p4gc{F|y+HJ~o9T%`0LCDasvkOFG|Sl?7o{{g7iEFmUlw8IMIiQM$|qAp z*n~hs_(&dG$n3DO7qlp4y~I}p&hb8YvcwZpc8xpJ?xznS#bAa?D3|SzFIuA#p4?6D zncz+Cm*hBy*mCuFt-Um9BJ;S)3(C5f=y?O#4IZd=5STb)52xKz+}}L zH1Ph6rgXvvwi|;gduu-|eY^K{Ni6!s)A{s&p3Y~5KLE%qwG$fLN0TqP=7a{*tRddp zesW2~j2A^f1hV_kD!+1%@S;{3A9+={>NmD!QrP<};Snz!VDWelwaq#Atkmf~g@Ck} zS%&qdfaeT!LZ&w7{@3xlUd<3tBMeujc2Eofjn7I)EFr&@EME}eTOr0gHhl_;_Dde? z1R(9G30cv;@*H?-PTwn~1`zx1r9U@`RS>qpdsB?{)Y|EGRSf@xbN8t!DN6e}IzI`Q z6MDn|k|i_Vn!yEACOFNO7O)^2zp1UhJ*Yx?+&vw!P1N?HmOQ3MgmXwj+_J;|VEFZ? z?`Fp*s6?y#tSZ+EYuSq;!HR}clUHY!5HJyXO)r7FB7928eGG5-m>sf#$+ep;7)iSM zz$V_78m&*Ha>_HT9V}U&qehT7>77g7LUgz3u78c3<>xHjBj=(}|C~bF4Z7_Fljov< zPd>_`;y^dBq}scsSXCMr*Ia)9YsVy3z#`~CP_qg>>2gWVQX+D*3bqisyjORP-@+z1qlmn=PxgAr?fAF@wq3_=_oN6R7f260BM@+5a$|ZQYFXs8U=tpZ8OtYt!5IaC zf>uw@`y8Kpp00jz{^sdp>&M5xq-(uZ?=9QgqS1ebKp1@mS!W-|9CDAnu`E^NKv2?~ z(JTzE7N7sC#5p+N|Bqyp=W9zX3YIZmjQp`f}AG_?jL*E<{<<^-5w4!sIjO{aiIVJVg*+=R2niv(Ca zVcBrK7#zOOw|bU&TI$9DR=vTCvQUhni&6y|x37kh@B+n=0%&9Q}$YJGV?KnhhVlqUq+PJacGt^^t0(o1A zm^Ogb_4r{xAH07$?#v;t7j};7@NzHtC}-q&O4F1j{&6$LVor;KMpH!Xp+s@9gcaM8 zOoc4Sj7C$QTG+(ym_-ACUBO>$vc!1LQrO$N7PdYPZei$JiEOWZSe5&0(y`F>hLx!) z^rDGE5Y%V}dTqtJt3uo}0vR8Xm}R+`ap`-|QK*G|w{fu9r1UCqRo^{HnX0W*RqA0z^KxzsNj@u+f~HKAGFfO1S)xq$WVD0*cl_}G-i9n0@H zoA1v>e#_IzV9tx_KiPyBCk`=yY^}38*wN+fwJ>&W-KV7d7IRmT-1MNx% zUu%&)b*Xs=Rh!i`<*b+uX2ti!YUv|SoaCTWr+a#Hb9T~qI#pXE)WiSRr_{Fq5tmpZ zhyPYGN9~7d26lq{mnmQtyie~WVwLOUgv;Bol5tDT>qq+A<5QwO4cCU-?f#A9-AUFs z2HFh&_pL%ViCE<@jk&ztWI4L~yAql@q$%p*kH-W{u@EJhYix4VWyv+qo|Ds5mN~0} zRIAr{YgZuEwQ07?TB{e$Q-o}tWl$Z#wzh)=3GVKY;O?>^xD(vn-Q6X)LxAA!7Tn$4 zedF%7v5j2rIaRm5A79n#ndzRXss1tDGt=u`&l*mhZr81sZ5>$V{vcxy5oTR3At@>D2Nf)yeC(rDmvcHPub-FklE0(Y@NbYe`{prUNouAt!H!Kwc@#x&WBj>1S zv{Rz-EENx!0*R5E!wg0@i0#1XzJG+WG+Y>bOVqR2Rw4q>4;7`7dK5Xs3?xSgk}43l zE0LIMz8paQ+XuC{+HdR?3;sD6=|1IV+5RVa6uRi{ji%V}`lM{xSv=@Sl?krx z&x0`kg_x!4bb^0;wFes>A52OUwShLJvuP*19wR{Le~@RxNe}$cx@e2KsJHH_Ywa3J~)Rz(cuPhb_l*>f!HH-RKUeWqut9M+>zcL7oY%gsy zREcg^tU?fBpqNK5UzJZ}9P4B@S%4@IgUimuSSA3hVkPIt-<9I}7l;N#xXWc_=XBE2 z?m|T4bfgnAdx()ps*0Qhi&dA76nIS9>k)9@z|4;XR8A~19$xL{XX-J(*F3{#dX)v8 z+W|5>1@N1(8EcvZ-JnQ4J&NlgYKV`T(5jO!0O!T0skx;kimbn1oEKoOuo)>v`x&t< zl-gC5oZMV}T*VvQT`8WG8Q@ijG2h-wD?(6kf&Is*v&m)>rYr(G=*&+2U%RQk$rICH z1C}?X1=lMz+2zijY9w$%Qmn8MbX8sZ6V*6i)zgr+ykT6xNYPurUQi4C)9(3p^r1`o z3s&wkym@z0+ZQgl9_!~;!X50pTWi$&D2kYvFKefDAvX@Y2Xm&B^&CD|`%?Y?Ev==0 zNNa}w1&o>>;^-L*!sn+_SKIEd(JR}hC?$g<(gthUE zE>CxVW0os%8S1JokIXQdYlC#7oJ$t#a&7NVxo&nyne>+-$cD>|B#}O}*(&QP%5PK%ftCYLefYq8^9YXbUujJ88^;o{4WN&38m(d~b z;?_8p>94-(c71$&PL5&{z7PE(M6P-UjpAG%iR$wAct6k2F0K&gMZzkQiPX=X_Q3}LsFvf_gTMHr6r7bTwHd)V!gSD^;| z@Nk+eF?tRGi?3NUHO0xlEDI5dgo(mk>ZJyj{j7xnE561x8SWRH(8eU!y0K~mef=va zubyc@Z-TvF%8KFl#DBYNp-+1iaIT|_C;lq<(1)hr9ujJ*HzxMRAd)KWHKh3Em+D(x z!;TET#RY|W!QpHdYf583NN;aw>eQJSfg^r@l(4!ItjIyUJiIWPV82y!h zNmCIMZlNQC3dhPB0?L18M!y&jAiyi0cJV9K^)+IYRrJC*P`i~CQoc0_jnYw((^?pn zPuCkwX-Fd@BhRGxUmv9Eqfc++N*iI{tg^D?-aqf`#J_snzhLE|Sy=0_OXR1W68Dj} zGsS!Fw^wi-9nwqQRc+-Bv~gIGtWn`5V*E(nXiNf&j`w5kBjzukctp1o6{<5LsV}U4 zV*~sxKY27ww5s`mYCXN^5->evU}j_m*)h$RuW*5f`|$s01jTz4THJZmEj+)&UR0W_o-5UD+9#tSUJGNAyANnR=%I_q+Y5egT#~sFJ28x^0|n1 zds@e_0ar#=g&Ic>DkYP-8q32gq#B9K^alS9F=z!5LyBOwk8RFf%l>*-` z7e&Ul+bYLXy+dY4;>c8|8MG1OnanZ2AQ)KZl#U8rZ*G%Y%WsPe7!^^U;&HNs=6Nsj zW6SmmeV4AnJ}x)w1(k;Lj22_tQ!4#31`T&gN9Hi>KvM&HjX>y@hotev6yN{yltRiZ zGGOY!BNKJY2tW<^z`?1#XvgI#D`Tv{`()k1%_U(v%JFy{u!N7;6ya|Kn~42=rkYqJ zfpb@@?4nz@fBeyKN4p6T_qB5;C5AO5Vt#z{3I5~)+j(|XI!q1;2@6L zskaEQK0o4^q*NnSwPIhe#~wi89QQR~*UHWRN&F>jNT6K#p)#nm9HuE7)>jLxV$`Wl zv#4nxz;m}i^pmur)nG$_Ix!S5pI>pG|4lef+?$Y*hOSf6PN>%sV2zcnhnbpO7z()% zb*xon357`@t-=&(ZfuZV)x%d!42)_?kXS&rwJ@Me6WNs)(5~3%z6WSR#uUyH$2Yg#r$gQcuMaW)4)~X;uFf8H{~r zM8(~PWrywo^J4(h72e$1*qa4fjUw8Jy~^W+rv(u?y0{-SU`?C8<7*7TQH4qx-6SEd%vqq}FHyDsTMglmhv{3~ z9I%3zO26Lcdj#&)Vm?>XC9*()T1w96zh5{H08r~xk=+(mQT!aj7IX?xuMA1GIM=q= z!6oGy0o);emYfHw=aA--tQ4JAL4$r_Uay9jC<|o#b5o;&ttu*CF0Zb2!jCeYR{m2f zK-bh1W^zxy(cr|%kn)BoNC0=Hk>AQWQGheLG=n;9b zsQrP(Bv^!*_R|)q(d21v4(q?L4NlPXG9zavam|jp*`5w5N(i6D${WfahfMDF6Chfq zpW$w16F_-$Yu|GWb$ncXc|`Y>Wj`K|p|REy3r6e<2oj!@P-yynwb+*Ke{Z#(bd9%6 z+H%@vR2OdoD@Z7=xvC8AfB3Ke8(j_B8;r()R@jCx8>{&Dh#n-DYY8AxFK9SB&X8Jt zSm4r9wfw&Easd#3_>@jh8E(`U&u^MwainY}@TGen0Gb3I)yR$ghKsJp5beD!+C1i? zs89z$Ez3n(B~Ect7B-o54C48MipgTwCcagI)b6-;rnR;Vsi(t=l30jwZsGk^*)FVF znDh!cNgwrh<2imL=YI9|cXz$pOx^F6N2z45(A)>jUs_51;v(#^LqT^aA%< z;yL1l9Z1D)wxZ6k9UG zi;RdNFuzZq<#f4J;AUJZfQi_kao zf`866<&B(Tf$%c}YwoJ5cE#?YFxSUdL&ozZ$n589{op7Se!y>p{zqkuCuKV|RYX=! zg|^HjL-!*aM=p|kQ6n0W{HvR64x9{v&|+aLx)*D@vi>80{xjl@jn=)fB2AdSruwjg zdVXLk7Dw(!xzjvsfdP$NXTItwXg3!R?QTIuCHtB$WzF>)s!-z;=u@IeA2a$1ks#MA zbSai;H*Ia%J2mjA7Vac*QsApWU0VpaFX(AM!DBFuV-+q}#6ba7*HLOtU6Gp&*ok@1 z2Y1{-=IY}Y6XUyYTsSnZuHbjG%q7o={+s+gh*izhqP634hn4zfSSb+q*mITZF;4qT zjd6R8?jvPPHX0==+PohUc=#<<^+=TW_vsQ&J_0ST)%mKd`Y_4nJ0AVoi_X9n@>3=LHX-{584ue{7mctr)qZA9QJZ*6Od%PVSjWO|5#fy@un~t;)G+K4h?=E^|@jz7O z$Dm;nB}Vq^ven90L5rZA<=!`vjn(9AEc9M>@XmeqBy8MgBkLO%v#(GC6(HwqOQ9@0 z-zj=)ZVlHmkd%_1iTwHGm&-ovjKA0~pT2yi{OkStY=W9914{)RkpCLBCF|@0m2A>MU`l$4I6~BmWJMUnn#;oMSQLU)_+xEPEWGW7#R& zu^sO#Nf zM66cIHp)kJDf#ATo~xRqWE{zODBjaDoipvla}$%}FweP=ggVwWXO?22KTJjOmj-21Q!3xpD@TU$b4fsdvou zpXdC6ACg-?u;Qo)d6N7`lHt<7Rgw*ALQp(2`U1UMQQiB?uiWYlRkeyJ>uNh{8c?y= z`jEd~`WvWwv^HJeja|@U@7Ey#@S$i1Du~+*VmwTl`mYEtZ)Q(p`;^vymTxzs)^=+7 z!i{_Uo_4J;*eW<}NzM4DzfV*oEN|~+445!aWf&m_Om^z@eUf=@}Yf*MoERjxD4>mu|^x*nWJ-WO*& z$KPJdmKxewy$Kk&X|J=OETE zcIvj;liBZWkvu|asft)@bRoO9BqQHM`=)}s<&eB7c)#{?^1WnKi04MVt;`R+U~b(y z?rIa0SM1-2i3}*rqGo+g7I2ys8it66J=Yy?F-C=F!}-rWx1j}5Z0HAw*De<1VFT($ z_9Lf5?iGz+jN|jfdd)O zVFz()uMxIFB3VCUdMblXo6u*VUc3X}1rE`u8enjuM6ubU)=+a{?T%bZ^CBuDuJ^#z zEKO;w$+S#gvI@~@MZQ7j#z4d%vP%sR4xfBeu#zcr1nbG;+Xo-Djx>g?5%G$P+>SOF z@X&603h}RF(cN=~RO!J9E6eh$f7qjo86Y|eeYp&mJ0Zd`1%z;62HBh(k`~a5S_)_t z-DknIlh>KPO;<4WVq$C@Cttk?zBzej{@ntfagMQP(9^}wuh`Yo_D!2Eg&!TR3cYj1sK(TGY=fv z>tP)F*j3FDDe~D#KAX2$_2Zj)^r9q7ml2GOi(C=+o!<&Yp{XG zAZqAz7P>WsFgt*;&KZMh<<6>iej=2vUHWfgoe z*!z9IE?Qk0=!*rDZHO#(l~Pp*ZZoX*>wRBees&=GJg!O)d>meGC{_8MG*@-BFM8s* zzka!y>(qpPe~l3Hk;D#k_Io>}wTY?L*A-xxgViehqu=EB@187DP~OqHs-`t3nL_*5 zhAfN_feKpz=BrE!6@Nau3N@<=2~z4;0On$P_ivO`zp6prTmO$O5}4p#655(RXJNLf zO&of$4*g&)$EUE*SexllM;ZhcwhG7meF0=#&i}~5R6v=dz51-l+Gb8^@S3tt-~DAm71QNHbzXl?7Mzkm$|j}gTYxE%A%AR-q546D z>|}(D?}D4`^&M>m#u8aeMxB}+aIRgHzO(DUyr4kGoJ`Znl%gAhe10~=gbc9^w^7y{i7;|0Y7?)dZ&du9FrHeDa6`agau_ zbcp8m3&hDgjXi%lVMj=feVAIVN56((+l-#Wd(&~u=6Z7?5?T+(v$`JVRkU!JnD-&{ ztGM(z{9A#2?~yPib8022=Sw-40pQK>r{4yNiT$njO}~L~5%@a9nmL%GvDpgj%T8?p zWNvZL<;puCLE#p-T!<2&fDcXj|AQ3&**Iqw|SThojl#aD3Yz#sYK*eafTSbjf|+7kNTgB)p0DuPYSgAG*Io z9mk$xb`?q+XhATok(LHikHo4ZmgvgUj)upGO}TjB${4YhC^?qs444k=0&B!=_w!^D zsrHUUX^YyLXik|_nR)?dlfhfnc@;H3Nvqk{Bt#QWM?30#)BL6 zGF-XuUe7g!QG;W3vfn$^tnsQ; zW6caVoVdi)&Q2*Xq%;G!;>J9i2#$%pjIvL`4yW2refYiT0o$a_UcfTP9wR*QMH3pz z(iZxLjFY>NDm)D$26456TBe6wXS=S-Zg?ln`UvolBr;JZid>VaPK!kFXiPDALeC?b ze*l3TZpr5?lsLSeTfEaTKVIjO6D`Gpd|j5Sl|*Ap=-X7a!iUj>9r4O*7hOV%Qik?& zi>+t0s4OQpZOSEdGa7_@$v^2HJ1L?&U8i)7gwnpBgY<%hF=?pohm^tip9dvjH9p5u4({6XmVa2{o@@8{>?as65I@wy(|+4+bM zj)`kJp!rjIEeQMQr|#_V@qK!)PSFp7bBqz8u$}Ipc7%rDZaoh<0JUF<^CHex(2_+c zn+zx;)@A-dp-Dd9gFnjG&z}#qTjOf65I{XHjQHK0vDl;)I)VX|J zwaHNvtOAKRih;aHiz>E^l*FwyZxhyntPB+@wq#g~+>1HQh$2w>nJjxLz=LC7-cqtq zqeeF2bk5H{fZbr1r&Qm;5KrFKuvlZk2kp{q+zJx8L~Q7QKSDIt7gQDf;On(x4MdH- z2h*A5Tz|n-_@pvPqrz|QU*gZR-x<}PSe>=$v z(Y_aPg#FH8jHxmfV&HRzGCqrCxe8}~3}?EEWSn+lbkeJg*00RDLwGyGsvJi>E0uRe zX)@ca&2FsfUt~Eb?1b?#wNhwi;dncU&m=pJS7TL2&L~Dek5~;aQTsaoEv>k)A>KEE zOH<+iK|^ZI#T2S?;(jptvw6ZKfsI!L@25hpxQKT*qg3&?+ioTa?H`H_h(=X9vn-lV zl^7V;c(}qu-Q_hm#oW74weE4gp>eC^RlRJmHb(KonD30$`5MoarnVO~ASOHSIHoAx@sa5Is3pJs>#{ zMaDx;lR;XT$HaOcJ&XD8k4lLZ8YL=UkjDI%rb6)9PnDWt09Q4Vm?H&13N6)WOv!2V zQiE|-EbP^U*g9H#P$@3k>Wr~~jf3s*?&Ct!S}SFCfiuyYTWdhQw9*RV0i2aDV>~RVYkX4q{QLm$UC;NdiQ~VA|O)d zZ4E@!!Jf&x(i62Mga3vmgXwXbM>^mX@GxWS& zr+B6M7EU<@?xfrtUi+@CV|A7o|bDA6q=7w7qQFgog)RPH5 zIdNw&OrxeSK54))Hx9~3KU&2fSwoszp5aIF3>b4JpHZSOD>!W_G6PiW6y%Hls%5l3fLG19n~*_ zinD!i9FQo>4yWff9=t zRN`dJ_Dsd9lpaus_o9tC(=mOeHsBY|3*6<4!LSH+TJ#8vIxUIYl^tTh_`%=R$! zP6>VqUG50Fq8@pbJkW2Q^z@_jF$S`!2RiMR9?VWlI8I8luLq;wF4tIe>rgA$&q9%Z zI5nlmSYktWYmE;h3N=*G!@8Uq^@{bCLf2YXX$SC{KQDY6I|L2+d__EWbR<6Bk}%|F zp8QzyfjzpsnVRW$$oivSEp6+j6u&g5VJBGYi8v(@dGKmTl^1(ILFz--W zPmN8qdkx!1#K_2J69g7aisk#)Ty%80p4a0dnSB;n-X}%LReKMZvjaV!i;c!RrPt{v z6*CT?ehg1(fAVTiXCY*=y6?9>vdMD4j+^tkzlBh-Q)1q?%{JtX&T;SX=GGc(IE-y; z#aG6A^J>c!_H=lV$uWoUGDIIFIs{Jvf2QFCP!m!K8^suZk`YcqMA-`{vZ)>O-jU;i zc76**rq|51{EU}oHJ7TBC=TE4g#6whJ||nmx%>$k_?EnCoZ-GSGJKX>rCZfDx4zTc z>*SOrpH&daxf0NBRCaM{G;kLgv7K0W9(&*g!HJIFHv3D*K}Y0Q6_Vbi3Q+^qI5gAr z!h#w6nWsI#gYrC}ax%edTWD1R7ez)?np)~O=wP3%PGJqpQPgl<^w=hY^BR*M{2yDN z{adoV3XZv?@p$NF@o;lanX@zAg%VA-WuKW?r+u02`^83U$}%a&qq!rf33)Z!ttTBE zvR5#f<$;EmWkhvFdPaWuM1I_#AF&z^epEaufR;md1-Wn<3VA_ae#(44 zDl>_9Z6&!yMMpFiC!b~v%^<+@WIZk6cKztID2Nven5y4=FEC@45{Gh8d#L)-zVz<= zG)Kzt=hN6%8VnOLCS(-IKFarraSnWs=6UZnG*T^)aT{LUFvQayB5!Dv z_;h4TROW_hcc;7M>W~B{>#+P-{WPR&~AET$#QRmvhTswmYoF@yg{i> zh2Y7cQQz9FhA1$f8du1kQ1`A0v8P5yV+YVMjSikzvr3D)v^TEM9479SbSwQL8e$&&*N0ht2Mvhch4;xP9x^Z8A9UMJazp|^g^Lx1r z3r^)qy$1etycKctb4~IAGq&~edQ0!{rdQvt`XeQ?eto(m)so$u zE3Es?!PoQsVf|@!6lHaAeZGIX<|C!^`R4HYU~#MX$N9s-W3m6$rd}7WFW=kA%Z0oB zUU2jDCQzrV-4lF!etUmlo@!s;-I*b0zXiycsIlAZis?k!(|i@oFR6&ZIpTwF(2 zTU`^I-F}brrY^6k?IiYlAw~1^6;L-H^^eu-wtFi<4jg|4}W%D9UMw^iG3-QjKGP{C*p(fb19)mO^u0( z@!j$!k%09+8s}o#Sw`U+afCe1^cQeG)E~||oA!OgI%_p&67YQ#j zo;F)jHIJ><)6Kkmsjs+%=y35)eS5cWueJ6kBqo};m_=M0ezjTw2ofT{9e|ei4u;*2 za)!Kt53B8Wz0cX7;U3Yi1v37INPMq#zOBc;_(ZvOkFPJ|mF~U^z((Hr!4b#9W!s!+ zm}S^b1rqt1xHpWa(JMbfzwQ3#XCDWb>&x@ni$ z)$01P|D@IW!|}Zl{BrlYcIJ=Y$=^nqH6QzN5(h-VL`HV=j=j>E+|u#q$KQ-o0D|K04gxLpRS=YuIkVy4`|LR?|BrXS3TD>~K5Y zP2k=O5?8^v8i0Fs9Ah`~+L3y2g&s3utlM;r`1M} zmDwVH=Y!Q8z*Q_`%_iT~EVy2Mxu5v#g6D|hF|n^=s$$yvDA>@v1=rK$aiY`L_fVJQ z!JY3YSONBKI@Z_4lLO)0Ee-@zAQ;yEaCv*6#{ra&i@pD7;5`e9T3x?WTuBz)2uK7gl_?*w8d47Rde%*b*y1tB?JRG%sL0 zY1ei0ef6yAHrK!3ipz|LxeqwZZbsD`n%lFV66uimU&Bm+Mjd9(9(3Bd+Pvn8d5?aGJWh@-ZhNer>2;qsPNQ7x z{S~~Fb*}*`KHetz8o6igB{(}l9g!f{Jf6Gnxw&J;TDuD(z5r38{M`M#Ij?l{jKRlq zXIVWJTshM~>k_W>OVH-}a_6P%M^!{5rx`2AGk)U@-evQH3R4FfuXMc;R=Y18UGG`kTh8F|yeW{tJS^|b0qTI` zdEK}%5B4vYbg!O%O+p12yyx8h$Xk=x{R&4O_nXK7U38u^)o=oqLNWA+y&)i>c_qO|cbKlD6&$9a+Ke)U&@H+{wZi5Ba>;ci;Yj2yI zy>cIK&n5AfIwqi_bZoQxJUZ>6;I3<^?yY@!8M7Y1^anBceE@O4~#MJg;6`zAR@jbFU)4H1ZInTv={1w@w+r!NpPxBTJPSZMGHVHUq zI0xD8dP{I91ei{ol>wTcbaeQ`h(N!$^SCu*Kb9^8i}CZoBhb zDNw&W-+j>?4!q)pB|&-4c>v#8ANvI~Eql8jy1l5&HwzHz`3tn&hxJccaKFy+5ugU?9XJD(RzW}kb&*T^yAITGy;uM>ADjA2Zv4ts z$JgCG#m6&?YeVLZvkM~K#P!+bH!A$wX_75p?)P&&_lwUtX}EuN^SUCKsk3_CUqUa7 zB*%5COLjd+@Ogrmu*Jaw4Ap$+=;8A)m+sGf(OMrIHU2;n`QseNJabsyrsQ4~Q_)%rUc zMGp^oWQKOJ5N`$Fa62lFBMnDPwS6~sos_Xn2LJnaxljHA_v=^=Es09S&TJ(;us%LF zi#YsA2KV~!L}z@S{<|!sp$%%m(3l$s>4Wh7z~;hFQc9ue{tLz;CkS3-gZlHfg9spBR0TC5XVt&#dg3rKWT`g#tA z5$0`^92WjbxV(Q9#%{%yRK9*U%m%wXmgkP=%9#0W{M<)En~M(eI8HXEHc-6C2{maR zw7J~5a?F^mad9Q@T}0^S6Cv|Tc$d19@iX$G&=Z0JkTS4-99OWZ6O%PMFXG#HXZvOLurO_{eQ+F*v1>t`;-{ijXdQvaN* z@LVv}FIQoV4!%TeHbRyJFEEPeDEKH(PYd_|(#7`2*3&-<%GZH<87fy0B)-gf7sTn@ zV+_#g+LjdHrd2|SPR&2^NGi~7jJJlJ`5PKHH{pxS*!O|Wdy1DGY9FMb8GgP~+r=EH ztV&Mr{%g04S}JUVGOT61z6MX?;>ZkI${S16lO8>ff}Hy+4_QBsk|r4`<;eGyZREky zfpO*(bM-y@(Uo(#@P@u4a`PlSi!}3~*yqf~ZgVsCQR79Uc}L{^#EJCd45Q@{jr3xU zCl1>)4_)OaXkOVj8r)$>arU}3>ZiDm4dG0zrAi;m2T$re78{ChkWIXUNl~utdXzVj zH~45C>f}*I`g1l6N{+zK%q9c&l=9&i4$`^4q#ZJ-x;!-pSL%|9#*`I&VB`kqS?TD% zYpn@QF%4OvUH`kYExZ7sL^ouu{9>DXKpR9DfX?_~ddVNim;Xlhm)96-RmtslFuPKd zjrdsXT0vr+DlVc)w1$RG{tAs%Bo4KprR=v^D;P0cL*FVqLm=E)oPvh_TakuZx5)BC z7?wfxktu)n3V;gZJoiO@2o_j?z!UnkH#Y16>JN=_G}805`WJR{nkuchw{8hgqm!cr zn1Fmon#i^>KG#S^w>AzNg*uun*8CwTDRv)Wcfdcu|nO<6*a4Q(Xg zOfXx?k<_Ri+ccDD9pQ0iB9bfz_YlO{pz!*?qw#R~^Fr09as0E21)9LblwvuDGj{xe zT)nJN&kz)!TRU_Yi?40 zGbH=29bbW3N@LJAAkIf#$!YuvobD4M9Y!rJA2523g+t@I_7(2`!P&-XAnt<=*a*zY z6QxmtqNzpnz?%$C_S8DPWTW1kVXM~5e)99pVWV*@F$9`kRFYI zOgTl6Y4m^mBqI)=wkJJ=jI=B@B}?%T^bMiLEr{?q?HhK86zC=4kvW%R3(yVWiBz(f z%lrw+U^J&A%)gJgDjnHKbTpre8tHw}l;OzKg&?5V5U?De{Q!Pg_!%9@l;$j&b71;M z7V;U!3!NT9MCr%&DxSMNMls%=ozOGcm)7dzob4nR$`5`u8fPzx<*im7L6Gv;EJGpK z9fxLqq%FGp;jXx_yDQPv)BoZTocyx9#8}DAwfiz8gMRGi)EnTHLNQC{`6mP)ZPoG$ z8U|Zq1UyYaBrLCX8SIW@AgG;SiwPypVt@(tRbr;p$RGyaq7-(iYv#d$nrj#v�NT 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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�NT 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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


i9P>10+UO+GNWtxEcxq?Z1 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�rQ>~ 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 literal 0 HcmV?d00001 diff --git a/stable/wordpress/1.1.10/ix_values.yaml b/stable/wordpress/1.1.11/ix_values.yaml similarity index 100% rename from stable/wordpress/1.1.10/ix_values.yaml rename to stable/wordpress/1.1.11/ix_values.yaml diff --git a/stable/wordpress/1.1.10/questions.yaml b/stable/wordpress/1.1.11/questions.yaml similarity index 100% rename from stable/wordpress/1.1.10/questions.yaml rename to stable/wordpress/1.1.11/questions.yaml diff --git a/stable/wordpress/1.1.10/templates/_env.tpl b/stable/wordpress/1.1.11/templates/_env.tpl similarity index 100% rename from stable/wordpress/1.1.10/templates/_env.tpl rename to stable/wordpress/1.1.11/templates/_env.tpl diff --git a/stable/wordpress/1.1.10/templates/common.yaml b/stable/wordpress/1.1.11/templates/common.yaml similarity index 100% rename from stable/wordpress/1.1.10/templates/common.yaml rename to stable/wordpress/1.1.11/templates/common.yaml diff --git a/stable/wordpress/1.1.11/values.yaml b/stable/wordpress/1.1.11/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/youtransfer/2.1.6/CHANGELOG.md b/stable/youtransfer/2.1.6/CHANGELOG.md deleted file mode 100644 index a055a41c389..00000000000 --- a/stable/youtransfer/2.1.6/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [youtransfer-2.1.6](https://github.com/truecharts/charts/compare/youtransfer-2.1.5...youtransfer-2.1.6) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [youtransfer-2.1.5](https://github.com/truecharts/charts/compare/youtransfer-2.1.4...youtransfer-2.1.5) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [youtransfer-2.1.4](https://github.com/truecharts/charts/compare/youtransfer-2.1.3...youtransfer-2.1.4) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [youtransfer-2.1.3](https://github.com/truecharts/charts/compare/youtransfer-2.1.2...youtransfer-2.1.3) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [youtransfer-2.1.2](https://github.com/truecharts/charts/compare/youtransfer-2.1.1...youtransfer-2.1.2) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) - -### Feat - -- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) - - - - -## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) - -### Feat - -- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) - - - - -## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) - -### Feat - -- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) - - - - -## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) - -### Feat - -- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) - - - - -## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) - -### Feat - -- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) - - - - -## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) - -### Feat diff --git a/stable/youtransfer/2.1.6/Chart.yaml b/stable/youtransfer/2.1.6/Chart.yaml deleted file mode 100644 index 7c9b7da9a96..00000000000 --- a/stable/youtransfer/2.1.6/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - truecharts.org/SCALE-support: "true" - truecharts.org/catagories: | - - Cloud - - Tools-Utilities -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: YouTransfer is a simple but elegant self-hosted file transfer sharing solution. -home: https://truecharts.org/charts/stable/youtransfer -icon: https://truecharts.org/img/hotlink-ok/chart-icons/youtransfer.png -keywords: - - youtransfer - - Cloud - - Tools-Utilities -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: youtransfer -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/youtransfer - - https://github.com/YouTransfer/YouTransfer - - https://hub.docker.com/r/remie/youtransfer/ -type: application -version: 2.1.6 diff --git a/stable/youtransfer/2.1.6/app-changelog.md b/stable/youtransfer/2.1.6/app-changelog.md deleted file mode 100644 index 4abd1e7e2f6..00000000000 --- a/stable/youtransfer/2.1.6/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [youtransfer-2.1.6](https://github.com/truecharts/charts/compare/youtransfer-2.1.5...youtransfer-2.1.6) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/youtransfer/2.1.6/app-readme.md b/stable/youtransfer/2.1.6/app-readme.md deleted file mode 100644 index 6d64d7f12a1..00000000000 --- a/stable/youtransfer/2.1.6/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -YouTransfer is a simple but elegant self-hosted file transfer sharing solution. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/youtransfer](https://truecharts.org/charts/stable/youtransfer) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/youtransfer/2.1.6/questions.yaml b/stable/youtransfer/2.1.6/questions.yaml deleted file mode 100644 index 79195dc59b6..00000000000 --- a/stable/youtransfer/2.1.6/questions.yaml +++ /dev/null @@ -1,1899 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 5000 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - description: "Config Path" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: hostpath3 - label: "hostpath3 Storage" - description: "Uploads Path" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/youtransfer/2.1.7/CHANGELOG.md b/stable/youtransfer/2.1.7/CHANGELOG.md new file mode 100644 index 00000000000..5a081d20d4b --- /dev/null +++ b/stable/youtransfer/2.1.7/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [youtransfer-2.1.7](https://github.com/truecharts/charts/compare/youtransfer-2.1.6...youtransfer-2.1.7) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [youtransfer-2.1.6](https://github.com/truecharts/charts/compare/youtransfer-2.1.5...youtransfer-2.1.6) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [youtransfer-2.1.5](https://github.com/truecharts/charts/compare/youtransfer-2.1.4...youtransfer-2.1.5) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [youtransfer-2.1.4](https://github.com/truecharts/charts/compare/youtransfer-2.1.3...youtransfer-2.1.4) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [youtransfer-2.1.3](https://github.com/truecharts/charts/compare/youtransfer-2.1.2...youtransfer-2.1.3) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [youtransfer-2.1.2](https://github.com/truecharts/charts/compare/youtransfer-2.1.1...youtransfer-2.1.2) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) + +### Feat + +- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) + + + + +## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) + +### Feat + +- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) + + + + +## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) + +### Feat + +- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) + + + + +## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) + +### Feat + +- Move Kasm + YouTransfer 2 stable ([#4610](https://github.com/truecharts/charts/issues/4610)) + + + + +## [youtransfer-2.1.1](https://github.com/truecharts/charts/compare/youtransfer-2.1.0...youtransfer-2.1.1) (2022-11-30) + +### Feat diff --git a/stable/youtransfer/2.1.7/Chart.yaml b/stable/youtransfer/2.1.7/Chart.yaml new file mode 100644 index 00000000000..1a98d156bdc --- /dev/null +++ b/stable/youtransfer/2.1.7/Chart.yaml @@ -0,0 +1,31 @@ +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - Cloud + - Tools-Utilities +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: YouTransfer is a simple but elegant self-hosted file transfer sharing solution. +home: https://truecharts.org/charts/stable/youtransfer +icon: https://truecharts.org/img/hotlink-ok/chart-icons/youtransfer.png +keywords: + - youtransfer + - Cloud + - Tools-Utilities +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: youtransfer +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/youtransfer + - https://hub.docker.com/remie/youtransfer + - https://github.com/YouTransfer/YouTransfer +type: application +version: 2.1.7 diff --git a/stable/youtransfer/2.1.7/README.md b/stable/youtransfer/2.1.7/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/youtransfer/2.1.7/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/youtransfer/2.1.7/app-changelog.md b/stable/youtransfer/2.1.7/app-changelog.md new file mode 100644 index 00000000000..6202a93e592 --- /dev/null +++ b/stable/youtransfer/2.1.7/app-changelog.md @@ -0,0 +1,9 @@ + + +## [youtransfer-2.1.7](https://github.com/truecharts/charts/compare/youtransfer-2.1.6...youtransfer-2.1.7) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/youtransfer/2.1.7/app-readme.md b/stable/youtransfer/2.1.7/app-readme.md new file mode 100644 index 00000000000..af2e97e5be1 --- /dev/null +++ b/stable/youtransfer/2.1.7/app-readme.md @@ -0,0 +1,8 @@ +YouTransfer is a simple but elegant self-hosted file transfer sharing solution. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/youtransfer](https://truecharts.org/charts/stable/youtransfer) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/youtransfer/2.1.7/charts/common-11.1.2.tgz b/stable/youtransfer/2.1.7/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/zusam/3.0.8/templates/common.yaml b/stable/zusam/3.0.8/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/zusam/3.0.8/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/zusam/3.0.8/values.yaml b/stable/zusam/3.0.8/values.yaml new file mode 100644 index 00000000000..e69de29bb2d

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/ztcuui-aio/3.0.8/templates/common.yaml b/stable/ztcuui-aio/3.0.8/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/ztcuui-aio/3.0.8/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/ztcuui-aio/3.0.8/values.yaml b/stable/ztcuui-aio/3.0.8/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/zusam/3.0.7/CHANGELOG.md b/stable/zusam/3.0.7/CHANGELOG.md deleted file mode 100644 index ae1dfee1200..00000000000 --- a/stable/zusam/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [zusam-3.0.7](https://github.com/truecharts/charts/compare/zusam-3.0.6...zusam-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [zusam-3.0.6](https://github.com/truecharts/charts/compare/zusam-3.0.5...zusam-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [zusam-3.0.5](https://github.com/truecharts/charts/compare/zusam-3.0.4...zusam-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [zusam-3.0.4](https://github.com/truecharts/charts/compare/zusam-3.0.3...zusam-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [zusam-3.0.3](https://github.com/truecharts/charts/compare/zusam-3.0.2...zusam-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - - - -## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) - - diff --git a/stable/zusam/3.0.7/Chart.yaml b/stable/zusam/3.0.7/Chart.yaml deleted file mode 100644 index b8deddf45da..00000000000 --- a/stable/zusam/3.0.7/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v2 -appVersion: "0.5.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Zusam is a free and open-source way to self-host private forums for groups of friends. -home: https://truecharts.org/charts/stable/zusam -icon: https://truecharts.org/img/hotlink-ok/chart-icons/zusam.png -keywords: - - zusam - - forum -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: zusam -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/zusam - - https://github.com/zusam/zusam - - https://hub.docker.com/r/zusam/zusam -version: 3.0.7 -annotations: - truecharts.org/catagories: | - - chat - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/zusam/3.0.7/app-changelog.md b/stable/zusam/3.0.7/app-changelog.md deleted file mode 100644 index 95bedf8e960..00000000000 --- a/stable/zusam/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [zusam-3.0.7](https://github.com/truecharts/charts/compare/zusam-3.0.6...zusam-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/zusam/3.0.7/app-readme.md b/stable/zusam/3.0.7/app-readme.md deleted file mode 100644 index 576c44d2184..00000000000 --- a/stable/zusam/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Zusam is a free and open-source way to self-host private forums for groups of friends. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/zusam](https://truecharts.org/charts/stable/zusam) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/zusam/3.0.7/questions.yaml b/stable/zusam/3.0.7/questions.yaml deleted file mode 100644 index 9c91ed082d8..00000000000 --- a/stable/zusam/3.0.7/questions.yaml +++ /dev/null @@ -1,2049 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: App Configuration - label: Image Secrets - schema: - additional_attrs: true - type: dict - attrs: - - variable: INIT_USER - label: Init User - schema: - type: string - required: true - default: "" - - variable: INIT_GROUP - label: Init Group - schema: - type: string - required: true - default: "" - - variable: INIT_PASSWORD - label: Init Password - schema: - type: string - required: true - private: true - default: "" - - variable: env - group: App Configuration - label: Image Environment - schema: - additional_attrs: true - type: dict - attrs: - - variable: DOMAIN - label: Domain - description: DOMAIN is used to generate urls - schema: - type: string - default: "" - - variable: LANG - label: Language - schema: - type: string - required: true - default: en - - variable: ALLOW_BOTS - label: Allow Bots - schema: - type: boolean - default: false - - variable: ALLOW_VIDEO_UPLOAD - label: Allow Video Upload - schema: - type: boolean - default: true - - variable: ALLOW_IMAGE_UPLOAD - label: Allow Image Upload - schema: - type: boolean - default: true - - variable: ALLOW_PDF_UPLOAD - label: Allow PDF Upload - schema: - type: boolean - default: true - - variable: ALLOW_AUDIO_UPLOAD - label: Allow Audio Upload - schema: - type: boolean - default: true - - variable: IDLE_HOURS - label: Idle Hours - description: Indicate hours during which heavy operations can occur - schema: - type: string - required: true - default: 01-07 - - variable: VIDEO_CONVERSION_THREADS - label: Video Coversion Threads - description: Number of threads to use for video conversion - schema: - type: int - required: true - default: 1 - - variable: VIDEO_FORMAT_NOT_CONVERTED - label: Video Format Not Converted - description: VIDEO_FORMAT_NOT_CONVERTED is a comma (',') separated list - schema: - type: string - required: true - default: video/mp4 - - variable: VIDEO_SIZE_NOT_CONVERTED - label: Video Size Not Converted - description: VIDEO_SIZE_NOT_CONVERTED is in Mo - schema: - type: int - required: true - default: 10 - - variable: MAX_TASK_LOCK_DURATION - label: Max Task Lock Duration - description: This is the time in seconds before it considers the task as stalled and clears the lock - schema: - type: int - required: true - default: 14400 - - variable: ALLOW_EMAIL - label: Allow Email - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: MAILER_DSN - label: Mailer DSN - schema: - type: string - default: null://localhost - - variable: mailer_auth_mode - label: Mailer Auth Mode - schema: - type: string - default: cram-md5 - - variable: mailer_username - label: Mailer Username - schema: - type: string - default: "" - - variable: mailer_password - label: Mailer Passowrd - schema: - type: string - private: true - default: "" - - variable: mailer_port - label: Mailer Port - schema: - type: int - default: 587 - - variable: mailer_host - label: Mailer Host - schema: - type: string - default: "" - - variable: mailer_transport - label: Mailer Transport - schema: - type: string - default: smtp - - variable: mailer_encryption - label: Mailer Encryption - schema: - type: string - default: tls - - variable: enable_cron_config - label: Configure Cron - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: CRON_CONVERT_IMAGES - label: CRON Convert Images - description: Task execution intervals in seconds - schema: - type: int - default: 60 - - variable: CRON_CONVERT_VIDEO - label: CRON Convert Video - description: Task execution intervals in seconds - schema: - type: int - default: 3600 - - variable: CRON_NOTIFICATION_EMAILS - label: CRON Notification Emails - description: Task execution intervals in seconds - schema: - type: int - default: 3600 - - variable: CRON_COMPRESS_GIFS - label: CRON Compress GIFs - description: Task execution intervals in seconds - schema: - type: int - default: 3600 - - variable: CRON_BOT_ACTIVATE - label: CRON Bot Activate - description: Task execution intervals in seconds - schema: - type: int - default: 3600 - - variable: CRON_CLEAN_CACHE - label: CRON Clean Cache - description: Task execution intervals in seconds - schema: - type: int - default: 86400 - - variable: CRON_CLEAN_NOTIFICATIONS - label: CRON Clean Notifications - description: Task execution intervals in seconds - schema: - type: int - default: 604800 - - variable: CRON_CLEAN_FILES - label: CRON Clean Files - description: Task execution intervals in seconds - schema: - type: int - default: 604800 - - variable: CRON_CLEAN_MESSAGES - label: CRON Clean Messages - description: Task execution intervals in seconds - schema: - type: int - default: 604800 - - variable: CRON_CLEAN_GROUPS - label: CRON Clean Groups - description: Task execution intervals in seconds - schema: - type: int - default: 2592000 - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10283 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: App Data Storage - description: Stores the Application Data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/zusam/3.0.8/CHANGELOG.md b/stable/zusam/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..6910937ee5c --- /dev/null +++ b/stable/zusam/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [zusam-3.0.8](https://github.com/truecharts/charts/compare/zusam-3.0.7...zusam-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [zusam-3.0.7](https://github.com/truecharts/charts/compare/zusam-3.0.6...zusam-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [zusam-3.0.6](https://github.com/truecharts/charts/compare/zusam-3.0.5...zusam-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [zusam-3.0.5](https://github.com/truecharts/charts/compare/zusam-3.0.4...zusam-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [zusam-3.0.4](https://github.com/truecharts/charts/compare/zusam-3.0.3...zusam-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [zusam-3.0.3](https://github.com/truecharts/charts/compare/zusam-3.0.2...zusam-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) + + + + +## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) + + + + +## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) + + + + +## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) + + + + +## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) + + + + +## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) + + + + +## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) + + + + +## [zusam-3.0.2](https://github.com/truecharts/charts/compare/zusam-3.0.1...zusam-3.0.2) (2022-11-30) + + + diff --git a/stable/zusam/3.0.8/Chart.yaml b/stable/zusam/3.0.8/Chart.yaml new file mode 100644 index 00000000000..8c736517620 --- /dev/null +++ b/stable/zusam/3.0.8/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "0.5.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: Zusam is a free and open-source way to self-host private forums for groups of friends. +home: https://truecharts.org/charts/stable/zusam +icon: https://truecharts.org/img/hotlink-ok/chart-icons/zusam.png +keywords: + - zusam + - forum +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: zusam +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/zusam + - https://hub.docker.com/zusam/zusam + - https://github.com/zusam/zusam +version: 3.0.8 +annotations: + truecharts.org/catagories: | + - chat + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/zusam/3.0.8/README.md b/stable/zusam/3.0.8/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/zusam/3.0.8/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/zusam/3.0.8/app-changelog.md b/stable/zusam/3.0.8/app-changelog.md new file mode 100644 index 00000000000..96e4d1c51b7 --- /dev/null +++ b/stable/zusam/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [zusam-3.0.8](https://github.com/truecharts/charts/compare/zusam-3.0.7...zusam-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/zusam/3.0.8/app-readme.md b/stable/zusam/3.0.8/app-readme.md new file mode 100644 index 00000000000..69b4484f87b --- /dev/null +++ b/stable/zusam/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +Zusam is a free and open-source way to self-host private forums for groups of friends. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/zusam](https://truecharts.org/charts/stable/zusam) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/zusam/3.0.8/charts/common-11.1.2.tgz b/stable/zusam/3.0.8/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/youtransfer/2.1.6/templates/common.yaml b/stable/youtransfer/2.1.7/templates/common.yaml similarity index 100% rename from stable/youtransfer/2.1.6/templates/common.yaml rename to stable/youtransfer/2.1.7/templates/common.yaml diff --git a/stable/youtransfer/2.1.7/values.yaml b/stable/youtransfer/2.1.7/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/ztcuui-aio/3.0.7/CHANGELOG.md b/stable/ztcuui-aio/3.0.7/CHANGELOG.md deleted file mode 100644 index 7a62e2ba172..00000000000 --- a/stable/ztcuui-aio/3.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [ztcuui-aio-3.0.7](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.6...ztcuui-aio-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [ztcuui-aio-3.0.6](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.5...ztcuui-aio-3.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [ztcuui-aio-3.0.5](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.4...ztcuui-aio-3.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [ztcuui-aio-3.0.4](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.3...ztcuui-aio-3.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [ztcuui-aio-3.0.3](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.2...ztcuui-aio-3.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - - - -## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) - - diff --git a/stable/ztcuui-aio/3.0.7/Chart.yaml b/stable/ztcuui-aio/3.0.7/Chart.yaml deleted file mode 100644 index c917f408f0a..00000000000 --- a/stable/ztcuui-aio/3.0.7/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v2 -appVersion: "1.2.11" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: ZeroTier network controller user interface in a Docker container -home: https://truecharts.org/charts/stable/ztcuui-aio -icon: https://truecharts.org/img/hotlink-ok/chart-icons/ztcuui-aio.png -keywords: - - ztcuui-aio -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: ztcuui-aio -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/ztcuui-aio - - https://github.com/key-networks/ztncui-aio -version: 3.0.7 -annotations: - truecharts.org/catagories: | - - network - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/ztcuui-aio/3.0.7/app-changelog.md b/stable/ztcuui-aio/3.0.7/app-changelog.md deleted file mode 100644 index 1d8d3565f2d..00000000000 --- a/stable/ztcuui-aio/3.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [ztcuui-aio-3.0.7](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.6...ztcuui-aio-3.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/ztcuui-aio/3.0.7/app-readme.md b/stable/ztcuui-aio/3.0.7/app-readme.md deleted file mode 100644 index be60c38d047..00000000000 --- a/stable/ztcuui-aio/3.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -ZeroTier network controller user interface in a Docker container - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/ztcuui-aio](https://truecharts.org/charts/stable/ztcuui-aio) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/ztcuui-aio/3.0.7/questions.yaml b/stable/ztcuui-aio/3.0.7/questions.yaml deleted file mode 100644 index e69e93d1614..00000000000 --- a/stable/ztcuui-aio/3.0.7/questions.yaml +++ /dev/null @@ -1,2028 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ZTNCUI_PASSWD - label: "ZTNCUI_PASSWD" - description: "ZTNCUI PASSWD" - schema: - type: string - private: true - default: "" - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: MYDOMAIN - label: "MYDOMAIN" - description: "MYDOMAIN" - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10257 - required: true - - variable: other - label: "other Service" - description: "other service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: other - label: "other Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 3180 - required: true - - variable: other2 - label: "other Service" - description: "other service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: other2 - label: "other Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 9993 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "config Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: zerotier - label: "Zerotier Storage" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/ztcuui-aio/3.0.8/CHANGELOG.md b/stable/ztcuui-aio/3.0.8/CHANGELOG.md new file mode 100644 index 00000000000..44358abe9b8 --- /dev/null +++ b/stable/ztcuui-aio/3.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [ztcuui-aio-3.0.8](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.7...ztcuui-aio-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [ztcuui-aio-3.0.7](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.6...ztcuui-aio-3.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [ztcuui-aio-3.0.6](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.5...ztcuui-aio-3.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [ztcuui-aio-3.0.5](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.4...ztcuui-aio-3.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [ztcuui-aio-3.0.4](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.3...ztcuui-aio-3.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [ztcuui-aio-3.0.3](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.2...ztcuui-aio-3.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) + + + + +## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) + + + + +## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) + + + + +## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) + + + + +## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) + + + + +## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) + + + + +## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) + + + + +## [ztcuui-aio-3.0.2](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.1...ztcuui-aio-3.0.2) (2022-11-30) + + + diff --git a/stable/ztcuui-aio/3.0.8/Chart.yaml b/stable/ztcuui-aio/3.0.8/Chart.yaml new file mode 100644 index 00000000000..a90c02e4697 --- /dev/null +++ b/stable/ztcuui-aio/3.0.8/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "1.2.11" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: ZeroTier network controller user interface in a Docker container +home: https://truecharts.org/charts/stable/ztcuui-aio +icon: https://truecharts.org/img/hotlink-ok/chart-icons/ztcuui-aio.png +keywords: + - ztcuui-aio +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: ztcuui-aio +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/ztcuui-aio + - https://hub.docker.com/keynetworks/ztncui + - https://github.com/key-networks/ztncui-aio +version: 3.0.8 +annotations: + truecharts.org/catagories: | + - network + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/ztcuui-aio/3.0.8/README.md b/stable/ztcuui-aio/3.0.8/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/ztcuui-aio/3.0.8/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/ztcuui-aio/3.0.8/app-changelog.md b/stable/ztcuui-aio/3.0.8/app-changelog.md new file mode 100644 index 00000000000..4cacb397e30 --- /dev/null +++ b/stable/ztcuui-aio/3.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [ztcuui-aio-3.0.8](https://github.com/truecharts/charts/compare/ztcuui-aio-3.0.7...ztcuui-aio-3.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/ztcuui-aio/3.0.8/app-readme.md b/stable/ztcuui-aio/3.0.8/app-readme.md new file mode 100644 index 00000000000..b2d586541ed --- /dev/null +++ b/stable/ztcuui-aio/3.0.8/app-readme.md @@ -0,0 +1,8 @@ +ZeroTier network controller user interface in a Docker container + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/ztcuui-aio](https://truecharts.org/charts/stable/ztcuui-aio) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/ztcuui-aio/3.0.8/charts/common-11.1.2.tgz b/stable/ztcuui-aio/3.0.8/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/wikijs/10.0.25/templates/common.yaml b/stable/wikijs/10.0.25/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/wikijs/10.0.25/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/wikijs/10.0.25/values.yaml b/stable/wikijs/10.0.25/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/wordpress/1.1.10/CHANGELOG.md b/stable/wordpress/1.1.10/CHANGELOG.md deleted file mode 100644 index 8f8e3ba5567..00000000000 --- a/stable/wordpress/1.1.10/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [wordpress-1.1.10](https://github.com/truecharts/charts/compare/wordpress-1.1.9...wordpress-1.1.10) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [wordpress-1.1.9](https://github.com/truecharts/charts/compare/wordpress-1.1.8...wordpress-1.1.9) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/wordpress to 6.1.1 - - - - -## [wordpress-1.1.8](https://github.com/truecharts/charts/compare/wordpress-1.1.7...wordpress-1.1.8) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [wordpress-1.1.7](https://github.com/truecharts/charts/compare/wordpress-1.1.6...wordpress-1.1.7) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/wordpress to 6.1.1 - - - - -## [wordpress-1.1.6](https://github.com/truecharts/charts/compare/wordpress-1.1.5...wordpress-1.1.6) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [wordpress-1.1.5](https://github.com/truecharts/charts/compare/wordpress-1.1.4...wordpress-1.1.5) (2023-01-13) - -### Chore - -- update container image tccr.io/truecharts/wordpress to 6.1.1 - - - - -## [wordpress-1.1.4](https://github.com/truecharts/charts/compare/wordpress-1.1.3...wordpress-1.1.4) (2023-01-12) - -### Chore - -- update container image tccr.io/truecharts/wordpress to 6.1.1 - - - - -## [wordpress-1.1.3](https://github.com/truecharts/charts/compare/wordpress-1.1.2...wordpress-1.1.3) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [wordpress-1.1.2](https://github.com/truecharts/charts/compare/wordpress-1.1.1...wordpress-1.1.2) (2023-01-07) - -### Chore - -- update container image tccr.io/truecharts/wordpress to 6.1.1 - - - - -## [wordpress-1.1.1](https://github.com/truecharts/charts/compare/wordpress-1.1.0...wordpress-1.1.1) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/wordpress to 6.1.1 - - - - -## [wordpress-1.1.0](https://github.com/truecharts/charts/compare/wordpress-1.0.11...wordpress-1.1.0) (2023-01-02) - - diff --git a/stable/wordpress/1.1.10/Chart.yaml b/stable/wordpress/1.1.10/Chart.yaml deleted file mode 100644 index f61c9a73365..00000000000 --- a/stable/wordpress/1.1.10/Chart.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: v2 -appVersion: "6.1.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: mariadb.enabled - name: mariadb - repository: https://charts.truecharts.org/ - version: 5.0.25 -description: The WordPress rich content management system can utilize plugins, widgets, and themes. -home: https://truecharts.org/charts/stable/wordpress -icon: https://truecharts.org/img/hotlink-ok/chart-icons/wordpress.png -keywords: - - wordpress - - cms -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: wordpress -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/wordpress - - https://hub.docker.com/_/wordpress - - https://www.wordpress.org -version: 1.1.10 -annotations: - truecharts.org/catagories: | - - website - - CMS - - Hosting - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/wordpress/1.1.10/app-changelog.md b/stable/wordpress/1.1.10/app-changelog.md deleted file mode 100644 index 95c2ea26980..00000000000 --- a/stable/wordpress/1.1.10/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [wordpress-1.1.10](https://github.com/truecharts/charts/compare/wordpress-1.1.9...wordpress-1.1.10) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/wordpress/1.1.11/CHANGELOG.md b/stable/wordpress/1.1.11/CHANGELOG.md new file mode 100644 index 00000000000..24d539be6af --- /dev/null +++ b/stable/wordpress/1.1.11/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [wordpress-1.1.11](https://github.com/truecharts/charts/compare/wordpress-1.1.10...wordpress-1.1.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [wordpress-1.1.10](https://github.com/truecharts/charts/compare/wordpress-1.1.9...wordpress-1.1.10) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [wordpress-1.1.9](https://github.com/truecharts/charts/compare/wordpress-1.1.8...wordpress-1.1.9) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/wordpress to 6.1.1 + + + + +## [wordpress-1.1.8](https://github.com/truecharts/charts/compare/wordpress-1.1.7...wordpress-1.1.8) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [wordpress-1.1.7](https://github.com/truecharts/charts/compare/wordpress-1.1.6...wordpress-1.1.7) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/wordpress to 6.1.1 + + + + +## [wordpress-1.1.6](https://github.com/truecharts/charts/compare/wordpress-1.1.5...wordpress-1.1.6) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [wordpress-1.1.5](https://github.com/truecharts/charts/compare/wordpress-1.1.4...wordpress-1.1.5) (2023-01-13) + +### Chore + +- update container image tccr.io/truecharts/wordpress to 6.1.1 + + + + +## [wordpress-1.1.4](https://github.com/truecharts/charts/compare/wordpress-1.1.3...wordpress-1.1.4) (2023-01-12) + +### Chore + +- update container image tccr.io/truecharts/wordpress to 6.1.1 + + + + +## [wordpress-1.1.3](https://github.com/truecharts/charts/compare/wordpress-1.1.2...wordpress-1.1.3) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [wordpress-1.1.2](https://github.com/truecharts/charts/compare/wordpress-1.1.1...wordpress-1.1.2) (2023-01-07) + +### Chore + +- update container image tccr.io/truecharts/wordpress to 6.1.1 + + + + +## [wordpress-1.1.1](https://github.com/truecharts/charts/compare/wordpress-1.1.0...wordpress-1.1.1) (2023-01-04) + +### Chore diff --git a/stable/wordpress/1.1.11/Chart.yaml b/stable/wordpress/1.1.11/Chart.yaml new file mode 100644 index 00000000000..e9df41c41c4 --- /dev/null +++ b/stable/wordpress/1.1.11/Chart.yaml @@ -0,0 +1,34 @@ +apiVersion: v2 +appVersion: "6.1.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 +description: The WordPress rich content management system can utilize plugins, widgets, and themes. +home: https://truecharts.org/charts/stable/wordpress +icon: https://truecharts.org/img/hotlink-ok/chart-icons/wordpress.png +keywords: + - wordpress + - cms +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: wordpress +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/wordpress + - https://hub.docker.com/bitnami/wordpress + - https://www.wordpress.org +version: 1.1.11 +annotations: + truecharts.org/catagories: | + - website + - CMS + - Hosting + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wordpress/1.1.11/README.md b/stable/wordpress/1.1.11/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/wordpress/1.1.11/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/wordpress/1.1.11/app-changelog.md b/stable/wordpress/1.1.11/app-changelog.md new file mode 100644 index 00000000000..b36e56e5c8a --- /dev/null +++ b/stable/wordpress/1.1.11/app-changelog.md @@ -0,0 +1,9 @@ + + +## [wordpress-1.1.11](https://github.com/truecharts/charts/compare/wordpress-1.1.10...wordpress-1.1.11) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/wordpress/1.1.10/app-readme.md b/stable/wordpress/1.1.11/app-readme.md similarity index 100% rename from stable/wordpress/1.1.10/app-readme.md rename to stable/wordpress/1.1.11/app-readme.md diff --git a/stable/wordpress/1.1.11/charts/common-11.1.2.tgz b/stable/wordpress/1.1.11/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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 J#W(=+8vvr7{-*!{ literal 0 HcmV?d00001 diff --git a/stable/wger/4.0.33/ix_values.yaml b/stable/wger/4.0.34/ix_values.yaml similarity index 100% rename from stable/wger/4.0.33/ix_values.yaml rename to stable/wger/4.0.34/ix_values.yaml diff --git a/stable/wger/4.0.33/questions.yaml b/stable/wger/4.0.34/questions.yaml similarity index 100% rename from stable/wger/4.0.33/questions.yaml rename to stable/wger/4.0.34/questions.yaml diff --git a/stable/wger/4.0.33/templates/_configmap.tpl b/stable/wger/4.0.34/templates/_configmap.tpl similarity index 100% rename from stable/wger/4.0.33/templates/_configmap.tpl rename to stable/wger/4.0.34/templates/_configmap.tpl diff --git a/stable/wger/4.0.33/templates/_nginx.tpl b/stable/wger/4.0.34/templates/_nginx.tpl similarity index 100% rename from stable/wger/4.0.33/templates/_nginx.tpl rename to stable/wger/4.0.34/templates/_nginx.tpl diff --git a/stable/wger/4.0.33/templates/_secrets.tpl b/stable/wger/4.0.34/templates/_secrets.tpl similarity index 100% rename from stable/wger/4.0.33/templates/_secrets.tpl rename to stable/wger/4.0.34/templates/_secrets.tpl diff --git a/stable/wger/4.0.33/templates/common.yaml b/stable/wger/4.0.34/templates/common.yaml similarity index 100% rename from stable/wger/4.0.33/templates/common.yaml rename to stable/wger/4.0.34/templates/common.yaml diff --git a/stable/wger/4.0.34/values.yaml b/stable/wger/4.0.34/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/wikijs/10.0.25/CHANGELOG.md b/stable/wikijs/10.0.25/CHANGELOG.md new file mode 100644 index 00000000000..4164253b5a4 --- /dev/null +++ b/stable/wikijs/10.0.25/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [wikijs-10.0.25](https://github.com/truecharts/charts/compare/wikijs-10.0.24...wikijs-10.0.25) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [wikijs-10.0.24](https://github.com/truecharts/charts/compare/wikijs-10.0.23...wikijs-10.0.24) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [wikijs-10.0.23](https://github.com/truecharts/charts/compare/wikijs-10.0.22...wikijs-10.0.23) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [wikijs-10.0.22](https://github.com/truecharts/charts/compare/wikijs-10.0.21...wikijs-10.0.22) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [wikijs-10.0.21](https://github.com/truecharts/charts/compare/wikijs-10.0.20...wikijs-10.0.21) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [wikijs-10.0.20](https://github.com/truecharts/charts/compare/wikijs-10.0.19...wikijs-10.0.20) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [wikijs-10.0.19](https://github.com/truecharts/charts/compare/wikijs-10.0.18...wikijs-10.0.19) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [wikijs-10.0.18](https://github.com/truecharts/charts/compare/wikijs-10.0.17...wikijs-10.0.18) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [wikijs-10.0.17](https://github.com/truecharts/charts/compare/wikijs-10.0.16...wikijs-10.0.17) (2022-12-25) + +### Chore + +- update container image tccr.io/truecharts/wikijs to v2.5.295 + + + + +## [wikijs-10.0.16](https://github.com/truecharts/charts/compare/wikijs-10.0.15...wikijs-10.0.16) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [wikijs-10.0.15](https://github.com/truecharts/charts/compare/wikijs-10.0.14...wikijs-10.0.15) (2022-12-18) + +### Chore diff --git a/stable/wikijs/10.0.25/Chart.yaml b/stable/wikijs/10.0.25/Chart.yaml new file mode 100644 index 00000000000..6ecb457b213 --- /dev/null +++ b/stable/wikijs/10.0.25/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "2.5.295" +description: Make documentation a joy to write using Wiki.js's beautiful and intuitive interface! +name: wikijs +version: 10.0.25 +kubeVersion: ">=1.16.0-0" +keywords: + - wiki + - wikijs +home: https://truecharts.org/charts/stable/wikijs +icon: https://truecharts.org/img/hotlink-ok/chart-icons/wikijs.png +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/wikijs + - https://hub.docker.com/requarks/wiki + - https://docs.requarks.io/install/docker + - https://github.com/Requarks/wiki +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wikijs/10.0.25/README.md b/stable/wikijs/10.0.25/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/wikijs/10.0.25/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/wikijs/10.0.25/app-changelog.md b/stable/wikijs/10.0.25/app-changelog.md new file mode 100644 index 00000000000..d90cbf9d958 --- /dev/null +++ b/stable/wikijs/10.0.25/app-changelog.md @@ -0,0 +1,9 @@ + + +## [wikijs-10.0.25](https://github.com/truecharts/charts/compare/wikijs-10.0.24...wikijs-10.0.25) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/wikijs/10.0.25/app-readme.md b/stable/wikijs/10.0.25/app-readme.md new file mode 100644 index 00000000000..5c26c74ce2b --- /dev/null +++ b/stable/wikijs/10.0.25/app-readme.md @@ -0,0 +1,8 @@ +Make documentation a joy to write using Wiki.js's beautiful and intuitive interface! + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/wikijs](https://truecharts.org/charts/stable/wikijs) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/wikijs/10.0.25/charts/common-11.1.2.tgz b/stable/wikijs/10.0.25/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/wekan/8.0.17/templates/common.yaml b/stable/wekan/8.0.17/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/wekan/8.0.17/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/wekan/8.0.17/values.yaml b/stable/wekan/8.0.17/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/wger/4.0.33/CHANGELOG.md b/stable/wger/4.0.33/CHANGELOG.md deleted file mode 100644 index f6fc94a5eae..00000000000 --- a/stable/wger/4.0.33/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [wger-4.0.33](https://github.com/truecharts/charts/compare/wger-4.0.32...wger-4.0.33) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [wger-4.0.32](https://github.com/truecharts/charts/compare/wger-4.0.31...wger-4.0.32) (2023-01-24) - -### Chore - -- update container image tccr.io/truecharts/wger to latest - - - - -## [wger-4.0.31](https://github.com/truecharts/charts/compare/wger-4.0.30...wger-4.0.31) (2023-01-23) - -### Chore - -- update helm general non-major - - update container image tccr.io/truecharts/nginx to 1.23.3 - - - - -## [wger-4.0.30](https://github.com/truecharts/charts/compare/wger-4.0.29...wger-4.0.30) (2023-01-18) - -### Chore - -- update container image tccr.io/truecharts/wger to latest - - - - -## [wger-4.0.29](https://github.com/truecharts/charts/compare/wger-4.0.28...wger-4.0.29) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - update container image tccr.io/truecharts/nginx to 1.23.3 - - - - -## [wger-4.0.28](https://github.com/truecharts/charts/compare/wger-4.0.27...wger-4.0.28) (2023-01-13) - -### Chore - -- update container image tccr.io/truecharts/wger to latest - - - - -## [wger-4.0.27](https://github.com/truecharts/charts/compare/wger-4.0.26...wger-4.0.27) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [wger-4.0.26](https://github.com/truecharts/charts/compare/wger-4.0.25...wger-4.0.26) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/wger to latest - - - - -## [wger-4.0.25](https://github.com/truecharts/charts/compare/wger-4.0.24...wger-4.0.25) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [wger-4.0.24](https://github.com/truecharts/charts/compare/wger-4.0.23...wger-4.0.24) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [wger-4.0.23](https://github.com/truecharts/charts/compare/wger-4.0.22...wger-4.0.23) (2022-12-26) diff --git a/stable/wger/4.0.33/Chart.yaml b/stable/wger/4.0.33/Chart.yaml deleted file mode 100644 index f14f6a905f9..00000000000 --- a/stable/wger/4.0.33/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v2 -appVersion: "latest" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -description: Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility. -home: https://truecharts.org/charts/stable/wger -icon: https://truecharts.org/img/hotlink-ok/chart-icons/wger.png -keywords: - - workout -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: wger -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/wger - - https://github.com/wger-project/wger - - https://github.com/wger-project/docker -version: 4.0.33 -annotations: - truecharts.org/catagories: | - - life - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/wger/4.0.33/app-changelog.md b/stable/wger/4.0.33/app-changelog.md deleted file mode 100644 index ad55bad638d..00000000000 --- a/stable/wger/4.0.33/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [wger-4.0.33](https://github.com/truecharts/charts/compare/wger-4.0.32...wger-4.0.33) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/wger/4.0.34/CHANGELOG.md b/stable/wger/4.0.34/CHANGELOG.md new file mode 100644 index 00000000000..f71fdc359f6 --- /dev/null +++ b/stable/wger/4.0.34/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [wger-4.0.34](https://github.com/truecharts/charts/compare/wger-4.0.33...wger-4.0.34) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [wger-4.0.33](https://github.com/truecharts/charts/compare/wger-4.0.32...wger-4.0.33) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [wger-4.0.32](https://github.com/truecharts/charts/compare/wger-4.0.31...wger-4.0.32) (2023-01-24) + +### Chore + +- update container image tccr.io/truecharts/wger to latest + + + + +## [wger-4.0.31](https://github.com/truecharts/charts/compare/wger-4.0.30...wger-4.0.31) (2023-01-23) + +### Chore + +- update helm general non-major + - update container image tccr.io/truecharts/nginx to 1.23.3 + + + + +## [wger-4.0.30](https://github.com/truecharts/charts/compare/wger-4.0.29...wger-4.0.30) (2023-01-18) + +### Chore + +- update container image tccr.io/truecharts/wger to latest + + + + +## [wger-4.0.29](https://github.com/truecharts/charts/compare/wger-4.0.28...wger-4.0.29) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + - update container image tccr.io/truecharts/nginx to 1.23.3 + + + + +## [wger-4.0.28](https://github.com/truecharts/charts/compare/wger-4.0.27...wger-4.0.28) (2023-01-13) + +### Chore + +- update container image tccr.io/truecharts/wger to latest + + + + +## [wger-4.0.27](https://github.com/truecharts/charts/compare/wger-4.0.26...wger-4.0.27) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [wger-4.0.26](https://github.com/truecharts/charts/compare/wger-4.0.25...wger-4.0.26) (2023-01-04) + +### Chore + +- update container image tccr.io/truecharts/wger to latest + + + + +## [wger-4.0.25](https://github.com/truecharts/charts/compare/wger-4.0.24...wger-4.0.25) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [wger-4.0.24](https://github.com/truecharts/charts/compare/wger-4.0.23...wger-4.0.24) (2022-12-27) diff --git a/stable/wger/4.0.34/Chart.yaml b/stable/wger/4.0.34/Chart.yaml new file mode 100644 index 00000000000..c4567b3e498 --- /dev/null +++ b/stable/wger/4.0.34/Chart.yaml @@ -0,0 +1,36 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility. +home: https://truecharts.org/charts/stable/wger +icon: https://truecharts.org/img/hotlink-ok/chart-icons/wger.png +keywords: + - workout +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: wger +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/wger + - https://hub.docker.com/wger/server + - https://github.com/wger-project/wger + - https://github.com/wger-project/docker +version: 4.0.34 +annotations: + truecharts.org/catagories: | + - life + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wger/4.0.34/README.md b/stable/wger/4.0.34/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/wger/4.0.34/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/wger/4.0.34/app-changelog.md b/stable/wger/4.0.34/app-changelog.md new file mode 100644 index 00000000000..2479eaa3ccd --- /dev/null +++ b/stable/wger/4.0.34/app-changelog.md @@ -0,0 +1,9 @@ + + +## [wger-4.0.34](https://github.com/truecharts/charts/compare/wger-4.0.33...wger-4.0.34) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/wger/4.0.33/app-readme.md b/stable/wger/4.0.34/app-readme.md similarity index 100% rename from stable/wger/4.0.33/app-readme.md rename to stable/wger/4.0.34/app-readme.md diff --git a/stable/wger/4.0.34/charts/common-11.1.2.tgz b/stable/wger/4.0.34/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: wekan -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/wekan - - https://github.com/wekan/wekan - - https://wekan.github.io/ -version: 8.0.16 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/wekan/8.0.16/app-changelog.md b/stable/wekan/8.0.16/app-changelog.md deleted file mode 100644 index f6f15fa4b64..00000000000 --- a/stable/wekan/8.0.16/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [wekan-8.0.16](https://github.com/truecharts/charts/compare/wekan-8.0.15...wekan-8.0.16) (2023-01-23) - -### Chore - -- update helm general non-major - - \ No newline at end of file diff --git a/stable/wekan/8.0.16/questions.yaml b/stable/wekan/8.0.16/questions.yaml deleted file mode 100644 index 333e7ba03b8..00000000000 --- a/stable/wekan/8.0.16/questions.yaml +++ /dev/null @@ -1,2828 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ROOT_URL - label: "ROOT_URL" - schema: - type: string - default: "" - required: true - - variable: BROWSER_POLICY_ENABLED - label: "BROWSER_POLICY_ENABLED" - description: "Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside." - schema: - type: boolean - default: false - - variable: TRUSTED_URL - label: "TRUSTED_URL" - description: "When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside." - schema: - type: string - default: "" - - variable: logoutenabled - label: "Logout/Login Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: LOGOUT_WITH_TIMER - label: "LOGOUT_WITH_TIMER" - schema: - type: boolean - default: false - - variable: LOGOUT_IN - label: "LOGOUT_IN (Days)" - schema: - type: int - default: 0 - - variable: LOGOUT_ON_HOURS - label: "LOGOUT_ON_HOURS" - schema: - type: int - default: 0 - - variable: LOGOUT_ON_MINUTES - label: "LOGOUT_ON_MINUTES" - schema: - type: int - default: 0 - - variable: ACCOUNTS_COMMON_LOGIN_EXPIRATION_IN_DAYS - label: "ACCOUNTS_COMMON_LOGIN_EXPIRATION_IN_DAYS" - schema: - type: int - default: 90 - - variable: passwordnabled - label: "Password Brute Force Protection Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE - label: "ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE" - schema: - type: int - default: 3 - - variable: ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD - label: "ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD" - schema: - type: int - default: 60 - - variable: ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW - label: "ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW" - schema: - type: int - default: 15 - - variable: ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE - label: "ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE" - schema: - type: int - default: 3 - - variable: ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD - label: "ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD" - schema: - type: int - default: 60 - - variable: ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW - label: "ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW" - schema: - type: int - default: 15 - - variable: imagenabled - label: "Image Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: MAX_IMAGE_PIXEL - label: "MAX_IMAGE_PIXEL" - schema: - type: int - default: 1024 - - variable: IMAGE_COMPRESS_RATIO - label: "IMAGE_COMPRESS_RATIO" - schema: - type: int - default: 80 - - variable: mailenabled - label: "Mail Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: MAIL_URL - label: "MAIL_URL" - schema: - type: string - default: "" - - variable: MAIL_SERVICE_USER - label: "MAIL_SERVICE_USER" - schema: - type: string - default: "" - - variable: MAIL_SERVICE_PASSWORD - label: "MAIL_SERVICE_PASSWORD" - schema: - type: string - private: true - default: "" - - variable: MAIL_SERVICE - label: "MAIL_SERVICE" - schema: - type: string - default: "" - - variable: notificationsenabled - label: "Notifications Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: BIGEVENTS_PATTERN - label: "BIGEVENTS_PATTERN" - schema: - type: string - default: "NONE" - - variable: NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE - label: "NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE" - description: "Number of days after a notification is read before we remove it." - schema: - type: int - default: 90 - - variable: EMAIL_NOTIFICATION_TIMEOUT - label: "EMAIL_NOTIFICATION_TIMEOUT" - schema: - type: int - default: 30000 - - variable: NOTIFY_DUE_DAYS_BEFORE_AND_AFTER - label: "NOTIFY_DUE_DAYS_BEFORE_AND_AFTER" - description: "Notify due days, default is None, 2 days before and on the event day" - schema: - type: string - default: "2,0" - - variable: NOTIFY_DUE_AT_HOUR_OF_DAY - label: "NOTIFY_DUE_AT_HOUR_OF_DAY" - description: "Notify due at hour of day." - schema: - type: int - default: 8 - - variable: personalizationenabled - label: "UX Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: RESULTS_PER_PAGE - label: "RESULTS_PER_PAGE" - schema: - type: int - default: 20 - required: true - - variable: RICHER_CARD_COMMENT_EDITOR - label: "RICHER_CARD_COMMENT_EDITOR" - schema: - type: boolean - default: false - - variable: CARD_OPENED_WEBHOOK_ENABLED - label: "CARD_OPENED_WEBHOOK_ENABLED" - schema: - type: boolean - default: false - - variable: PASSWORD_LOGIN_ENABLED - label: "PASSWORD_LOGIN_ENABLED" - schema: - type: boolean - default: false - - variable: WAIT_SPINNER - label: "WAIT_SPINNER" - description: "Sets the Wait Spinner animation" - schema: - type: string - default: "Bounce" - enum: - - value: "Bounce" - description: "Bounce" - - value: "Cube" - description: "Cube" - - value: "Cube-Grid" - description: "Cube-Grid" - - value: "Dot" - description: "Dot" - - value: "Double-Bounce" - description: "Double-Bounce" - - value: "Rotateplane" - description: "Rotateplane" - - value: "Scaleout" - description: "Scaleout" - - value: "Wave" - description: "Wave" - - variable: backendenabled - label: "Backend Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: WITH_API - label: "WITH_API" - schema: - type: boolean - default: true - - variable: WEBHOOKS_ATTRIBUTES - label: "WEBHOOKS_ATTRIBUTES" - description: "What to send to Outgoing Webhook." - schema: - type: string - default: "cardId,listId,oldListId,boardId,comment,user,card,commentId,swimlaneId,customerField,customFieldValue" - - variable: corsenabled - label: "CORS Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: CORS - label: "CORS" - schema: - type: string - default: "*" - - variable: CORS_ALLOW_HEADERS - label: "CORS_ALLOW_HEADERS" - schema: - type: string - default: "Authorization,Content-Type" - - variable: CORS_EXPOSE_HEADERS - label: "CORS_EXPOSE_HEADERS" - schema: - type: string - default: "*" - - variable: matomoenabled - label: "Matomo Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: MATOMO_ADDRESS - label: "MATOMO_ADDRESS" - description: "The address of the server where Matomo is hosted." - schema: - type: string - default: "" - - variable: MATOMO_SITE_ID - label: "MATOMO_SITE_ID" - description: "The value of the site ID given in Matomo server for Wekan." - schema: - type: int - default: 1 - - variable: MATOMO_DO_NOT_TRACK - label: "MATOMO_DO_NOT_TRACK" - description: "The option do not track which enables users to not be tracked by matomo." - schema: - type: boolean - default: true - - variable: MATOMO_WITH_USERNAME - label: "MATOMO_WITH_USERNAME" - description: "The option that allows matomo to retrieve the username." - schema: - type: boolean - default: true - - variable: ORACLE_OIM_ENABLED - label: "ORACLE_OIM_ENABLED" - description: "OAUTH2 ORACLE on premise identity manager OIM" - schema: - type: boolean - default: false - - variable: oatuhncenabled - label: "OAUTH2 Nextcloud Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: OAUTH2_ENABLED - label: "OAUTH2_ENABLED" - schema: - type: boolean - default: false - - variable: OAUTH2_LOGIN_STYLE - label: "OAUTH2_LOGIN_STYLE" - description: "OAuth2 login style: popup or redirect." - schema: - type: string - default: "redirect" - enum: - - value: "redirect" - description: "redirect" - - value: "popup" - description: "popup" - - variable: OAUTH2_CLIENT_ID - label: "OAUTH2_CLIENT_ID" - description: "Application GUID captured during app registration" - schema: - type: string - default: "" - - variable: OAUTH2_SECRET - label: "OAUTH2_SECRET" - description: "Secret key generated during app registration" - schema: - type: string - default: "" - - variable: OAUTH2_SERVER_URL - label: "OAUTH2_SERVER_URL" - schema: - type: string - default: "" - - variable: OAUTH2_AUTH_ENDPOINT - label: "OAUTH2_AUTH_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_USERINFO_ENDPOINT - label: "OAUTH2_USERINFO_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_TOKEN_ENDPOINT - label: "OAUTH2_TOKEN_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_ID_MAP - label: "OAUTH2_ID_MAP" - description: "The claim name you want to map to the unique ID field." - schema: - type: string - default: "" - - variable: OAUTH2_USERNAME_MAP - label: "OAUTH2_USERNAME_MAP" - description: "The claim name you want to map to the username field." - schema: - type: string - default: "" - - variable: OAUTH2_FULLNAME_MAP - label: "OAUTH2_FULLNAME_MAP" - description: "The claim name you want to map to the full name field." - schema: - type: string - default: "" - - variable: OAUTH2_EMAIL_MAP - label: "OAUTH2_EMAIL_MAP" - description: "The claim name you want to map to the email field." - schema: - type: string - default: "" - - variable: oatuhkeycloackenabled - label: "OAUTH2 Keycloack Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: OAUTH2_ENABLED - label: "OAUTH2_ENABLED" - schema: - type: boolean - default: false - - variable: OAUTH2_LOGIN_STYLE - label: "OAUTH2_LOGIN_STYLE" - description: "OAuth2 login style: popup or redirect." - schema: - type: string - default: "redirect" - enum: - - value: "redirect" - description: "redirect" - - value: "popup" - description: "popup" - - variable: OAUTH2_CLIENT_ID - label: "OAUTH2_CLIENT_ID" - description: "Application GUID captured during app registration" - schema: - type: string - default: "" - - variable: OAUTH2_SECRET - label: "OAUTH2_SECRET" - description: "Secret key generated during app registration" - schema: - type: string - default: "" - - variable: OAUTH2_SERVER_URL - label: "OAUTH2_SERVER_URL" - schema: - type: string - default: "" - - variable: OAUTH2_AUTH_ENDPOINT - label: "OAUTH2_AUTH_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_USERINFO_ENDPOINT - label: "OAUTH2_USERINFO_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_TOKEN_ENDPOINT - label: "OAUTH2_TOKEN_ENDPOINT" - schema: - type: string - default: "" - - variable: oatuhdoorkeeperenabled - label: "OAUTH2 Doorkeeper Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: OAUTH2_ENABLED - label: "OAUTH2_ENABLED" - schema: - type: boolean - default: false - - variable: OAUTH2_LOGIN_STYLE - label: "OAUTH2_LOGIN_STYLE" - description: "OAuth2 login style: popup or redirect." - schema: - type: string - default: "redirect" - enum: - - value: "redirect" - description: "redirect" - - value: "popup" - description: "popup" - - variable: OAUTH2_CLIENT_ID - label: "OAUTH2_CLIENT_ID" - description: "Application GUID captured during app registration" - schema: - type: string - default: "" - - variable: OAUTH2_SECRET - label: "OAUTH2_SECRET" - description: "Secret key generated during app registration" - schema: - type: string - default: "" - - variable: OAUTH2_SERVER_URL - label: "OAUTH2_SERVER_URL" - schema: - type: string - default: "" - - variable: OAUTH2_AUTH_ENDPOINT - label: "OAUTH2_AUTH_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_USERINFO_ENDPOINT - label: "OAUTH2_USERINFO_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_TOKEN_ENDPOINT - label: "OAUTH2_TOKEN_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_ID_TOKEN_WHITELIST_FIELDS - label: "OAUTH2_ID_TOKEN_WHITELIST_FIELDS" - schema: - type: string - default: "" - - variable: OAUTH2_REQUEST_PERMISSIONS - label: "OAUTH2_REQUEST_PERMISSIONS" - description: "The claim name you want to map to the unique ID field." - schema: - type: string - default: "" - - variable: OAUTH2_ID_MAP - label: "OAUTH2_ID_MAP" - description: "The claim name you want to map to the unique ID field." - schema: - type: string - default: "" - - variable: OAUTH2_USERNAME_MAP - label: "OAUTH2_USERNAME_MAP" - description: "The claim name you want to map to the username field." - schema: - type: string - default: "" - - variable: OAUTH2_FULLNAME_MAP - label: "OAUTH2_FULLNAME_MAP" - description: "The claim name you want to map to the full name field." - schema: - type: string - default: "" - - variable: OAUTH2_EMAIL_MAP - label: "OAUTH2_EMAIL_MAP" - description: "The claim name you want to map to the email field." - schema: - type: string - default: "" - - variable: oatuhazureenabled - label: "OAUTH2 Azure Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: OAUTH2_ENABLED - label: "OAUTH2_ENABLED" - schema: - type: boolean - default: false - - variable: OAUTH2_CA_CERT - label: "OAUTH2_CA_CERT" - schema: - type: string - private: true - default: "" - - variable: OAUTH2_ADFS_ENABLED - label: "OAUTH2_ADFS_ENABLED" - schema: - type: boolean - default: false - - variable: OAUTH2_LOGIN_STYLE - label: "OAUTH2_LOGIN_STYLE" - description: "OAuth2 login style: popup or redirect." - schema: - type: string - default: "redirect" - enum: - - value: "redirect" - description: "redirect" - - value: "popup" - description: "popup" - - variable: OAUTH2_CLIENT_ID - label: "OAUTH2_CLIENT_ID" - description: "Application GUID captured during app registration" - schema: - type: string - default: "" - - variable: OAUTH2_SECRET - label: "OAUTH2_SECRET" - description: "Secret key generated during app registration" - schema: - type: string - default: "" - - variable: OAUTH2_SERVER_URL - label: "OAUTH2_SERVER_URL" - schema: - type: string - default: "" - - variable: OAUTH2_AUTH_ENDPOINT - label: "OAUTH2_AUTH_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_USERINFO_ENDPOINT - label: "OAUTH2_USERINFO_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_TOKEN_ENDPOINT - label: "OAUTH2_TOKEN_ENDPOINT" - schema: - type: string - default: "" - - variable: OAUTH2_ID_MAP - label: "OAUTH2_ID_MAP" - description: "The claim name you want to map to the unique ID field." - schema: - type: string - default: "" - - variable: OAUTH2_USERNAME_MAP - label: "OAUTH2_USERNAME_MAP" - description: "The claim name you want to map to the username field." - schema: - type: string - default: "" - - variable: OAUTH2_FULLNAME_MAP - label: "OAUTH2_FULLNAME_MAP" - description: "The claim name you want to map to the full name field." - schema: - type: string - default: "" - - variable: OAUTH2_EMAIL_MAP - label: "OAUTH2_EMAIL_MAP" - description: "The claim name you want to map to the email field." - schema: - type: string - default: "" - - variable: ldapenabled - label: "LDAP Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: LDAP_ENABLE - label: "LDAP_ENABLE" - schema: - type: boolean - default: false - - variable: DEFAULT_AUTHENTICATION_METHOD - label: "DEFAULT_AUTHENTICATION_METHOD" - schema: - type: string - default: "ldap" - - variable: LDAP_PORT - label: "LDAP_PORT" - schema: - type: int - default: 389 - - variable: LDAP_HOST - label: "LDAP_HOST" - schema: - type: string - default: "" - - variable: LDAP_AD_SIMPLE_AUTH - label: "LDAP_AD_SIMPLE_AUTH" - schema: - type: boolean - default: false - - variable: LDAP_USER_AUTHENTICATION - label: "LDAP_USER_AUTHENTICATION" - schema: - type: boolean - default: false - - variable: LDAP_USER_AUTHENTICATION_FIELD - label: "LDAP_USER_AUTHENTICATION_FIELD" - schema: - type: string - default: "uid" - - variable: LDAP_DEFAULT_DOMAIN - label: "LDAP_DEFAULT_DOMAIN" - schema: - type: string - default: "" - - variable: LDAP_BASEDN - label: "LDAP_BASEDN" - schema: - type: string - default: "" - - variable: LDAP_LOGIN_FALLBACK - label: "LDAP_LOGIN_FALLBACK" - schema: - type: boolean - default: false - - variable: LDAP_RECONNECT - label: "LDAP_RECONNECT" - schema: - type: boolean - default: true - - variable: LDAP_TIMEOUT - label: "LDAP_TIMEOUT" - schema: - type: int - default: 10000 - - variable: LDAP_IDLE_TIMEOUT - label: "LDAP_IDLE_TIMEOUT" - schema: - type: int - default: 10000 - - variable: LDAP_CONNECT_TIMEOUT - label: "LDAP_CONNECT_TIMEOUT" - schema: - type: int - default: 10000 - - variable: LDAP_AUTHENTIFICATION - label: "LDAP_AUTHENTIFICATION" - schema: - type: boolean - default: true - - variable: LDAP_AUTHENTIFICATION_USERDN - label: "LDAP_AUTHENTIFICATION_USERDN" - schema: - type: string - default: "" - - variable: LDAP_AUTHENTIFICATION_PASSWORD - label: "LDAP_AUTHENTIFICATION_PASSWORD" - schema: - type: string - private: true - default: "" - - variable: LDAP_LOG_ENABLED - label: "LDAP_LOG_ENABLED" - schema: - type: boolean - default: true - - variable: LDAP_BACKGROUND_SYNC - label: "LDAP_BACKGROUND_SYNC" - schema: - type: boolean - default: true - - variable: LDAP_BACKGROUND_SYNC_INTERVAL - label: "LDAP_BACKGROUND_SYNC_INTERVAL" - schema: - type: string - default: "every 1 hour" - - variable: LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED - label: "LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED" - schema: - type: boolean - default: false - - variable: LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS - label: "LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS" - schema: - type: boolean - default: false - - variable: LDAP_ENCRYPTION - label: "LDAP_ENCRYPTION" - schema: - type: string - default: "false" - - variable: LDAP_CA_CERT - label: "LDAP_CA_CERT" - schema: - type: string - private: true - default: "" - - variable: LDAP_REJECT_UNAUTHORIZED - label: "LDAP_REJECT_UNAUTHORIZED" - schema: - type: boolean - default: false - - variable: LDAP_USER_SEARCH_FILTER - label: "LDAP_USER_SEARCH_FILTER" - schema: - type: string - default: "" - - variable: LDAP_USER_SEARCH_SCOPE - label: "LDAP_USER_SEARCH_SCOPE" - schema: - type: string - default: "one" - enum: - - value: "one" - description: "one" - - value: "base" - description: "base" - - value: "sub" - description: "sub" - - variable: LDAP_USER_SEARCH_FIELD - label: "LDAP_USER_SEARCH_FIELD" - schema: - type: string - default: "" - - variable: LDAP_SEARCH_PAGE_SIZE - label: "LDAP_SEARCH_PAGE_SIZE" - schema: - type: int - default: 0 - - variable: LDAP_SEARCH_SIZE_LIMIT - label: "LDAP_SEARCH_SIZE_LIMIT" - schema: - type: int - default: 0 - - variable: LDAP_GROUP_FILTER_ENABLE - label: "LDAP_GROUP_FILTER_ENABLE" - schema: - type: boolean - default: false - - variable: LDAP_GROUP_FILTER_OBJECTCLASS - label: "LDAP_GROUP_FILTER_OBJECTCLASS" - schema: - type: string - default: "" - - variable: LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE - label: "LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE" - schema: - type: string - default: "" - - variable: LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE - label: "LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE" - schema: - type: string - default: "" - - variable: LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT - label: "LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT" - schema: - type: string - default: "" - - variable: LDAP_GROUP_FILTER_GROUP_NAME - label: "LDAP_GROUP_FILTER_GROUP_NAME" - schema: - type: string - default: "" - - variable: LDAP_UNIQUE_IDENTIFIER_FIELD - label: "LDAP_UNIQUE_IDENTIFIER_FIELD" - schema: - type: string - default: "" - - variable: LDAP_UTF8_NAMES_SLUGIFY - label: "LDAP_UTF8_NAMES_SLUGIFY" - schema: - type: boolean - default: true - - variable: LDAP_USERNAME_FIELD - label: "LDAP_USERNAME_FIELD" - schema: - type: string - default: "" - - variable: LDAP_FULLNAME_FIELD - label: "LDAP_FULLNAME_FIELD" - schema: - type: string - default: "fullname" - - variable: LDAP_MERGE_EXISTING_USERS - label: "LDAP_MERGE_EXISTING_USERS" - schema: - type: boolean - default: false - - variable: LDAP_EMAIL_MATCH_ENABLE - label: "LDAP_EMAIL_MATCH_ENABLE" - schema: - type: boolean - default: true - - variable: LDAP_EMAIL_MATCH_REQUIRE - label: "LDAP_EMAIL_MATCH_REQUIRE" - schema: - type: boolean - default: true - - variable: LDAP_EMAIL_MATCH_VERIFIED - label: "LDAP_EMAIL_MATCH_VERIFIED" - schema: - type: boolean - default: true - - variable: LDAP_EMAIL_FIELD - label: "LDAP_EMAIL_FIELD" - schema: - type: string - default: "mail" - - variable: LDAP_SYNC_USER_DATA - label: "LDAP_SYNC_USER_DATA" - schema: - type: boolean - default: false - - variable: LDAP_SYNC_USER_DATA_FIELDMAP - label: "LDAP_SYNC_USER_DATA_FIELDMAP" - schema: - type: string - default: "" - - variable: LDAP_SYNC_GROUP_ROLES - label: "LDAP_SYNC_GROUP_ROLES" - schema: - type: string - default: "" - - variable: LDAP_SYNC_ADMIN_STATUS - label: "LDAP_SYNC_ADMIN_STATUS" - schema: - type: boolean - default: true - - variable: LDAP_SYNC_ADMIN_GROUPS - label: "LDAP_SYNC_ADMIN_GROUPS" - schema: - type: string - default: "" - - variable: headerenabled - label: "LDAP Header Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: HEADER_LOGIN_ID - label: "HEADER_LOGIN_ID" - schema: - type: string - default: "" - - variable: HEADER_LOGIN_FIRSTNAME - label: "HEADER_LOGIN_FIRSTNAME" - schema: - type: string - default: "" - - variable: HEADER_LOGIN_LASTNAME - label: "HEADER_LOGIN_LASTNAME" - schema: - type: string - default: "" - - variable: HEADER_LOGIN_EMAIL - label: "HEADER_LOGIN_EMAIL" - schema: - type: string - default: "" - - variable: casenabled - label: "CAS Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: CAS_ENABLED - label: "CAS_ENABLED" - schema: - type: boolean - default: false - - variable: CAS_BASE_URL - label: "CAS_BASE_URL" - schema: - type: string - default: "" - - variable: CAS_LOGIN_URL - label: "CAS_LOGIN_URL" - schema: - type: string - default: "" - - variable: CAS_VALIDATE_URL - label: "CAS_VALIDATE_URL" - schema: - type: string - default: "" - - variable: samlenabled - label: "SAML Settings" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: SAML_ENABLED - label: "SAML_ENABLED" - schema: - type: boolean - default: false - - variable: SAML_PROVIDER - label: "SAML_PROVIDER" - schema: - type: string - default: "" - - variable: SAML_ENTRYPOINT - label: "SAML_ENTRYPOINT" - schema: - type: string - default: "" - - variable: SAML_ISSUER - label: "SAML_ISSUER" - schema: - type: string - default: "" - - variable: SAML_CERT - label: "SAML_CERT" - schema: - type: string - private: true - default: "" - - variable: SAML_IDPSLO_REDIRECTURL - label: "SAML_IDPSLO_REDIRECTURL" - schema: - type: string - default: "" - - variable: SAML_PRIVATE_KEYFILE - label: "SAML_PRIVATE_KEYFILE" - schema: - type: string - default: "" - - variable: SAML_PUBLIC_CERTFILE - label: "SAML_PUBLIC_CERTFILE" - schema: - type: string - default: "" - - variable: SAML_IDENTIFIER_FORMAT - label: "SAML_IDENTIFIER_FORMAT" - schema: - type: string - default: "" - - variable: SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE - label: "SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE" - schema: - type: string - default: "" - - variable: SAML_ATTRIBUTES - label: "SAML_ATTRIBUTES" - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10192 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 568 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/wekan/8.0.17/CHANGELOG.md b/stable/wekan/8.0.17/CHANGELOG.md new file mode 100644 index 00000000000..bce9421c494 --- /dev/null +++ b/stable/wekan/8.0.17/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [wekan-8.0.17](https://github.com/truecharts/charts/compare/wekan-8.0.16...wekan-8.0.17) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [wekan-8.0.16](https://github.com/truecharts/charts/compare/wekan-8.0.15...wekan-8.0.16) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [wekan-8.0.15](https://github.com/truecharts/charts/compare/wekan-8.0.14...wekan-8.0.15) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [wekan-8.0.14](https://github.com/truecharts/charts/compare/wekan-8.0.13...wekan-8.0.14) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [wekan-8.0.13](https://github.com/truecharts/charts/compare/wekan-8.0.12...wekan-8.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [wekan-8.0.12](https://github.com/truecharts/charts/compare/wekan-8.0.11...wekan-8.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [wekan-8.0.11](https://github.com/truecharts/charts/compare/wekan-8.0.10...wekan-8.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [wekan-8.0.10](https://github.com/truecharts/charts/compare/wekan-8.0.9...wekan-8.0.10) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [wekan-8.0.9](https://github.com/truecharts/charts/compare/wekan-8.0.8...wekan-8.0.9) (2022-12-17) + +### Chore + +- update helm chart mongodb to v4.0.15 ([#5494](https://github.com/truecharts/charts/issues/5494)) + + + + +## [wekan-8.0.8](https://github.com/truecharts/charts/compare/wekan-8.0.7...wekan-8.0.8) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [wekan-8.0.7](https://github.com/truecharts/charts/compare/wekan-8.0.6...wekan-8.0.7) (2022-12-05) + +### Chore diff --git a/stable/wekan/8.0.17/Chart.yaml b/stable/wekan/8.0.17/Chart.yaml new file mode 100644 index 00000000000..610b143037f --- /dev/null +++ b/stable/wekan/8.0.17/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +appVersion: "6.46" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mongodb.enabled + name: mongodb + repository: https://charts.truecharts.org + version: 4.0.28 +description: WeKan - Open Source kanban +home: https://truecharts.org/charts/stable/wekan +icon: https://truecharts.org/img/hotlink-ok/chart-icons/wekan.png +keywords: + - wekan + - kanban +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: wekan +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/wekan + - https://hub.docker.com/wekanteam/wekan + - https://github.com/wekan/wekan + - https://wekan.github.io/ +version: 8.0.17 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wekan/8.0.17/README.md b/stable/wekan/8.0.17/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/wekan/8.0.17/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/wekan/8.0.17/app-changelog.md b/stable/wekan/8.0.17/app-changelog.md new file mode 100644 index 00000000000..d04845d2a01 --- /dev/null +++ b/stable/wekan/8.0.17/app-changelog.md @@ -0,0 +1,9 @@ + + +## [wekan-8.0.17](https://github.com/truecharts/charts/compare/wekan-8.0.16...wekan-8.0.17) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/wekan/8.0.16/app-readme.md b/stable/wekan/8.0.17/app-readme.md similarity index 100% rename from stable/wekan/8.0.16/app-readme.md rename to stable/wekan/8.0.17/app-readme.md diff --git a/stable/wekan/8.0.17/charts/common-11.1.2.tgz b/stable/wekan/8.0.17/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/wbo/3.0.0/templates/_configmap.tpl b/stable/wbo/3.0.1/templates/_configmap.tpl similarity index 100% rename from stable/wbo/3.0.0/templates/_configmap.tpl rename to stable/wbo/3.0.1/templates/_configmap.tpl diff --git a/stable/wbo/3.0.0/templates/_secret.tpl b/stable/wbo/3.0.1/templates/_secret.tpl similarity index 100% rename from stable/wbo/3.0.0/templates/_secret.tpl rename to stable/wbo/3.0.1/templates/_secret.tpl diff --git a/stable/wbo/3.0.0/templates/common.yaml b/stable/wbo/3.0.1/templates/common.yaml similarity index 100% rename from stable/wbo/3.0.0/templates/common.yaml rename to stable/wbo/3.0.1/templates/common.yaml diff --git a/stable/wbo/3.0.1/values.yaml b/stable/wbo/3.0.1/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/weblate/7.0.21/CHANGELOG.md b/stable/weblate/7.0.21/CHANGELOG.md deleted file mode 100644 index 7e04992ffd2..00000000000 --- a/stable/weblate/7.0.21/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [weblate-7.0.21](https://github.com/truecharts/charts/compare/weblate-7.0.20...weblate-7.0.21) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/weblate to v4.15.2 - - - - -## [weblate-7.0.20](https://github.com/truecharts/charts/compare/weblate-7.0.19...weblate-7.0.20) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [weblate-7.0.19](https://github.com/truecharts/charts/compare/weblate-7.0.18...weblate-7.0.19) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [weblate-7.0.18](https://github.com/truecharts/charts/compare/weblate-7.0.17...weblate-7.0.18) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [weblate-7.0.17](https://github.com/truecharts/charts/compare/weblate-7.0.16...weblate-7.0.17) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [weblate-7.0.16](https://github.com/truecharts/charts/compare/weblate-7.0.15...weblate-7.0.16) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [weblate-7.0.15](https://github.com/truecharts/charts/compare/weblate-7.0.14...weblate-7.0.15) (2022-12-27) - -### Chore - -- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) - - - - -## [weblate-7.0.14](https://github.com/truecharts/charts/compare/weblate-7.0.13...weblate-7.0.14) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [weblate-7.0.13](https://github.com/truecharts/charts/compare/weblate-7.0.12...weblate-7.0.13) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [weblate-7.0.12](https://github.com/truecharts/charts/compare/weblate-7.0.11...weblate-7.0.12) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [weblate-7.0.11](https://github.com/truecharts/charts/compare/weblate-7.0.10...weblate-7.0.11) (2022-12-18) - -### Chore diff --git a/stable/weblate/7.0.21/Chart.yaml b/stable/weblate/7.0.21/Chart.yaml deleted file mode 100644 index cf956882bbb..00000000000 --- a/stable/weblate/7.0.21/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: v2 -appVersion: "4.15.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: postgresql.enabled - name: postgresql - repository: https://charts.truecharts.org/ - version: 11.0.22 - - condition: redis.enabled - name: redis - repository: https://charts.truecharts.org - version: 5.0.29 -description: Weblate is a copylefted libre software web-based continuous localization system -home: https://truecharts.org/charts/stable/weblate -icon: https://truecharts.org/img/hotlink-ok/chart-icons/weblate.png -keywords: - - translate -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: weblate -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/weblate - - https://github.com/WeblateOrg/weblate - - https://github.com/WeblateOrg/docker - - https://github.com/WeblateOrg/docker-compose - - https://docs.weblate.org/en/latest/ -version: 7.0.21 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/weblate/7.0.21/app-changelog.md b/stable/weblate/7.0.21/app-changelog.md deleted file mode 100644 index 63d98afd13f..00000000000 --- a/stable/weblate/7.0.21/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [weblate-7.0.21](https://github.com/truecharts/charts/compare/weblate-7.0.20...weblate-7.0.21) (2023-01-31) - -### Chore - -- update container image tccr.io/truecharts/weblate to v4.15.2 - - \ No newline at end of file diff --git a/stable/weblate/7.0.22/CHANGELOG.md b/stable/weblate/7.0.22/CHANGELOG.md new file mode 100644 index 00000000000..4a640c6ee7b --- /dev/null +++ b/stable/weblate/7.0.22/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [weblate-7.0.22](https://github.com/truecharts/charts/compare/weblate-7.0.21...weblate-7.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [weblate-7.0.21](https://github.com/truecharts/charts/compare/weblate-7.0.20...weblate-7.0.21) (2023-01-31) + +### Chore + +- update container image tccr.io/truecharts/weblate to v4.15.2 + + + + +## [weblate-7.0.20](https://github.com/truecharts/charts/compare/weblate-7.0.19...weblate-7.0.20) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [weblate-7.0.19](https://github.com/truecharts/charts/compare/weblate-7.0.18...weblate-7.0.19) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [weblate-7.0.18](https://github.com/truecharts/charts/compare/weblate-7.0.17...weblate-7.0.18) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [weblate-7.0.17](https://github.com/truecharts/charts/compare/weblate-7.0.16...weblate-7.0.17) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [weblate-7.0.16](https://github.com/truecharts/charts/compare/weblate-7.0.15...weblate-7.0.16) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [weblate-7.0.15](https://github.com/truecharts/charts/compare/weblate-7.0.14...weblate-7.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5848](https://github.com/truecharts/charts/issues/5848)) + + + + +## [weblate-7.0.14](https://github.com/truecharts/charts/compare/weblate-7.0.13...weblate-7.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [weblate-7.0.13](https://github.com/truecharts/charts/compare/weblate-7.0.12...weblate-7.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [weblate-7.0.12](https://github.com/truecharts/charts/compare/weblate-7.0.11...weblate-7.0.12) (2022-12-19) + +### Chore diff --git a/stable/weblate/7.0.22/Chart.yaml b/stable/weblate/7.0.22/Chart.yaml new file mode 100644 index 00000000000..5e1c4e257d5 --- /dev/null +++ b/stable/weblate/7.0.22/Chart.yaml @@ -0,0 +1,38 @@ +apiVersion: v2 +appVersion: "4.15.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 5.0.29 +description: Weblate is a copylefted libre software web-based continuous localization system +home: https://truecharts.org/charts/stable/weblate +icon: https://truecharts.org/img/hotlink-ok/chart-icons/weblate.png +keywords: + - translate +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: weblate +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/weblate + - https://hub.docker.com/weblate/weblate + - https://github.com/WeblateOrg/weblate + - https://github.com/WeblateOrg/docker + - https://github.com/WeblateOrg/docker-compose + - https://docs.weblate.org/en/latest/ +version: 7.0.22 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/weblate/7.0.22/README.md b/stable/weblate/7.0.22/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/weblate/7.0.22/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/weblate/7.0.22/app-changelog.md b/stable/weblate/7.0.22/app-changelog.md new file mode 100644 index 00000000000..1c77d5d459a --- /dev/null +++ b/stable/weblate/7.0.22/app-changelog.md @@ -0,0 +1,9 @@ + + +## [weblate-7.0.22](https://github.com/truecharts/charts/compare/weblate-7.0.21...weblate-7.0.22) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/weblate/7.0.21/app-readme.md b/stable/weblate/7.0.22/app-readme.md similarity index 100% rename from stable/weblate/7.0.21/app-readme.md rename to stable/weblate/7.0.22/app-readme.md diff --git a/stable/weblate/7.0.22/charts/common-11.1.2.tgz b/stable/weblate/7.0.22/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/watchyourlan/3.1.10/templates/common.yaml b/stable/watchyourlan/3.1.10/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/watchyourlan/3.1.10/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/watchyourlan/3.1.10/values.yaml b/stable/watchyourlan/3.1.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/watchyourlan/3.1.9/CHANGELOG.md b/stable/watchyourlan/3.1.9/CHANGELOG.md deleted file mode 100644 index 356464f5ed6..00000000000 --- a/stable/watchyourlan/3.1.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [watchyourlan-3.1.9](https://github.com/truecharts/charts/compare/watchyourlan-3.1.8...watchyourlan-3.1.9) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/watchyourlan to v0.9.1 - - - - -## [watchyourlan-3.1.8](https://github.com/truecharts/charts/compare/watchyourlan-3.1.7...watchyourlan-3.1.8) (2023-01-04) - -### Chore - -- update container image tccr.io/truecharts/watchyourlan to v0.8.3 - - - - -## [watchyourlan-3.1.7](https://github.com/truecharts/charts/compare/watchyourlan-3.1.6...watchyourlan-3.1.7) (2022-12-30) - -### Chore - -- update container image tccr.io/truecharts/watchyourlan to v0.8.1 - - - - -## [watchyourlan-3.1.6](https://github.com/truecharts/charts/compare/watchyourlan-3.1.5...watchyourlan-3.1.6) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [watchyourlan-3.1.5](https://github.com/truecharts/charts/compare/watchyourlan-3.1.4...watchyourlan-3.1.5) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [watchyourlan-3.1.4](https://github.com/truecharts/charts/compare/watchyourlan-3.1.3...watchyourlan-3.1.4) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [watchyourlan-3.1.3](https://github.com/truecharts/charts/compare/watchyourlan-3.1.2...watchyourlan-3.1.3) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [watchyourlan-3.1.2](https://github.com/truecharts/charts/compare/watchyourlan-3.1.1...watchyourlan-3.1.2) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [watchyourlan-3.1.1](https://github.com/truecharts/charts/compare/watchyourlan-3.1.0...watchyourlan-3.1.1) (2022-11-30) - - - - -## [watchyourlan-3.1.1](https://github.com/truecharts/charts/compare/watchyourlan-3.1.0...watchyourlan-3.1.1) (2022-11-30) - - - - -## [watchyourlan-3.1.1](https://github.com/truecharts/charts/compare/watchyourlan-3.1.0...watchyourlan-3.1.1) (2022-11-30) - - - - -## [watchyourlan-3.1.1](https://github.com/truecharts/charts/compare/watchyourlan-3.1.0...watchyourlan-3.1.1) (2022-11-30) - - - - -## [watchyourlan-3.1.1](https://github.com/truecharts/charts/compare/watchyourlan-3.1.0...watchyourlan-3.1.1) (2022-11-30) diff --git a/stable/watchyourlan/3.1.9/Chart.yaml b/stable/watchyourlan/3.1.9/Chart.yaml deleted file mode 100644 index 6b240bf2845..00000000000 --- a/stable/watchyourlan/3.1.9/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "0.9.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: Lightweight network IP scanner with web GUI -home: https://truecharts.org/charts/stable/watchyourlan -icon: https://truecharts.org/img/hotlink-ok/chart-icons/watchyourlan.png -keywords: - - network - - monitor -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: watchyourlan -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/watchyourlan - - https://github.com/aceberg/WatchYourLAN -version: 3.1.9 -annotations: - truecharts.org/catagories: | - - network - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/watchyourlan/3.1.9/app-changelog.md b/stable/watchyourlan/3.1.9/app-changelog.md deleted file mode 100644 index ec5233bd0f3..00000000000 --- a/stable/watchyourlan/3.1.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [watchyourlan-3.1.9](https://github.com/truecharts/charts/compare/watchyourlan-3.1.8...watchyourlan-3.1.9) (2023-01-19) - -### Chore - -- update container image tccr.io/truecharts/watchyourlan to v0.9.1 - - \ No newline at end of file diff --git a/stable/watchyourlan/3.1.9/questions.yaml b/stable/watchyourlan/3.1.9/questions.yaml deleted file mode 100644 index 9a91161a722..00000000000 --- a/stable/watchyourlan/3.1.9/questions.yaml +++ /dev/null @@ -1,1875 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: watchyourlan - group: App Configuration - label: Watch Your Lan Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: gui_ip - label: GUI IP - description: Address for web GUI - schema: - type: string - required: true - $ref: - - "definitions/nodeIP" - - variable: interfaces - label: Interfaces - description: Interface to scan. Could be one or more - schema: - type: list - default: [] - items: - - variable: interfaceEntry - label: Interface Entry - schema: - type: string - required: true - default: "" - - variable: theme - label: Theme - description: Any theme name from https://bootswatch.com in lowercase - schema: - type: string - default: darkly - - variable: timeout - label: Timeout - description: Time between scans (seconds) - schema: - type: int - default: 300 - - variable: shoutrrr_url - label: Shoutrrr URL - description: Url to any notification service supported by Shoutrrr (gotify, email, telegram and others) - schema: - type: string - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10355 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: true - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: App Data Storage - description: Stores the Application Data. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 0 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 0 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] -# - variable: horizontalPodAutoscaler -# group: Advanced -# label: (Advanced) Horizontal Pod Autoscaler -# schema: -# type: list -# default: [] -# items: -# - variable: hpaEntry -# label: HPA Entry -# schema: -# additional_attrs: true -# type: dict -# attrs: -# - variable: name -# label: Name -# schema: -# type: string -# required: true -# default: "" -# - variable: enabled -# label: Enabled -# schema: -# type: boolean -# default: false -# show_subquestions_if: true -# subquestions: -# - variable: target -# label: Target -# description: Deployment name, Defaults to Main Deployment -# schema: -# type: string -# default: "" -# - variable: minReplicas -# label: Minimum Replicas -# schema: -# type: int -# default: 1 -# - variable: maxReplicas -# label: Maximum Replicas -# schema: -# type: int -# default: 5 -# - variable: targetCPUUtilizationPercentage -# label: Target CPU Utilization Percentage -# schema: -# type: int -# default: 80 -# - variable: targetMemoryUtilizationPercentage -# label: Target Memory Utilization Percentage -# schema: -# type: int -# default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/wbo/3.0.0/CHANGELOG.md b/stable/wbo/3.0.0/CHANGELOG.md deleted file mode 100644 index 810be36f43e..00000000000 --- a/stable/wbo/3.0.0/CHANGELOG.md +++ /dev/null @@ -1,8 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [wbo-3.0.0](https://github.com/truecharts/charts/compare/wbo-2.0.7...wbo-3.0.0) (2023-01-15) - diff --git a/stable/wbo/3.0.0/Chart.yaml b/stable/wbo/3.0.0/Chart.yaml deleted file mode 100644 index 8ceb5b1ebb6..00000000000 --- a/stable/wbo/3.0.0/Chart.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: v2 -appVersion: "1.19.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: an online collaborative whiteboard that allows many users to draw simultaneously on a large virtual board. -home: https://truecharts.org/charts/incubator/wbo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/wbo.png -keywords: - - wbo - - whiteboard -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: wbo -sources: - - https://github.com/truecharts/charts/tree/master/charts/incubator/wbo - - https://github.com/lovasoa/whitebophir -version: 3.0.0 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/wbo/3.0.0/app-changelog.md b/stable/wbo/3.0.0/app-changelog.md deleted file mode 100644 index d169c4e6fe5..00000000000 --- a/stable/wbo/3.0.0/app-changelog.md +++ /dev/null @@ -1,4 +0,0 @@ - - -## [wbo-3.0.0](https://github.com/truecharts/charts/compare/wbo-2.0.7...wbo-3.0.0) (2023-01-15) - diff --git a/stable/wbo/3.0.0/questions.yaml b/stable/wbo/3.0.0/questions.yaml deleted file mode 100644 index 90db9801976..00000000000 --- a/stable/wbo/3.0.0/questions.yaml +++ /dev/null @@ -1,1917 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: wbo - group: App Configuration - label: WBO Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: auth_secret_key - label: Auth Secret key - description: Secret key for jwt - schema: - type: string - private: true - default: "" - - variable: save_interval - label: Save Interval - description: Number of milliseconds of inactivity after which the board should be saved to a file - schema: - type: int - default: 2000 - - variable: max_save_delay - label: Max Save Delay - description: Periodicity at which the board should be saved when it is being actively used (milliseconds) - schema: - type: int - default: 60000 - - variable: max_item_count - label: Max Item Count - description: Maximal number of items to keep in the board. When there are more items, the oldest ones are deleted - schema: - type: int - default: 32768 - - variable: max_children - label: Max Children - description: Max number of sub-items in an item. This prevents flooding - schema: - type: int - default: 192 - - variable: max_board_size - label: Max Board Size - description: Maximum value for any x or y on the board - schema: - type: int - default: 65536 - - variable: max_emit_count - label: Max Emit Count - description: Maximum messages per user over the given time period before banning them - schema: - type: int - default: 192 - - variable: max_emit_count_period - label: Max Emit Count Period - description: Duration after which the emit count is reset in milliseconds - schema: - type: int - default: 4096 - - variable: auto_finger_whiteout - label: Auto Finger Whiteout - description: Automatically switch to White-out on finger touch after drawing with Pencil using a stylus. Only supported on iPad with Apple Pencil. - schema: - type: boolean - default: true - - variable: blocked_tools - label: Blocked Tools - description: Blocked Tools. A list of tools that should not appear on boards. - schema: - type: list - default: [] - items: - - variable: blockedTool - label: Blocked Tool - schema: - type: string - required: true - default: "" - - variable: blocked_selection_buttons - label: Blocked Selection Buttons - description: Blocked Selection Buttons. A list of selection buttons that should not be available. - schema: - type: list - default: [] - items: - - variable: blockedButton - label: Blocked Button - schema: - type: string - required: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 10353 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: Data Storage - description: Data Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 1000 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - schema: - type: int - default: 1000 - - variable: fsGroup - label: fsGroup - description: The group that should own ALL storage. - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/wbo/3.0.1/CHANGELOG.md b/stable/wbo/3.0.1/CHANGELOG.md new file mode 100644 index 00000000000..9a1fc9098c7 --- /dev/null +++ b/stable/wbo/3.0.1/CHANGELOG.md @@ -0,0 +1,17 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [wbo-3.0.1](https://github.com/truecharts/charts/compare/wbo-3.0.0...wbo-3.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [wbo-3.0.0](https://github.com/truecharts/charts/compare/wbo-2.0.7...wbo-3.0.0) (2023-01-15) + diff --git a/stable/wbo/3.0.1/Chart.yaml b/stable/wbo/3.0.1/Chart.yaml new file mode 100644 index 00000000000..18712ce7ef0 --- /dev/null +++ b/stable/wbo/3.0.1/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "1.19.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: an online collaborative whiteboard that allows many users to draw simultaneously on a large virtual board. +home: https://truecharts.org/charts/stable/wbo +icon: https://truecharts.org/img/hotlink-ok/chart-icons/wbo.png +keywords: + - wbo + - whiteboard +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: wbo +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/wbo + - https://hub.docker.com/lovasoa/wbo + - https://github.com/lovasoa/whitebophir +version: 3.0.1 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/wbo/3.0.1/README.md b/stable/wbo/3.0.1/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/wbo/3.0.1/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/wbo/3.0.1/app-changelog.md b/stable/wbo/3.0.1/app-changelog.md new file mode 100644 index 00000000000..bb005f773e5 --- /dev/null +++ b/stable/wbo/3.0.1/app-changelog.md @@ -0,0 +1,9 @@ + + +## [wbo-3.0.1](https://github.com/truecharts/charts/compare/wbo-3.0.0...wbo-3.0.1) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/wbo/3.0.0/app-readme.md b/stable/wbo/3.0.1/app-readme.md similarity index 100% rename from stable/wbo/3.0.0/app-readme.md rename to stable/wbo/3.0.1/app-readme.md diff --git a/stable/wbo/3.0.1/charts/common-11.1.2.tgz b/stable/wbo/3.0.1/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/tsmuxer/3.0.10/templates/common.yaml b/stable/tsmuxer/3.0.10/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/tsmuxer/3.0.10/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/tsmuxer/3.0.10/values.yaml b/stable/tsmuxer/3.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/tsmuxer/3.0.9/CHANGELOG.md b/stable/tsmuxer/3.0.9/CHANGELOG.md deleted file mode 100644 index 49e8857efef..00000000000 --- a/stable/tsmuxer/3.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [tsmuxer-3.0.9](https://github.com/truecharts/charts/compare/tsmuxer-3.0.8...tsmuxer-3.0.9) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/tsmuxer to v23.01.1 - - - - -## [tsmuxer-3.0.8](https://github.com/truecharts/charts/compare/tsmuxer-3.0.7...tsmuxer-3.0.8) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [tsmuxer-3.0.7](https://github.com/truecharts/charts/compare/tsmuxer-3.0.6...tsmuxer-3.0.7) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [tsmuxer-3.0.6](https://github.com/truecharts/charts/compare/tsmuxer-3.0.5...tsmuxer-3.0.6) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [tsmuxer-3.0.5](https://github.com/truecharts/charts/compare/tsmuxer-3.0.4...tsmuxer-3.0.5) (2022-12-19) - -### Chore - -- update helm general non-major - - update container image tccr.io/truecharts/tsmuxer to v22.12.2 - - - - -## [tsmuxer-3.0.4](https://github.com/truecharts/charts/compare/tsmuxer-3.0.3...tsmuxer-3.0.4) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [tsmuxer-3.0.3](https://github.com/truecharts/charts/compare/tsmuxer-3.0.2...tsmuxer-3.0.3) (2022-12-10) - - - - -## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) - - - - -## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) - - - - -## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) - - - - -## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) - - - - -## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) - - - - -## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) - - - - -## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) - - diff --git a/stable/tsmuxer/3.0.9/Chart.yaml b/stable/tsmuxer/3.0.9/Chart.yaml deleted file mode 100644 index 50c379ffa49..00000000000 --- a/stable/tsmuxer/3.0.9/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "23.01.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: tsMuxer is a Transport Stream muxer. -home: https://truecharts.org/charts/stable/tsmuxer -icon: https://truecharts.org/img/hotlink-ok/chart-icons/tsmuxer.png -keywords: - - media - - tsmuxer -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: tsmuxer -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/tsmuxer - - https://github.com/jlesage/docker-tsmuxer - - https://hub.docker.com/r/jlesage/tsmuxer/ -type: application -version: 3.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/tsmuxer/3.0.9/app-changelog.md b/stable/tsmuxer/3.0.9/app-changelog.md deleted file mode 100644 index 9cdef6ffae4..00000000000 --- a/stable/tsmuxer/3.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [tsmuxer-3.0.9](https://github.com/truecharts/charts/compare/tsmuxer-3.0.8...tsmuxer-3.0.9) (2023-01-11) - -### Chore - -- update container image tccr.io/truecharts/tsmuxer to v23.01.1 - - \ No newline at end of file diff --git a/stable/tsmuxer/3.0.9/app-readme.md b/stable/tsmuxer/3.0.9/app-readme.md deleted file mode 100644 index 1f662c3214d..00000000000 --- a/stable/tsmuxer/3.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -tsMuxer is a Transport Stream muxer. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/tsmuxer](https://truecharts.org/charts/stable/tsmuxer) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/tsmuxer/3.0.9/questions.yaml b/stable/tsmuxer/3.0.9/questions.yaml deleted file mode 100644 index 47ea707baa1..00000000000 --- a/stable/tsmuxer/3.0.9/questions.yaml +++ /dev/null @@ -1,2013 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - # Portal - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: VNC_PASSWORD - label: "VNC_PASSWORD" - description: "Password needed to connect to the application's GUI. See the VNC Password section for more details." - schema: - type: string - private: true - default: "" - - variable: tsmuxer - group: "App Configuration" - label: "tsMuxeR Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ENABLE_CJK_FONT - label: "ENABLE_CJK_FONT" - description: "When set to true, open-source computer font WenQuanYi Zen Hei is installed. " - schema: - type: boolean - default: false - - variable: KEEP_APP_RUNNING - label: "KEEP_APP_RUNNING" - description: "When set to true, the application will be automatically restarted if it crashes or if a user quits it." - schema: - type: boolean - default: false - - variable: gui - label: "GUI Settings" - description: "Always read description before changing a value here. Also refer to README" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: DISPLAY_WIDTH - label: "DISPLAY_WIDTH" - description: "Width (in pixels) of the application's window." - schema: - type: int - default: 1280 - required: true - - variable: DISPLAY_HEIGHT - label: "DISPLAY_HEIGHT" - description: "Height (in pixels) of the application's window." - schema: - type: int - default: 768 - required: true - - variable: SECURE_CONNECTION - label: "SECURE_CONNECTION" - description: "When set to true, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details." - schema: - type: boolean - default: false - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10274 - required: true - - variable: vnc - label: "VNC Service" - description: "VNC Service" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: vnc - label: "TCP Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10275 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: storage - label: "App Storage" - description: "Application Storage." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/typecho/7.0.17/CHANGELOG.md b/stable/typecho/7.0.17/CHANGELOG.md deleted file mode 100644 index 10221b68cbb..00000000000 --- a/stable/typecho/7.0.17/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [typecho-7.0.17](https://github.com/truecharts/charts/compare/typecho-7.0.16...typecho-7.0.17) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - - - -## [typecho-7.0.16](https://github.com/truecharts/charts/compare/typecho-7.0.15...typecho-7.0.16) (2023-01-23) - -### Chore - -- update helm general non-major - - - - -## [typecho-7.0.15](https://github.com/truecharts/charts/compare/typecho-7.0.14...typecho-7.0.15) (2023-01-17) - -### Chore - -- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) - - - - -## [typecho-7.0.14](https://github.com/truecharts/charts/compare/typecho-7.0.13...typecho-7.0.14) (2023-01-07) - -### Chore - -- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) - - - - -## [typecho-7.0.13](https://github.com/truecharts/charts/compare/typecho-7.0.12...typecho-7.0.13) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [typecho-7.0.12](https://github.com/truecharts/charts/compare/typecho-7.0.11...typecho-7.0.12) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [typecho-7.0.11](https://github.com/truecharts/charts/compare/typecho-7.0.10...typecho-7.0.11) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [typecho-7.0.10](https://github.com/truecharts/charts/compare/typecho-7.0.9...typecho-7.0.10) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [typecho-7.0.9](https://github.com/truecharts/charts/compare/typecho-7.0.8...typecho-7.0.9) (2022-12-18) - -### Chore - -- update helm chart mariadb to v5.0.15 ([#5492](https://github.com/truecharts/charts/issues/5492)) - - - - -## [typecho-7.0.8](https://github.com/truecharts/charts/compare/typecho-7.0.7...typecho-7.0.8) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [typecho-7.0.7](https://github.com/truecharts/charts/compare/typecho-7.0.6...typecho-7.0.7) (2022-12-05) - -### Chore diff --git a/stable/typecho/7.0.17/Chart.yaml b/stable/typecho/7.0.17/Chart.yaml deleted file mode 100644 index ee59fc8f147..00000000000 --- a/stable/typecho/7.0.17/Chart.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: v2 -appVersion: "1.2.0" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 - - condition: mariadb.enabled - name: mariadb - repository: https://charts.truecharts.org/ - version: 5.0.25 -description: Typecho is a PHP Blogging Platform. -home: https://truecharts.org/charts/stable/typecho -icon: https://truecharts.org/img/hotlink-ok/chart-icons/typecho.png -keywords: - - typecho - - blog -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: typecho -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/typecho - - https://github.com/typecho/typecho - - https://hub.docker.com/r/joyqi/typecho -version: 7.0.17 -annotations: - truecharts.org/catagories: | - - hosting - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/typecho/7.0.17/app-changelog.md b/stable/typecho/7.0.17/app-changelog.md deleted file mode 100644 index 9b53dbd2f27..00000000000 --- a/stable/typecho/7.0.17/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [typecho-7.0.17](https://github.com/truecharts/charts/compare/typecho-7.0.16...typecho-7.0.17) (2023-01-24) - -### Chore - -- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) - - \ No newline at end of file diff --git a/stable/typecho/7.0.18/CHANGELOG.md b/stable/typecho/7.0.18/CHANGELOG.md new file mode 100644 index 00000000000..8d5b59531b8 --- /dev/null +++ b/stable/typecho/7.0.18/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [typecho-7.0.18](https://github.com/truecharts/charts/compare/typecho-7.0.17...typecho-7.0.18) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [typecho-7.0.17](https://github.com/truecharts/charts/compare/typecho-7.0.16...typecho-7.0.17) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [typecho-7.0.16](https://github.com/truecharts/charts/compare/typecho-7.0.15...typecho-7.0.16) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [typecho-7.0.15](https://github.com/truecharts/charts/compare/typecho-7.0.14...typecho-7.0.15) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [typecho-7.0.14](https://github.com/truecharts/charts/compare/typecho-7.0.13...typecho-7.0.14) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [typecho-7.0.13](https://github.com/truecharts/charts/compare/typecho-7.0.12...typecho-7.0.13) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [typecho-7.0.12](https://github.com/truecharts/charts/compare/typecho-7.0.11...typecho-7.0.12) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [typecho-7.0.11](https://github.com/truecharts/charts/compare/typecho-7.0.10...typecho-7.0.11) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [typecho-7.0.10](https://github.com/truecharts/charts/compare/typecho-7.0.9...typecho-7.0.10) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [typecho-7.0.9](https://github.com/truecharts/charts/compare/typecho-7.0.8...typecho-7.0.9) (2022-12-18) + +### Chore + +- update helm chart mariadb to v5.0.15 ([#5492](https://github.com/truecharts/charts/issues/5492)) + + + + +## [typecho-7.0.8](https://github.com/truecharts/charts/compare/typecho-7.0.7...typecho-7.0.8) (2022-12-13) + +### Chore diff --git a/stable/typecho/7.0.18/Chart.yaml b/stable/typecho/7.0.18/Chart.yaml new file mode 100644 index 00000000000..458874e8ef0 --- /dev/null +++ b/stable/typecho/7.0.18/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "1.2.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: mariadb.enabled + name: mariadb + repository: https://charts.truecharts.org/ + version: 5.0.25 +description: Typecho is a PHP Blogging Platform. +home: https://truecharts.org/charts/stable/typecho +icon: https://truecharts.org/img/hotlink-ok/chart-icons/typecho.png +keywords: + - typecho + - blog +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: typecho +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/typecho + - https://hub.docker.com/joyqi/typecho + - https://github.com/typecho/typecho +version: 7.0.18 +annotations: + truecharts.org/catagories: | + - hosting + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/typecho/7.0.18/README.md b/stable/typecho/7.0.18/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/typecho/7.0.18/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/typecho/7.0.18/app-changelog.md b/stable/typecho/7.0.18/app-changelog.md new file mode 100644 index 00000000000..08014e7f4bd --- /dev/null +++ b/stable/typecho/7.0.18/app-changelog.md @@ -0,0 +1,9 @@ + + +## [typecho-7.0.18](https://github.com/truecharts/charts/compare/typecho-7.0.17...typecho-7.0.18) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/typecho/7.0.17/app-readme.md b/stable/typecho/7.0.18/app-readme.md similarity index 100% rename from stable/typecho/7.0.17/app-readme.md rename to stable/typecho/7.0.18/app-readme.md diff --git a/stable/typecho/7.0.18/charts/common-11.1.2.tgz b/stable/typecho/7.0.18/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/truecommand/13.0.8/templates/common.yaml b/stable/truecommand/13.0.8/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/truecommand/13.0.8/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/truecommand/13.0.8/values.yaml b/stable/truecommand/13.0.8/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/tsmuxer/3.0.10/CHANGELOG.md b/stable/tsmuxer/3.0.10/CHANGELOG.md new file mode 100644 index 00000000000..8e2ad08ee41 --- /dev/null +++ b/stable/tsmuxer/3.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [tsmuxer-3.0.10](https://github.com/truecharts/charts/compare/tsmuxer-3.0.9...tsmuxer-3.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [tsmuxer-3.0.9](https://github.com/truecharts/charts/compare/tsmuxer-3.0.8...tsmuxer-3.0.9) (2023-01-11) + +### Chore + +- update container image tccr.io/truecharts/tsmuxer to v23.01.1 + + + + +## [tsmuxer-3.0.8](https://github.com/truecharts/charts/compare/tsmuxer-3.0.7...tsmuxer-3.0.8) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [tsmuxer-3.0.7](https://github.com/truecharts/charts/compare/tsmuxer-3.0.6...tsmuxer-3.0.7) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [tsmuxer-3.0.6](https://github.com/truecharts/charts/compare/tsmuxer-3.0.5...tsmuxer-3.0.6) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [tsmuxer-3.0.5](https://github.com/truecharts/charts/compare/tsmuxer-3.0.4...tsmuxer-3.0.5) (2022-12-19) + +### Chore + +- update helm general non-major + - update container image tccr.io/truecharts/tsmuxer to v22.12.2 + + + + +## [tsmuxer-3.0.4](https://github.com/truecharts/charts/compare/tsmuxer-3.0.3...tsmuxer-3.0.4) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [tsmuxer-3.0.3](https://github.com/truecharts/charts/compare/tsmuxer-3.0.2...tsmuxer-3.0.3) (2022-12-10) + + + + +## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) + + + + +## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) + + + + +## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) + + + + +## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) + + + + +## [tsmuxer-3.0.2](https://github.com/truecharts/charts/compare/tsmuxer-3.0.1...tsmuxer-3.0.2) (2022-11-30) + + + diff --git a/stable/tsmuxer/3.0.10/Chart.yaml b/stable/tsmuxer/3.0.10/Chart.yaml new file mode 100644 index 00000000000..20baed1ef1d --- /dev/null +++ b/stable/tsmuxer/3.0.10/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "23.01.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: tsMuxer is a Transport Stream muxer. +home: https://truecharts.org/charts/stable/tsmuxer +icon: https://truecharts.org/img/hotlink-ok/chart-icons/tsmuxer.png +keywords: + - media + - tsmuxer +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: tsmuxer +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/tsmuxer + - https://hub.docker.com/jlesage/tsmuxer + - https://github.com/jlesage/docker-tsmuxer +type: application +version: 3.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/tsmuxer/3.0.10/README.md b/stable/tsmuxer/3.0.10/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/tsmuxer/3.0.10/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/tsmuxer/3.0.10/app-changelog.md b/stable/tsmuxer/3.0.10/app-changelog.md new file mode 100644 index 00000000000..6b4aec3c077 --- /dev/null +++ b/stable/tsmuxer/3.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [tsmuxer-3.0.10](https://github.com/truecharts/charts/compare/tsmuxer-3.0.9...tsmuxer-3.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/tsmuxer/3.0.10/app-readme.md b/stable/tsmuxer/3.0.10/app-readme.md new file mode 100644 index 00000000000..c8fb9892743 --- /dev/null +++ b/stable/tsmuxer/3.0.10/app-readme.md @@ -0,0 +1,8 @@ +tsMuxer is a Transport Stream muxer. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/tsmuxer](https://truecharts.org/charts/stable/tsmuxer) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/tsmuxer/3.0.10/charts/common-11.1.2.tgz b/stable/tsmuxer/3.0.10/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/traggo/1.0.5/templates/_secret.tpl b/stable/traggo/1.0.6/templates/_secret.tpl similarity index 100% rename from stable/traggo/1.0.5/templates/_secret.tpl rename to stable/traggo/1.0.6/templates/_secret.tpl diff --git a/stable/traggo/1.0.5/templates/common.yaml b/stable/traggo/1.0.6/templates/common.yaml similarity index 100% rename from stable/traggo/1.0.5/templates/common.yaml rename to stable/traggo/1.0.6/templates/common.yaml diff --git a/stable/traggo/1.0.6/values.yaml b/stable/traggo/1.0.6/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/truecommand/13.0.8/CHANGELOG.md b/stable/truecommand/13.0.8/CHANGELOG.md new file mode 100644 index 00000000000..b1e73527e38 --- /dev/null +++ b/stable/truecommand/13.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [truecommand-13.0.8](https://github.com/truecharts/charts/compare/truecommand-13.0.7...truecommand-13.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [truecommand-13.0.7](https://github.com/truecharts/charts/compare/truecommand-13.0.6...truecommand-13.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [truecommand-13.0.6](https://github.com/truecharts/charts/compare/truecommand-13.0.5...truecommand-13.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [truecommand-13.0.5](https://github.com/truecharts/charts/compare/truecommand-13.0.4...truecommand-13.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [truecommand-13.0.4](https://github.com/truecharts/charts/compare/truecommand-13.0.3...truecommand-13.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [truecommand-13.0.3](https://github.com/truecharts/charts/compare/truecommand-13.0.2...truecommand-13.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [truecommand-13.0.2](https://github.com/truecharts/charts/compare/truecommand-13.0.1...truecommand-13.0.2) (2022-11-30) + + + + +## [truecommand-13.0.2](https://github.com/truecharts/charts/compare/truecommand-13.0.1...truecommand-13.0.2) (2022-11-30) + + + + +## [truecommand-13.0.2](https://github.com/truecharts/charts/compare/truecommand-13.0.1...truecommand-13.0.2) (2022-11-30) + + + + +## [truecommand-13.0.2](https://github.com/truecharts/charts/compare/truecommand-13.0.1...truecommand-13.0.2) (2022-11-30) + + + + +## [truecommand-13.0.2](https://github.com/truecharts/charts/compare/truecommand-13.0.1...truecommand-13.0.2) (2022-11-30) + + + + +## [truecommand-13.0.2](https://github.com/truecharts/charts/compare/truecommand-13.0.1...truecommand-13.0.2) (2022-11-30) + + + + +## [truecommand-13.0.2](https://github.com/truecharts/charts/compare/truecommand-13.0.1...truecommand-13.0.2) (2022-11-30) + + + + +## [truecommand-13.0.2](https://github.com/truecharts/charts/compare/truecommand-13.0.1...truecommand-13.0.2) (2022-11-30) + + + diff --git a/stable/truecommand/13.0.8/Chart.yaml b/stable/truecommand/13.0.8/Chart.yaml new file mode 100644 index 00000000000..aaf27a0707c --- /dev/null +++ b/stable/truecommand/13.0.8/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "2.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Aggregated management of TrueNAS devices +home: https://truecharts.org/charts/stable/truecommand +icon: https://truecharts.org/img/hotlink-ok/chart-icons/truecommand.png +keywords: + - truecommand +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: truecommand +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/truecommand + - https://hub.docker.com/ixsystems/truecommand +type: application +version: 13.0.8 +annotations: + truecharts.org/catagories: | + - Administration + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/truecommand/13.0.8/README.md b/stable/truecommand/13.0.8/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/truecommand/13.0.8/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/truecommand/13.0.8/app-changelog.md b/stable/truecommand/13.0.8/app-changelog.md new file mode 100644 index 00000000000..a4e67114907 --- /dev/null +++ b/stable/truecommand/13.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [truecommand-13.0.8](https://github.com/truecharts/charts/compare/truecommand-13.0.7...truecommand-13.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/truecommand/13.0.8/app-readme.md b/stable/truecommand/13.0.8/app-readme.md new file mode 100644 index 00000000000..4dc8957fdfc --- /dev/null +++ b/stable/truecommand/13.0.8/app-readme.md @@ -0,0 +1,8 @@ +Aggregated management of TrueNAS devices + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/truecommand](https://truecharts.org/charts/stable/truecommand) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/truecommand/13.0.8/charts/common-11.1.2.tgz b/stable/truecommand/13.0.8/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/traccar/10.0.20/templates/common.yaml b/stable/traccar/10.0.20/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/traccar/10.0.20/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/traccar/10.0.20/values.yaml b/stable/traccar/10.0.20/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/traggo/1.0.5/CHANGELOG.md b/stable/traggo/1.0.5/CHANGELOG.md deleted file mode 100644 index eef4fc2b183..00000000000 --- a/stable/traggo/1.0.5/CHANGELOG.md +++ /dev/null @@ -1,58 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [traggo-1.0.5](https://github.com/truecharts/charts/compare/traggo-1.0.4...traggo-1.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [traggo-1.0.4](https://github.com/truecharts/charts/compare/traggo-1.0.3...traggo-1.0.4) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [traggo-1.0.3](https://github.com/truecharts/charts/compare/traggo-1.0.2...traggo-1.0.3) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [traggo-1.0.2](https://github.com/truecharts/charts/compare/traggo-1.0.1...traggo-1.0.2) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [traggo-1.0.1](https://github.com/truecharts/charts/compare/traggo-1.0.0...traggo-1.0.1) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [traggo-1.0.0](https://github.com/truecharts/charts/compare/traggo-0.0.2...traggo-1.0.0) (2022-12-08) - -### Feat - -- move to stable - - \ No newline at end of file diff --git a/stable/traggo/1.0.5/Chart.yaml b/stable/traggo/1.0.5/Chart.yaml deleted file mode 100644 index 48684298e13..00000000000 --- a/stable/traggo/1.0.5/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "0.2.3" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Traggo is a tag-based time tracking tool. In Traggo there are no tasks, only tagged time spans. -home: https://truecharts.org/charts/stable/traggo -icon: https://truecharts.org/img/hotlink-ok/chart-icons/traggo.png -keywords: - - time-tracking - - tag -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: traggo -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/traggo - - https://github.com/traggo/server -type: application -version: 1.0.5 -annotations: - truecharts.org/catagories: | - - productivity - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/traggo/1.0.5/app-changelog.md b/stable/traggo/1.0.5/app-changelog.md deleted file mode 100644 index a73cc1e9ee3..00000000000 --- a/stable/traggo/1.0.5/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [traggo-1.0.5](https://github.com/truecharts/charts/compare/traggo-1.0.4...traggo-1.0.5) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/traggo/1.0.5/app-readme.md b/stable/traggo/1.0.5/app-readme.md deleted file mode 100644 index d3d898f23c1..00000000000 --- a/stable/traggo/1.0.5/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Traggo is a tag-based time tracking tool. In Traggo there are no tasks, only tagged time spans. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/traggo](https://truecharts.org/charts/stable/traggo) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/traggo/1.0.5/questions.yaml b/stable/traggo/1.0.5/questions.yaml deleted file mode 100644 index 04bf917aa30..00000000000 --- a/stable/traggo/1.0.5/questions.yaml +++ /dev/null @@ -1,1874 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: traggo - group: App Configuration - label: Traggo Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: username - label: Username - schema: - type: string - required: true - default: "" - - variable: password - label: Password - schema: - type: string - required: true - private: true - default: "" - - variable: pass_strength - label: Password Strength - schema: - type: int - required: true - default: 10 - - variable: log_level - label: Log Level - schema: - type: string - required: true - default: info - enum: - - value: info - description: Info - - value: debug - description: Debug - - value: warn - description: Warn - - value: error - description: Error - - value: fatal - description: Fatal - - value: panic - description: Panic - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service - description: The Primary service on which the healthcheck runs, often the webUI - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Service Port Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - description: This port exposes the container port on the service - schema: - type: int - default: 12117 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: App Config Storage - description: Stores the Application Configuration. - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: Main Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: Privileged mode - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: ReadOnly Root Filesystem - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: Allow Privilege Escalation - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: runAsNonRoot - schema: - type: boolean - default: true - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: runAsUser - description: The UserID of the user running the application - schema: - type: int - default: 568 - - variable: runAsGroup - label: runAsGroup - description: The groupID this App of the user running the application - 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 - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/traggo/1.0.6/CHANGELOG.md b/stable/traggo/1.0.6/CHANGELOG.md new file mode 100644 index 00000000000..0409d130a5d --- /dev/null +++ b/stable/traggo/1.0.6/CHANGELOG.md @@ -0,0 +1,67 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [traggo-1.0.6](https://github.com/truecharts/charts/compare/traggo-1.0.5...traggo-1.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [traggo-1.0.5](https://github.com/truecharts/charts/compare/traggo-1.0.4...traggo-1.0.5) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [traggo-1.0.4](https://github.com/truecharts/charts/compare/traggo-1.0.3...traggo-1.0.4) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [traggo-1.0.3](https://github.com/truecharts/charts/compare/traggo-1.0.2...traggo-1.0.3) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [traggo-1.0.2](https://github.com/truecharts/charts/compare/traggo-1.0.1...traggo-1.0.2) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [traggo-1.0.1](https://github.com/truecharts/charts/compare/traggo-1.0.0...traggo-1.0.1) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [traggo-1.0.0](https://github.com/truecharts/charts/compare/traggo-0.0.2...traggo-1.0.0) (2022-12-08) + +### Feat + +- move to stable + + \ No newline at end of file diff --git a/stable/traggo/1.0.6/Chart.yaml b/stable/traggo/1.0.6/Chart.yaml new file mode 100644 index 00000000000..242b746a38d --- /dev/null +++ b/stable/traggo/1.0.6/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +appVersion: "0.2.3" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Traggo is a tag-based time tracking tool. In Traggo there are no tasks, only tagged time spans. +home: https://truecharts.org/charts/stable/traggo +icon: https://truecharts.org/img/hotlink-ok/chart-icons/traggo.png +keywords: + - time-tracking + - tag +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: traggo +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/traggo + - https://hub.docker.com/traggo/server + - https://github.com/traggo/server +type: application +version: 1.0.6 +annotations: + truecharts.org/catagories: | + - productivity + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/traggo/1.0.6/README.md b/stable/traggo/1.0.6/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/traggo/1.0.6/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/traggo/1.0.6/app-changelog.md b/stable/traggo/1.0.6/app-changelog.md new file mode 100644 index 00000000000..634be69fba9 --- /dev/null +++ b/stable/traggo/1.0.6/app-changelog.md @@ -0,0 +1,9 @@ + + +## [traggo-1.0.6](https://github.com/truecharts/charts/compare/traggo-1.0.5...traggo-1.0.6) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/traggo/1.0.6/app-readme.md b/stable/traggo/1.0.6/app-readme.md new file mode 100644 index 00000000000..92fc1bcf1c3 --- /dev/null +++ b/stable/traggo/1.0.6/app-readme.md @@ -0,0 +1,8 @@ +Traggo is a tag-based time tracking tool. In Traggo there are no tasks, only tagged time spans. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/traggo](https://truecharts.org/charts/stable/traggo) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/traggo/1.0.6/charts/common-11.1.2.tgz b/stable/traggo/1.0.6/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/tinymediamanager/4.0.10/templates/common.yaml b/stable/tinymediamanager/4.0.10/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/tinymediamanager/4.0.10/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/tinymediamanager/4.0.10/values.yaml b/stable/tinymediamanager/4.0.10/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/tinymediamanager/4.0.9/CHANGELOG.md b/stable/tinymediamanager/4.0.9/CHANGELOG.md deleted file mode 100644 index 4d03538c389..00000000000 --- a/stable/tinymediamanager/4.0.9/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [tinymediamanager-4.0.9](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.8...tinymediamanager-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [tinymediamanager-4.0.8](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.7...tinymediamanager-4.0.8) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [tinymediamanager-4.0.7](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.6...tinymediamanager-4.0.7) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [tinymediamanager-4.0.6](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.5...tinymediamanager-4.0.6) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [tinymediamanager-4.0.5](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.4...tinymediamanager-4.0.5) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [tinymediamanager-4.0.4](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.3...tinymediamanager-4.0.4) (2022-12-02) - -### Chore - -- update container image tccr.io/truecharts/tinymediamanager to v4.3.7 - - - - -## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) - - - - -## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) - - - - -## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) - - - - -## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) - - - - -## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) - - - - -## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) - - - - -## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) - - - - -## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) - - - diff --git a/stable/tinymediamanager/4.0.9/Chart.yaml b/stable/tinymediamanager/4.0.9/Chart.yaml deleted file mode 100644 index a7cc70029ae..00000000000 --- a/stable/tinymediamanager/4.0.9/Chart.yaml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: v2 -appVersion: "4.3.7" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: TinyMediaManager is a full featured media manager to organize and clean up your media library. -home: https://truecharts.org/charts/stable/tinymediamanager -icon: https://truecharts.org/img/hotlink-ok/chart-icons/tinymediamanager.png -keywords: - - tiny - - media - - manager -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: tinymediamanager -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/tinymediamanager - - https://hub.docker.com/r/tinymediamanager/tinymediamanager - - https://gitlab.com/tinyMediaManager/tinyMediaManager -version: 4.0.9 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/tinymediamanager/4.0.9/app-changelog.md b/stable/tinymediamanager/4.0.9/app-changelog.md deleted file mode 100644 index 1c40183f934..00000000000 --- a/stable/tinymediamanager/4.0.9/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [tinymediamanager-4.0.9](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.8...tinymediamanager-4.0.9) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/tinymediamanager/4.0.9/app-readme.md b/stable/tinymediamanager/4.0.9/app-readme.md deleted file mode 100644 index 5cddde63266..00000000000 --- a/stable/tinymediamanager/4.0.9/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -TinyMediaManager is a full featured media manager to organize and clean up your media library. - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/tinymediamanager](https://truecharts.org/charts/stable/tinymediamanager) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/tinymediamanager/4.0.9/questions.yaml b/stable/tinymediamanager/4.0.9/questions.yaml deleted file mode 100644 index 37b71af0469..00000000000 --- a/stable/tinymediamanager/4.0.9/questions.yaml +++ /dev/null @@ -1,1983 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: secretEnv - group: "App Configuration" - label: "Image Secrets" - schema: - additional_attrs: true - type: dict - attrs: - - variable: PASSWORD - label: "PASSWORD" - description: "Password for remote access" - schema: - type: string - private: true - default: "" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10179 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: data - label: "App Data Storage" - description: "Stores the Application Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: movies - label: "App Movies Storage" - description: "Stores the Application Movies." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: tvshows - label: "App TV Shows Storage" - description: "Stores the Application TV Shows." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/traccar/10.0.20/CHANGELOG.md b/stable/traccar/10.0.20/CHANGELOG.md new file mode 100644 index 00000000000..10abf10f7fd --- /dev/null +++ b/stable/traccar/10.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [traccar-10.0.20](https://github.com/truecharts/charts/compare/traccar-10.0.19...traccar-10.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [traccar-10.0.19](https://github.com/truecharts/charts/compare/traccar-10.0.18...traccar-10.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [traccar-10.0.18](https://github.com/truecharts/charts/compare/traccar-10.0.17...traccar-10.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [traccar-10.0.17](https://github.com/truecharts/charts/compare/traccar-10.0.16...traccar-10.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [traccar-10.0.16](https://github.com/truecharts/charts/compare/traccar-10.0.15...traccar-10.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [traccar-10.0.15](https://github.com/truecharts/charts/compare/traccar-10.0.14...traccar-10.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [traccar-10.0.14](https://github.com/truecharts/charts/compare/traccar-10.0.13...traccar-10.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [traccar-10.0.13](https://github.com/truecharts/charts/compare/traccar-10.0.12...traccar-10.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [traccar-10.0.12](https://github.com/truecharts/charts/compare/traccar-10.0.11...traccar-10.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [traccar-10.0.11](https://github.com/truecharts/charts/compare/traccar-10.0.10...traccar-10.0.11) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [traccar-10.0.10](https://github.com/truecharts/charts/compare/traccar-10.0.9...traccar-10.0.10) (2022-12-13) + +### Chore diff --git a/stable/traccar/10.0.20/Chart.yaml b/stable/traccar/10.0.20/Chart.yaml new file mode 100644 index 00000000000..1ea4c7b1231 --- /dev/null +++ b/stable/traccar/10.0.20/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "5.3" +description: Traccar is an open source GPS tracking system. +name: traccar +version: 10.0.20 +kubeVersion: ">=1.16.0-0" +keywords: + - traccar + - gps +home: https://truecharts.org/charts/stable/traccar +icon: https://truecharts.org/img/hotlink-ok/chart-icons/traccar.png +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/traccar + - https://hub.docker.com/traccar/traccar + - https://github.com/traccar/traccar +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/traccar/10.0.20/README.md b/stable/traccar/10.0.20/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/traccar/10.0.20/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/traccar/10.0.20/app-changelog.md b/stable/traccar/10.0.20/app-changelog.md new file mode 100644 index 00000000000..743a4307013 --- /dev/null +++ b/stable/traccar/10.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [traccar-10.0.20](https://github.com/truecharts/charts/compare/traccar-10.0.19...traccar-10.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/traccar/10.0.20/app-readme.md b/stable/traccar/10.0.20/app-readme.md new file mode 100644 index 00000000000..1f09a8fd750 --- /dev/null +++ b/stable/traccar/10.0.20/app-readme.md @@ -0,0 +1,8 @@ +Traccar is an open source GPS tracking system. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/traccar](https://truecharts.org/charts/stable/traccar) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/traccar/10.0.20/charts/common-11.1.2.tgz b/stable/traccar/10.0.20/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/thelounge/8.0.8/templates/common.yaml b/stable/thelounge/8.0.8/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/thelounge/8.0.8/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/thelounge/8.0.8/values.yaml b/stable/thelounge/8.0.8/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/tinymediamanager/4.0.10/CHANGELOG.md b/stable/tinymediamanager/4.0.10/CHANGELOG.md new file mode 100644 index 00000000000..7a38037e122 --- /dev/null +++ b/stable/tinymediamanager/4.0.10/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [tinymediamanager-4.0.10](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.9...tinymediamanager-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [tinymediamanager-4.0.9](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.8...tinymediamanager-4.0.9) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [tinymediamanager-4.0.8](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.7...tinymediamanager-4.0.8) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [tinymediamanager-4.0.7](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.6...tinymediamanager-4.0.7) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [tinymediamanager-4.0.6](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.5...tinymediamanager-4.0.6) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [tinymediamanager-4.0.5](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.4...tinymediamanager-4.0.5) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [tinymediamanager-4.0.4](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.3...tinymediamanager-4.0.4) (2022-12-02) + +### Chore + +- update container image tccr.io/truecharts/tinymediamanager to v4.3.7 + + + + +## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) + + + + +## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) + + + + +## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) + + + + +## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) + + + + +## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) + + + + +## [tinymediamanager-4.0.3](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.2...tinymediamanager-4.0.3) (2022-11-30) + + + + diff --git a/stable/tinymediamanager/4.0.10/Chart.yaml b/stable/tinymediamanager/4.0.10/Chart.yaml new file mode 100644 index 00000000000..5c3be25608c --- /dev/null +++ b/stable/tinymediamanager/4.0.10/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "4.3.7" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: TinyMediaManager is a full featured media manager to organize and clean up your media library. +home: https://truecharts.org/charts/stable/tinymediamanager +icon: https://truecharts.org/img/hotlink-ok/chart-icons/tinymediamanager.png +keywords: + - tiny + - media + - manager +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: tinymediamanager +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/tinymediamanager + - https://hub.docker.com/tinymediamanager/tinymediamanager + - https://gitlab.com/tinyMediaManager/tinyMediaManager +version: 4.0.10 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/tinymediamanager/4.0.10/README.md b/stable/tinymediamanager/4.0.10/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/tinymediamanager/4.0.10/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/tinymediamanager/4.0.10/app-changelog.md b/stable/tinymediamanager/4.0.10/app-changelog.md new file mode 100644 index 00000000000..469fb13e175 --- /dev/null +++ b/stable/tinymediamanager/4.0.10/app-changelog.md @@ -0,0 +1,9 @@ + + +## [tinymediamanager-4.0.10](https://github.com/truecharts/charts/compare/tinymediamanager-4.0.9...tinymediamanager-4.0.10) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/tinymediamanager/4.0.10/app-readme.md b/stable/tinymediamanager/4.0.10/app-readme.md new file mode 100644 index 00000000000..3590e4e97fc --- /dev/null +++ b/stable/tinymediamanager/4.0.10/app-readme.md @@ -0,0 +1,8 @@ +TinyMediaManager is a full featured media manager to organize and clean up your media library. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/tinymediamanager](https://truecharts.org/charts/stable/tinymediamanager) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/tinymediamanager/4.0.10/charts/common-11.1.2.tgz b/stable/tinymediamanager/4.0.10/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/teedy/10.0.20/templates/common.yaml b/stable/teedy/10.0.20/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/teedy/10.0.20/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/teedy/10.0.20/values.yaml b/stable/teedy/10.0.20/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/thelounge/8.0.7/CHANGELOG.md b/stable/thelounge/8.0.7/CHANGELOG.md deleted file mode 100644 index a94a373b4e0..00000000000 --- a/stable/thelounge/8.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [thelounge-8.0.7](https://github.com/truecharts/charts/compare/thelounge-8.0.6...thelounge-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [thelounge-8.0.6](https://github.com/truecharts/charts/compare/thelounge-8.0.5...thelounge-8.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [thelounge-8.0.5](https://github.com/truecharts/charts/compare/thelounge-8.0.4...thelounge-8.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [thelounge-8.0.4](https://github.com/truecharts/charts/compare/thelounge-8.0.3...thelounge-8.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [thelounge-8.0.3](https://github.com/truecharts/charts/compare/thelounge-8.0.2...thelounge-8.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - - - -## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) - - diff --git a/stable/thelounge/8.0.7/Chart.yaml b/stable/thelounge/8.0.7/Chart.yaml deleted file mode 100644 index 2b99c0eb256..00000000000 --- a/stable/thelounge/8.0.7/Chart.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v2 -appVersion: "4.3.1" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -description: The Lounge, modern web IRC client designed for self-hosting -home: https://truecharts.org/charts/stable/thelounge -icon: https://truecharts.org/img/hotlink-ok/chart-icons/thelounge.png -keywords: - - thelounge - - IRC - - The Lounge - - docker - - thelounge-docker -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: thelounge -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/thelounge - - https://github.com/thelounge/thelounge -version: 8.0.7 -annotations: - truecharts.org/catagories: | - - utilities - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/thelounge/8.0.7/app-changelog.md b/stable/thelounge/8.0.7/app-changelog.md deleted file mode 100644 index fcf5cf16d0d..00000000000 --- a/stable/thelounge/8.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [thelounge-8.0.7](https://github.com/truecharts/charts/compare/thelounge-8.0.6...thelounge-8.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/thelounge/8.0.7/app-readme.md b/stable/thelounge/8.0.7/app-readme.md deleted file mode 100644 index a2710319bd1..00000000000 --- a/stable/thelounge/8.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -The Lounge, modern web IRC client designed for self-hosting - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/thelounge](https://truecharts.org/charts/stable/thelounge) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/thelounge/8.0.7/questions.yaml b/stable/thelounge/8.0.7/questions.yaml deleted file mode 100644 index bad5530a1b3..00000000000 --- a/stable/thelounge/8.0.7/questions.yaml +++ /dev/null @@ -1,1841 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: THELOUNGE_HOME - label: "THELOUNGE_HOME" - schema: - type: string - default: "/config" - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 10061 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: config - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: true - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/thelounge/8.0.8/CHANGELOG.md b/stable/thelounge/8.0.8/CHANGELOG.md new file mode 100644 index 00000000000..1a668897863 --- /dev/null +++ b/stable/thelounge/8.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [thelounge-8.0.8](https://github.com/truecharts/charts/compare/thelounge-8.0.7...thelounge-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [thelounge-8.0.7](https://github.com/truecharts/charts/compare/thelounge-8.0.6...thelounge-8.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [thelounge-8.0.6](https://github.com/truecharts/charts/compare/thelounge-8.0.5...thelounge-8.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [thelounge-8.0.5](https://github.com/truecharts/charts/compare/thelounge-8.0.4...thelounge-8.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [thelounge-8.0.4](https://github.com/truecharts/charts/compare/thelounge-8.0.3...thelounge-8.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [thelounge-8.0.3](https://github.com/truecharts/charts/compare/thelounge-8.0.2...thelounge-8.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) + + + + +## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) + + + + +## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) + + + + +## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) + + + + +## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) + + + + +## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) + + + + +## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) + + + + +## [thelounge-8.0.2](https://github.com/truecharts/charts/compare/thelounge-8.0.1...thelounge-8.0.2) (2022-11-30) + + + diff --git a/stable/thelounge/8.0.8/Chart.yaml b/stable/thelounge/8.0.8/Chart.yaml new file mode 100644 index 00000000000..6015b43f18f --- /dev/null +++ b/stable/thelounge/8.0.8/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "4.3.1" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: The Lounge, modern web IRC client designed for self-hosting +home: https://truecharts.org/charts/stable/thelounge +icon: https://truecharts.org/img/hotlink-ok/chart-icons/thelounge.png +keywords: + - thelounge + - IRC + - The Lounge + - docker + - thelounge-docker +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: thelounge +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/thelounge + - https://hub.docker.com/thelounge/thelounge + - https://github.com/thelounge/thelounge +version: 8.0.8 +annotations: + truecharts.org/catagories: | + - utilities + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/thelounge/8.0.8/README.md b/stable/thelounge/8.0.8/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/thelounge/8.0.8/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/thelounge/8.0.8/app-changelog.md b/stable/thelounge/8.0.8/app-changelog.md new file mode 100644 index 00000000000..0b366669c8c --- /dev/null +++ b/stable/thelounge/8.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [thelounge-8.0.8](https://github.com/truecharts/charts/compare/thelounge-8.0.7...thelounge-8.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/thelounge/8.0.8/app-readme.md b/stable/thelounge/8.0.8/app-readme.md new file mode 100644 index 00000000000..e88cc43ec51 --- /dev/null +++ b/stable/thelounge/8.0.8/app-readme.md @@ -0,0 +1,8 @@ +The Lounge, modern web IRC client designed for self-hosting + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/thelounge](https://truecharts.org/charts/stable/thelounge) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/thelounge/8.0.8/charts/common-11.1.2.tgz b/stable/thelounge/8.0.8/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/tdarr/4.0.8/templates/common.yaml b/stable/tdarr/4.0.8/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/stable/tdarr/4.0.8/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/stable/tdarr/4.0.8/values.yaml b/stable/tdarr/4.0.8/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/teedy/10.0.20/CHANGELOG.md b/stable/teedy/10.0.20/CHANGELOG.md new file mode 100644 index 00000000000..b5f3e392bfe --- /dev/null +++ b/stable/teedy/10.0.20/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [teedy-10.0.20](https://github.com/truecharts/charts/compare/teedy-10.0.19...teedy-10.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [teedy-10.0.19](https://github.com/truecharts/charts/compare/teedy-10.0.18...teedy-10.0.19) (2023-01-24) + +### Chore + +- update helm general non-major ([#6689](https://github.com/truecharts/charts/issues/6689)) + + + + +## [teedy-10.0.18](https://github.com/truecharts/charts/compare/teedy-10.0.17...teedy-10.0.18) (2023-01-23) + +### Chore + +- update helm general non-major + + + + +## [teedy-10.0.17](https://github.com/truecharts/charts/compare/teedy-10.0.16...teedy-10.0.17) (2023-01-17) + +### Chore + +- update helm general non-major ([#6430](https://github.com/truecharts/charts/issues/6430)) + + + + +## [teedy-10.0.16](https://github.com/truecharts/charts/compare/teedy-10.0.15...teedy-10.0.16) (2023-01-07) + +### Chore + +- update helm general non-major ([#6121](https://github.com/truecharts/charts/issues/6121)) + + + + +## [teedy-10.0.15](https://github.com/truecharts/charts/compare/teedy-10.0.14...teedy-10.0.15) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [teedy-10.0.14](https://github.com/truecharts/charts/compare/teedy-docs-2.0.5...teedy-10.0.14) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [teedy-10.0.13](https://github.com/truecharts/charts/compare/teedy-10.0.12...teedy-10.0.13) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [teedy-10.0.12](https://github.com/truecharts/charts/compare/teedy-10.0.11...teedy-10.0.12) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [teedy-10.0.11](https://github.com/truecharts/charts/compare/teedy-10.0.10...teedy-10.0.11) (2022-12-18) + +### Chore + +- update helm chart postgresql to v11.0.13 ([#5495](https://github.com/truecharts/charts/issues/5495)) + + + + +## [teedy-10.0.10](https://github.com/truecharts/charts/compare/teedy-10.0.9...teedy-10.0.10) (2022-12-13) + +### Chore diff --git a/stable/teedy/10.0.20/Chart.yaml b/stable/teedy/10.0.20/Chart.yaml new file mode 100644 index 00000000000..738c186ad6a --- /dev/null +++ b/stable/teedy/10.0.20/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +appVersion: "1.10" +description: Teedy is an open source, lightweight document management system for individuals and businesses. +name: teedy +version: 10.0.20 +kubeVersion: ">=1.16.0-0" +keywords: + - teedy + - documents + - management +home: https://truecharts.org/charts/stable/teedy +icon: https://truecharts.org/img/hotlink-ok/chart-icons/teedy.png +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/teedy + - https://github.com/sismics/docs +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 11.0.22 +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/teedy/10.0.20/README.md b/stable/teedy/10.0.20/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/teedy/10.0.20/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/teedy/10.0.20/app-changelog.md b/stable/teedy/10.0.20/app-changelog.md new file mode 100644 index 00000000000..2932d0a8c87 --- /dev/null +++ b/stable/teedy/10.0.20/app-changelog.md @@ -0,0 +1,9 @@ + + +## [teedy-10.0.20](https://github.com/truecharts/charts/compare/teedy-10.0.19...teedy-10.0.20) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/teedy/10.0.20/app-readme.md b/stable/teedy/10.0.20/app-readme.md new file mode 100644 index 00000000000..73aa08d8b58 --- /dev/null +++ b/stable/teedy/10.0.20/app-readme.md @@ -0,0 +1,8 @@ +Teedy is an open source, lightweight document management system for individuals and businesses. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/teedy](https://truecharts.org/charts/stable/teedy) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/teedy/10.0.20/charts/common-11.1.2.tgz b/stable/teedy/10.0.20/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 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

Ns)!nlnD&U5c%RrMW=OBxp`(26s3D#)&+ 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 zhttps://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/synctube/2.1.7/templates/common.yaml b/stable/synctube/2.1.8/templates/common.yaml similarity index 100% rename from stable/synctube/2.1.7/templates/common.yaml rename to stable/synctube/2.1.8/templates/common.yaml diff --git a/stable/synctube/2.1.8/values.yaml b/stable/synctube/2.1.8/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/tdarr/4.0.7/CHANGELOG.md b/stable/tdarr/4.0.7/CHANGELOG.md deleted file mode 100644 index fa59323f42b..00000000000 --- a/stable/tdarr/4.0.7/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ -**Important:** -*for the complete changelog, please refer to the website* - - - - -## [tdarr-4.0.7](https://github.com/truecharts/charts/compare/tdarr-node-4.0.6...tdarr-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - - - -## [tdarr-4.0.6](https://github.com/truecharts/charts/compare/tdarr-node-4.0.5...tdarr-4.0.6) (2022-12-26) - -### Chore - -- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) - - - - -## [tdarr-4.0.5](https://github.com/truecharts/charts/compare/tdarr-node-4.0.4...tdarr-4.0.5) (2022-12-25) - -### Chore - -- update helm general non-major - - - - -## [tdarr-4.0.4](https://github.com/truecharts/charts/compare/tdarr-node-4.0.3...tdarr-4.0.4) (2022-12-19) - -### Chore - -- update helm general non-major - - - - -## [tdarr-4.0.3](https://github.com/truecharts/charts/compare/tdarr-node-4.0.2...tdarr-4.0.3) (2022-12-13) - -### Chore - -- update helm general non-major - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - - - -## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) - - diff --git a/stable/tdarr/4.0.7/Chart.yaml b/stable/tdarr/4.0.7/Chart.yaml deleted file mode 100644 index 839d2a57393..00000000000 --- a/stable/tdarr/4.0.7/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v2 -appVersion: "2.00.18.2" -dependencies: - - name: common - repository: https://library-charts.truecharts.org - version: 11.1.2 -deprecated: false -description: Audio/Video library transcoding automation -home: https://truecharts.org/charts/stable/tdarr -icon: https://truecharts.org/img/hotlink-ok/chart-icons/tdarr.png -keywords: - - encode - - media - - tdarr -kubeVersion: ">=1.16.0-0" -maintainers: - - email: info@truecharts.org - name: TrueCharts - url: https://truecharts.org -name: tdarr -sources: - - https://github.com/truecharts/charts/tree/master/charts/stable/tdarr - - https://github.com/HaveAGitGat/Tdarr - - https://hub.docker.com/r/haveagitgat/tdarr -type: application -version: 4.0.7 -annotations: - truecharts.org/catagories: | - - media - truecharts.org/SCALE-support: "true" - truecharts.org/grade: U diff --git a/stable/tdarr/4.0.7/app-changelog.md b/stable/tdarr/4.0.7/app-changelog.md deleted file mode 100644 index 92a6f49d50f..00000000000 --- a/stable/tdarr/4.0.7/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [tdarr-4.0.7](https://github.com/truecharts/charts/compare/tdarr-node-4.0.6...tdarr-4.0.7) (2022-12-27) - -### Chore - -- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) - - \ No newline at end of file diff --git a/stable/tdarr/4.0.7/app-readme.md b/stable/tdarr/4.0.7/app-readme.md deleted file mode 100644 index d0e2cac58c4..00000000000 --- a/stable/tdarr/4.0.7/app-readme.md +++ /dev/null @@ -1,8 +0,0 @@ -Audio/Video library transcoding automation - -This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/tdarr](https://truecharts.org/charts/stable/tdarr) - ---- - -TrueCharts can only exist due to the incredible effort of our staff. -Please consider making a [donation](https://truecharts.org/about/sponsor) or contributing back to the project any way you can! diff --git a/stable/tdarr/4.0.7/questions.yaml b/stable/tdarr/4.0.7/questions.yaml deleted file mode 100644 index 163800212b3..00000000000 --- a/stable/tdarr/4.0.7/questions.yaml +++ /dev/null @@ -1,2183 +0,0 @@ -groups: - - name: Container Image - description: Image to be used for container - - name: General Settings - description: General Deployment Settings - - name: App Configuration - description: App Specific Config Options - - name: Networking and Services - description: Configure Network and Services for Container - - name: Storage and Persistence - description: Persist and Share Data that is Separate from the Container - - name: Ingress - description: Ingress Configuration - - name: Security and Permissions - description: Configure Security Context and Permissions - - name: Resources and Devices - description: "Specify Resources/Devices to be Allocated to Workload" - - name: Middlewares - description: Traefik Middlewares - - name: Metrics - description: Metrics - - name: VPN - description: VPN - - name: Addons - description: Addon Configuration - - name: Advanced - description: Advanced Configuration - - name: Documentation - description: Documentation -portals: - open: - protocols: - - "$kubernetes-resource_configmap_portal_protocol" - host: - - "$kubernetes-resource_configmap_portal_host" - ports: - - "$kubernetes-resource_configmap_portal_port" -questions: - - variable: global - label: Global Settings - group: "General Settings" - schema: - type: dict - hidden: true - attrs: - - variable: isSCALE - label: Flag this is SCALE - schema: - type: boolean - default: true - hidden: true - - variable: controller - group: "General Settings" - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: replicas - description: Number of desired pod replicas - label: Desired Replicas - schema: - type: int - required: true - default: 1 - - variable: customextraargs - group: "General Settings" - label: "Extra Args" - description: "Do not click this unless you know what you are doing" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: extraArgs - label: Extra Args - schema: - type: list - default: [] - items: - - variable: arg - label: Arg - schema: - type: string - - variable: TZ - label: Timezone - group: "General Settings" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - variable: envList - label: Extra Environment Variables - description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." - group: "General Settings" - schema: - type: list - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - - variable: value - label: Value - schema: - type: string - - variable: service - group: Networking and Services - label: Configure Service(s) - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service" - description: "The Primary service on which the healthcheck runs, often the webUI" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8265 - required: true - - variable: comm - label: "Comm Service" - description: "The service on which nodes connect to." - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Service - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: ports - label: "Service's Port(s) Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: comm - label: "Comm Service Port Configuration" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: "Port" - description: "This port exposes the container port on the service" - schema: - type: int - default: 8266 - required: true - - variable: serviceexpert - group: Networking and Services - label: Show Expert Config - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hostNetwork - group: Networking and Services - label: Host-Networking (Complicated) - schema: - type: boolean - default: false - - variable: externalInterfaces - description: Add External Interfaces - label: Add external Interfaces - group: Networking - schema: - type: list - items: - - variable: interfaceConfiguration - description: Interface Configuration - label: Interface Configuration - schema: - type: dict - $ref: - - "normalize/interfaceConfiguration" - attrs: - - variable: hostInterface - description: Please Specify Host Interface - label: Host Interface - schema: - type: string - required: true - $ref: - - "definitions/interface" - - variable: ipam - description: Define how IP Address will be managed - label: IP Address Management - schema: - type: dict - required: true - attrs: - - variable: type - description: Specify type for IPAM - label: IPAM Type - schema: - type: string - required: true - enum: - - value: dhcp - description: Use DHCP - - value: static - description: Use Static IP - show_subquestions_if: static - subquestions: - - variable: staticIPConfigurations - label: Static IP Addresses - schema: - type: list - items: - - variable: staticIP - label: Static IP - schema: - type: ipaddr - cidr: true - - variable: staticRoutes - label: Static Routes - schema: - type: list - items: - - variable: staticRouteConfiguration - label: Static Route Configuration - schema: - additional_attrs: true - type: dict - attrs: - - variable: destination - label: Destination - schema: - type: ipaddr - cidr: true - required: true - - variable: gateway - label: Gateway - schema: - type: ipaddr - cidr: false - required: true - - variable: env - group: "App Configuration" - label: "Image Environment" - schema: - additional_attrs: true - type: dict - attrs: - - variable: internalNode - label: "internalNode" - description: "Spawns an internal node (aka worker), disabling this, you will need to have a node separately." - schema: - type: boolean - default: true - show_subquestions_if: true - subquestions: - - variable: nodeID - label: "nodeID" - description: "Name of the internal node." - schema: - type: string - required: true - default: "Internal Node" - - variable: serviceList - label: Add Manual Custom Services - group: Networking and Services - schema: - type: list - default: [] - items: - - variable: serviceListEntry - label: Custom Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the service - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: LoadBalancer - description: LoadBalancer (Expose Ports) - - value: ClusterIP - description: ClusterIP (Do Not Expose Ports) - - value: Simple - description: Deprecated CHANGE THIS - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: portsList - label: Additional Service Ports - schema: - type: list - default: [] - items: - - variable: portsListEntry - label: Custom ports - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Port - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Port Name - schema: - type: string - default: "" - - variable: protocol - label: Port Type - schema: - type: string - default: TCP - enum: - - value: HTTP - description: HTTP - - value: HTTPS - description: HTTPS - - value: TCP - description: TCP - - value: UDP - description: UDP - - variable: targetPort - label: Target Port - description: This port exposes the container port on the service - schema: - type: int - required: true - - variable: port - label: Container Port - schema: - type: int - required: true - - variable: persistence - label: Integrated Persistent Storage - description: Integrated Persistent Storage - group: Storage and Persistence - schema: - additional_attrs: true - type: dict - attrs: - - variable: configs - label: "App Config Storage" - description: "Stores the Application Configuration." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: server - label: "App Server Data Storage" - description: "Stores the Application's Server Data." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: logs - label: "App Logs Storage" - description: "Stores the Application Logs." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: transcode-cache - label: "App Transcode cache" - description: "Stores the Application Transcode cache." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: media - label: "App Media" - description: "Stores the Application Media." - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: pvc - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size quotum of Storage (Do NOT REDUCE after installation) - description: This value can ONLY be INCREASED after the installation - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: persistenceList - label: Additional App Storage - group: Storage and Persistence - schema: - type: list - default: [] - items: - - variable: persistenceListEntry - label: Custom Storage - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the storage - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type of Storage - description: Sets the persistence type, Anything other than PVC could break rollback! - schema: - type: string - default: hostPath - enum: - - value: pvc - description: PVC - - value: hostPath - description: Host Path - - value: emptyDir - description: emptyDir - - value: nfs - description: NFS Share - - variable: server - label: NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: path - label: Path on NFS Server - schema: - show_if: [["type", "=", "nfs"]] - type: string - default: "" - - variable: setPermissions - label: Automatic Permissions - description: Automatically set permissions on install - schema: - show_if: [["type", "=", "hostPath"]] - type: boolean - default: false - - variable: readOnly - label: Read Only - schema: - type: boolean - default: false - - variable: hostPath - label: Host Path - description: Path inside the container the storage is mounted - schema: - show_if: [["type", "=", "hostPath"]] - type: hostpath - - variable: mountPath - label: Mount Path - description: Path inside the container the storage is mounted - schema: - type: string - default: "" - required: true - valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' - - variable: medium - label: EmptyDir Medium - schema: - show_if: [["type", "=", "emptyDir"]] - type: string - default: "" - enum: - - value: "" - description: Default - - value: Memory - description: Memory - - variable: size - label: Size Quotum of Storage - schema: - show_if: [["type", "=", "pvc"]] - type: string - default: 256Gi - - variable: ingress - label: "" - group: Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: main - label: "Main Ingress" - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: (Advanced) Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: ingressClassName - label: (Advanced/Optional) IngressClass Name - schema: - type: string - default: "" - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: ingressList - label: Add Manual Custom Ingresses - group: Ingress - schema: - type: list - default: [] - items: - - variable: ingressListEntry - label: Custom Ingress - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable Ingress - schema: - type: boolean - default: true - hidden: true - - variable: name - label: Name - schema: - type: string - default: "" - - variable: ingressClassName - label: IngressClass Name - schema: - type: string - default: "" - - variable: hosts - label: Hosts - schema: - type: list - default: [] - items: - - variable: hostEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: host - label: HostName - schema: - type: string - default: "" - required: true - - variable: paths - label: Paths - schema: - type: list - default: [] - items: - - variable: pathEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: path - label: Path - schema: - type: string - required: true - default: "/" - - variable: pathType - label: Path Type - schema: - type: string - required: true - default: Prefix - - variable: service - label: Linked Service - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Service Name - schema: - type: string - default: "" - - variable: port - label: Service Port - schema: - type: int - - variable: tls - label: TLS-Settings - schema: - type: list - default: [] - items: - - variable: tlsEntry - label: Host - schema: - additional_attrs: true - type: dict - attrs: - - variable: hosts - label: Certificate Hosts - schema: - type: list - default: [] - items: - - variable: host - label: Host - schema: - type: string - default: "" - required: true - - variable: scaleCert - label: Select TrueNAS SCALE Certificate - schema: - type: int - $ref: - - "definitions/certificate" - - variable: entrypoint - label: Traefik Entrypoint - description: Entrypoint used by Traefik when using Traefik as Ingress Provider - schema: - type: string - default: websecure - required: true - - variable: middlewares - label: Traefik Middlewares - description: Add previously created Traefik Middlewares to this Ingress - schema: - type: list - default: [] - items: - - variable: name - label: Name - schema: - type: string - default: "" - required: true - - variable: security - label: Container Security Settings - group: Security and Permissions - schema: - type: dict - additional_attrs: true - attrs: - - variable: editsecurity - label: Change PUID / UMASK values - description: By enabling this you override default set values. - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: PUID - label: Process User ID - PUID - description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps - schema: - type: int - default: 568 - - variable: UMASK - label: UMASK - description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps - schema: - type: string - default: "002" - - variable: advancedSecurity - label: Show Advanced Security Settings - group: Security and Permissions - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: securityContext - label: Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: privileged - label: "Privileged mode" - schema: - type: boolean - default: false - - variable: readOnlyRootFilesystem - label: "ReadOnly Root Filesystem" - schema: - type: boolean - default: false - - variable: allowPrivilegeEscalation - label: "Allow Privilege Escalation" - schema: - type: boolean - default: false - - variable: runAsNonRoot - label: "runAsNonRoot" - schema: - type: boolean - default: false - - variable: podSecurityContext - group: Security and Permissions - label: Pod Security Context - schema: - additional_attrs: true - type: dict - attrs: - - variable: runAsUser - label: "runAsUser" - description: "The UserID of the user running the application" - schema: - type: int - default: 0 - - variable: runAsGroup - label: "runAsGroup" - description: "The groupID this App of the user running the application" - schema: - type: int - default: 0 - - variable: fsGroup - label: "fsGroup" - description: "The group that should own ALL storage." - schema: - type: int - default: 568 - - variable: fsGroupChangePolicy - label: "When should we take ownership?" - schema: - type: string - default: OnRootMismatch - enum: - - value: OnRootMismatch - description: OnRootMismatch - - value: Always - description: Always - - variable: supplementalGroups - label: Supplemental Groups - schema: - type: list - default: [] - items: - - variable: supplementalGroupsEntry - label: Supplemental Group - schema: - type: int - - variable: resources - group: Resources and Devices - label: "Resource Limits" - schema: - additional_attrs: true - type: dict - attrs: - - variable: limits - label: Advanced Limit Resource Consumption - schema: - additional_attrs: true - type: dict - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 4000m - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: RAM - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 8Gi - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: requests - label: "Minimum Resources Required (request)" - schema: - additional_attrs: true - type: dict - hidden: true - attrs: - - variable: cpu - label: CPU - description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 10m - hidden: true - valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' - - variable: memory - label: "RAM" - description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" - schema: - type: string - default: 50Mi - hidden: true - valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' - - variable: deviceList - label: Mount USB Devices - group: Resources and Devices - schema: - type: list - default: [] - items: - - variable: deviceListEntry - label: Device - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enable the Storage - schema: - type: boolean - default: true - - variable: type - label: (Advanced) Type of Storage - description: Sets the persistence type - schema: - type: string - default: hostPath - hidden: true - - variable: readOnly - label: readOnly - schema: - type: boolean - default: false - - variable: hostPath - label: Host Device Path - description: Path to the device on the host system - schema: - type: path - - variable: mountPath - label: Container Device Path - description: Path inside the container the device is mounted - schema: - type: string - default: "/dev/ttyACM0" - # Specify GPU configuration - - variable: scaleGPU - label: GPU Configuration - group: Resources and Devices - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" - attrs: [] - - variable: horizontalPodAutoscaler - group: Advanced - label: (Advanced) Horizontal Pod Autoscaler - schema: - type: list - default: [] - items: - - variable: hpaEntry - label: HPA Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: target - label: Target - description: Deployment name, Defaults to Main Deployment - schema: - type: string - default: "" - - variable: minReplicas - label: Minimum Replicas - schema: - type: int - default: 1 - - variable: maxReplicas - label: Maximum Replicas - schema: - type: int - default: 5 - - variable: targetCPUUtilizationPercentage - label: Target CPU Utilization Percentage - schema: - type: int - default: 80 - - variable: targetMemoryUtilizationPercentage - label: Target Memory Utilization Percentage - schema: - type: int - default: 80 - - variable: networkPolicy - group: Advanced - label: (Advanced) Network Policy - schema: - type: list - default: [] - items: - - variable: netPolicyEntry - label: Network Policy Entry - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - default: "" - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: policyType - label: Policy Type - schema: - type: string - default: "" - enum: - - value: "" - description: Default - - value: ingress - description: Ingress - - value: egress - description: Egress - - value: ingress-egress - description: Ingress and Egress - - variable: egress - label: Egress - schema: - type: list - default: [] - items: - - variable: egressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: to - label: To - schema: - type: list - default: [] - items: - - variable: toEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: ingress - label: Ingress - schema: - type: list - default: [] - items: - - variable: ingressEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: from - label: From - schema: - type: list - default: [] - items: - - variable: fromEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: ipBlock - label: IP Block - schema: - additional_attrs: true - type: dict - attrs: - - variable: cidr - label: CIDR - schema: - type: string - default: "" - - variable: except - label: Except - schema: - type: list - default: [] - items: - - variable: exceptint - label: "" - schema: - type: string - - variable: namespaceSelector - label: Namespace Selector - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: podSelector - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: matchExpressions - label: Match Expressions - schema: - type: list - default: [] - items: - - variable: expressionEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: key - label: Key - schema: - type: string - - variable: operator - label: Operator - schema: - type: string - default: TCP - enum: - - value: In - description: In - - value: NotIn - description: NotIn - - value: Exists - description: Exists - - value: DoesNotExist - description: DoesNotExist - - variable: values - label: Values - schema: - type: list - default: [] - items: - - variable: value - label: "" - schema: - type: string - - variable: ports - label: Ports - schema: - type: list - default: [] - items: - - variable: portsEntry - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - - variable: endPort - label: End Port - schema: - type: int - - variable: protocol - label: Protocol - schema: - type: string - default: TCP - enum: - - value: TCP - description: TCP - - value: UDP - description: UDP - - value: SCTP - description: SCTP - - variable: addons - group: Addons - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: Codeserver - schema: - additional_attrs: true - type: dict - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: git - label: Git Settings - schema: - additional_attrs: true - type: dict - attrs: - - variable: deployKey - description: Raw SSH Private Key - label: Deploy Key - schema: - type: string - - variable: deployKeyBase64 - description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence - label: Deploy Key Base64 - schema: - type: string - - variable: service - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Service Type - description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" - schema: - type: string - default: LoadBalancer - enum: - - value: NodePort - description: Deprecated CHANGE THIS - - value: ClusterIP - description: ClusterIP - - value: LoadBalancer - description: LoadBalancer - - variable: loadBalancerIP - label: LoadBalancer IP - description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" - schema: - show_if: [["type", "=", "LoadBalancer"]] - type: string - default: "" - - variable: advancedsvcset - label: Show Advanced Service Settings - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: externalIPs - label: "External IP's" - description: "External IP's" - schema: - type: list - default: [] - items: - - variable: externalIP - label: External IP - schema: - type: string - - variable: ipFamilyPolicy - label: IP Family Policy - description: Specify the IP Policy - schema: - type: string - default: SingleStack - enum: - - value: SingleStack - description: SingleStack - - value: PreferDualStack - description: PreferDualStack - - value: RequireDualStack - description: RequireDualStack - - variable: ipFamilies - label: IP Families - description: (Advanced) The IP Families that should be used - schema: - type: list - default: [] - items: - - variable: ipFamily - label: IP Family - schema: - type: string - - variable: ports - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: codeserver - label: "" - schema: - additional_attrs: true - type: dict - attrs: - - variable: port - label: Port - schema: - type: int - default: 36107 - - variable: nodePort - description: Leave Empty to Disable - label: nodePort DEPRECATED - schema: - type: int - default: 36107 - - variable: envList - label: Codeserver Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: vpn - label: VPN - schema: - additional_attrs: true - type: dict - attrs: - - variable: type - label: Type - schema: - type: string - default: disabled - enum: - - value: disabled - description: disabled - - value: openvpn - description: OpenVPN - - value: wireguard - description: Wireguard - - value: tailscale - description: Tailscale - - variable: openvpn - label: OpenVPN Settings - schema: - type: dict - show_if: [["type", "=", "openvpn"]] - attrs: - - variable: username - label: Authentication Username (Optional) - description: Authentication Username, Optional - schema: - type: string - default: "" - - variable: password - label: Authentication Password - description: Authentication Credentials - schema: - type: string - default: "" - required: true - - variable: tailscale - label: Tailscale Settings - schema: - type: dict - show_if: [["type", "=", "tailscale"]] - attrs: - - variable: authkey - label: Authentication Key - description: Provide an auth key to automatically authenticate the node as your user account. - schema: - type: string - private: true - default: "" - - variable: auth_once - label: Auth Once - description: Only attempt to log in if not already logged in. - schema: - type: boolean - default: true - - variable: accept_dns - label: Accept DNS - description: Accept DNS configuration from the admin console. - schema: - type: boolean - default: false - - variable: userspace - label: Userspace - description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. - schema: - type: boolean - default: false - - variable: routes - label: Routes - description: Expose physical subnet routes to your entire Tailscale network. - schema: - type: string - default: "" - - variable: dest_ip - label: Destination IP - description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. - schema: - type: string - default: "" - - variable: sock5_server - label: Sock5 Server - description: The address on which to listen for SOCKS5 proxying into the tailscale net. - schema: - type: string - default: "" - - variable: outbound_http_proxy_listen - label: Outbound HTTP Proxy Listen - description: The address on which to listen for HTTP proxying into the tailscale net. - schema: - type: string - default: "" - - variable: extra_args - label: Extra Args - description: Extra Args - schema: - type: string - default: "" - - variable: daemon_extra_args - label: Tailscale Daemon Extra Args - description: Tailscale Daemon Extra Args - schema: - type: string - default: "" - - variable: killSwitch - label: Enable Killswitch - schema: - type: boolean - show_if: [["type", "!=", "disabled"]] - default: true - - variable: excludedNetworks_IPv4 - label: Killswitch Excluded IPv4 networks - description: List of Killswitch Excluded IPv4 Addresses - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv4 - label: IPv4 Network - schema: - type: string - required: true - - variable: excludedNetworks_IPv6 - label: Killswitch Excluded IPv6 networks - description: "List of Killswitch Excluded IPv6 Addresses" - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: networkv6 - label: IPv6 Network - schema: - type: string - required: true - - variable: configFile - label: VPN Config File Location - schema: - type: dict - show_if: [["type", "!=", "disabled"]] - attrs: - - variable: enabled - label: Enabled - schema: - type: boolean - default: true - hidden: true - - variable: type - label: Type - schema: - type: string - default: hostPath - hidden: true - - variable: hostPathType - label: hostPathType - schema: - type: string - default: File - hidden: true - - variable: noMount - label: noMount - schema: - type: boolean - default: true - hidden: true - - variable: hostPath - label: Full Path to File - description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" - schema: - type: string - default: "" - - variable: envList - label: VPN Environment Variables - schema: - type: list - show_if: [["type", "!=", "disabled"]] - default: [] - items: - - variable: envItem - label: Environment Variable - schema: - additional_attrs: true - type: dict - attrs: - - variable: name - label: Name - schema: - type: string - required: true - - variable: value - label: Value - schema: - type: string - required: true - - variable: docs - group: Documentation - label: Please read the documentation at https://truecharts.org - description: Please read the documentation at -
https://truecharts.org - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDocs - label: I have checked the documentation - schema: - type: boolean - default: true - - variable: donateNag - group: Documentation - label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor - description: Please consider supporting TrueCharts, see -
https://truecharts.org/sponsor - schema: - additional_attrs: true - type: dict - attrs: - - variable: confirmDonate - label: I have considered donating - schema: - type: boolean - default: true - hidden: true diff --git a/stable/tdarr/4.0.8/CHANGELOG.md b/stable/tdarr/4.0.8/CHANGELOG.md new file mode 100644 index 00000000000..8e18e14405d --- /dev/null +++ b/stable/tdarr/4.0.8/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [tdarr-4.0.8](https://github.com/truecharts/charts/compare/tdarr-node-4.0.7...tdarr-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + + + +## [tdarr-4.0.7](https://github.com/truecharts/charts/compare/tdarr-node-4.0.6...tdarr-4.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [tdarr-4.0.6](https://github.com/truecharts/charts/compare/tdarr-node-4.0.5...tdarr-4.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [tdarr-4.0.5](https://github.com/truecharts/charts/compare/tdarr-node-4.0.4...tdarr-4.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [tdarr-4.0.4](https://github.com/truecharts/charts/compare/tdarr-node-4.0.3...tdarr-4.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [tdarr-4.0.3](https://github.com/truecharts/charts/compare/tdarr-node-4.0.2...tdarr-4.0.3) (2022-12-13) + +### Chore + +- update helm general non-major + + + + +## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) + + + + +## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) + + + + +## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) + + + + +## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) + + + + +## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) + + + + +## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) + + + + +## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) + + + + +## [tdarr-4.0.2](https://github.com/truecharts/charts/compare/tdarr-node-4.0.1...tdarr-4.0.2) (2022-11-30) + + + diff --git a/stable/tdarr/4.0.8/Chart.yaml b/stable/tdarr/4.0.8/Chart.yaml new file mode 100644 index 00000000000..e39992f700e --- /dev/null +++ b/stable/tdarr/4.0.8/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "2.00.18.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +deprecated: false +description: Audio/Video library transcoding automation +home: https://truecharts.org/charts/stable/tdarr +icon: https://truecharts.org/img/hotlink-ok/chart-icons/tdarr.png +keywords: + - encode + - media + - tdarr +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: tdarr +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/tdarr + - https://hub.docker.com/haveagitgat/tdarr + - https://github.com/HaveAGitGat/Tdarr +type: application +version: 4.0.8 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/stable/tdarr/4.0.8/README.md b/stable/tdarr/4.0.8/README.md new file mode 100644 index 00000000000..701942c352f --- /dev/null +++ b/stable/tdarr/4.0.8/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/stable/tdarr/4.0.8/app-changelog.md b/stable/tdarr/4.0.8/app-changelog.md new file mode 100644 index 00000000000..c08dffd1d50 --- /dev/null +++ b/stable/tdarr/4.0.8/app-changelog.md @@ -0,0 +1,9 @@ + + +## [tdarr-4.0.8](https://github.com/truecharts/charts/compare/tdarr-node-4.0.7...tdarr-4.0.8) (2023-02-02) + +### Fix + +- remove non-link sources ([#6826](https://github.com/truecharts/charts/issues/6826)) + + \ No newline at end of file diff --git a/stable/tdarr/4.0.8/app-readme.md b/stable/tdarr/4.0.8/app-readme.md new file mode 100644 index 00000000000..ec051b5bc0e --- /dev/null +++ b/stable/tdarr/4.0.8/app-readme.md @@ -0,0 +1,8 @@ +Audio/Video library transcoding automation + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/tdarr](https://truecharts.org/charts/stable/tdarr) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! diff --git a/stable/tdarr/4.0.8/charts/common-11.1.2.tgz b/stable/tdarr/4.0.8/charts/common-11.1.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..da62080e8a59534c96d276940cdf4ee53131de00 GIT binary patch literal 181984 zcmV)BK*PTuiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMYcR~$K#C_aDJr_e9$*@n5)i$`HI<2j1~yE$zG2eA9j&d$NA zOckXeOUjm%g{$5E?!TjFO8KYy3aFYJ% z;h$cw*BfkatABgFUishNV5|S9{`S_+=3uM0wb}bqufMsyv->B|`v$mFo}3HF{?xm7 zTjkFEK^~alkBD(h$sU+)wqTaIpD7fGi&lbo%y1^uyEi$B{i%Y-X>323;k2L;f{!d|=BmRv9z})%Y@9zw@EAxMMbLVOPKgRP6wAryE4lug zkKyLdV6Q)Vv6Y}W84dc|@o=>L0&Q+@zI?ga9}Y%6G=e?!VsmG-y}diyiFf+F;b3PN zzwC_$gWl%m?%>6Xr7_6zGzA$=aXf1Q_3KRi*aOF-6DrOa;<7_61?^|d(AylcWL2u) zVur3|#b&w}u$LscgSiAWpU~5Or`Or+ZT5RF``eb@FGo8Av@;m=(2HdBBH2#1UhHi4 zQL?)Qx8r#8%Z7Wn`k&1#>?Qa5~(jCPI(Mdv?{5E zt=LTJ0(LE_?bojRYY8BR!q33v>EY=fxVXh49s@xE7jT#&KuL@Ml*HfK>U;*61BOxr zIZC{7+1l>(?T8Fs4pIDalpwgdvpd*9{o%_b>2JP_V~F6WkNSh&sNdh(91gc$_I9>* zc6T>N@a5LaQExaJZ1#rB;Jng^#56%1u_b?!JJqzw>ej4u)uFw+A+3)up znYM>7w|93???t@Rf6+^}(e8GCH;D(Z{{n6fk~l`YgO`1@z18odovod%WH@}evpLw_ ziFZb$?XA%w1ePTbOfyX8Oz+hRq#>?Apy^hpzuW0q%8XtNdb_B<4R_G?&LHj&UyRUB zZ@4?^#V@yZ`@?Mr(a!c(vboiJ(Hrfc%@OJili{#8NH(|oTeWlbE|ih>aV*k@B#i;N z3T^tG%|St%K{7x+w9^}Hz8Jn7^ik4}`|$w2jQiWYot>@Ctrvss{?5z(Xqdz=VZ0mn z;nwzx!Pa23`y$@i*?cJ4C?Fp=N~BQ6&a_qLg>Qk0_l0fhL(U$UqDU7$T5!lyq9al-dJdzRrgR386x1g@qu!q6%(HE*2S0 zQ^Xv~n(9Wd+OM6O;Rr}m6a{kK)=}R-!W1Wfs zYX%bpxL{DA>zOM0hB9#Ikl`D$4>-|1(Y$qzVuqkVV9i)Y>j07joYOSLE~O(`Hpe>k(y zI<05mjNu7nIGxq>7kw5C?uYG2HaM_IfJ;0C^G zT7eYERD(01$ecRw>B;_uF%a~Jva-5H1nGs5Rp|zRUNlW$=IbwQDi{cks%KD)LC)py zkEIfwLWX4pu1aQ5jQ79~-5)CTWNTx}#fE01&v25ZXipMS1A`#Wxu6qpe5UHkvU{Na za>~-XW$x&F_MB5lWT@JSN&7<%!@P1#2y$71|C7@Ys!o! zt&Ar7HQKO7Z`5jy)-$iMWm?ci$6{q?YQ75<+VW`C>#_ifytH+5P<%$)UkH*j1em=plj&k&@Vzu-s8@UIe53eIQ(_H#j% zhk=#60e?#{SFrxx8oMfIG$|^``7?o-Xf;ro7=|A`g>r*QqNWyP*GlQjB7U0^nj*0L zq)YvTN#f}lWi^}GsSBVaH1U>z>A{;|f+zU|zzNNXkdTda@dH=BpbXxU8lZjkZi30V zwMFg^ve(l<;pc|~`l9D``{3-u2Z2-ktC~hfqtjXnzoH!YyL&P@#p+f$HMBM3glo=+$ z9V^~q2w)B-+75#R^h?k-z(lsmb6r3HO43=Sl!5`-4N3sy7BAh9`C-*pVMl34oj2>D z1quwE03XvlP2`G9o2p6O{3}3ul2eW$OcJZKOMq3C%Hqz!xg4Wl`jycVRIU&`Iua_B zH6V>&V^qr_VmaCXP=mtUYF(5VP3JGA-5OK@)lxf(LMDRXAkDcz?3||B(Dr`6#w5Yy zx{_*z@h_*YXcqlsI_*%i4Xl{DaWKm*{WP+K#L z0p``-^T;kGEM+QhMEF)@+)p@zlRfjd@%2T? zIL@Mmx-0B!-OcS%<#U<~6jn(P7nndD z<`eZg>i@b9FZEnQfo|b!FMuDl%!r&Lk{~soI08px+WrWcBrV8tA&mZ)>qv;^ODSJ@CVqFQ9X-cTYP~PJypqe`q}e2d+rV^j@#D-^1)DG&@Hl z_ueXh{k=VbS=+7L)N_Mod-6Z_^=dThpIQEmhl6Pp2bkal5wsWh8p$Z1i*;ViE?CF zF7mc1RE-nuAvQjYc2Ou0;ZhVGY6)(vNzI=U`VdJ*o@3kwHYton4pWdo0i{41B9Ky; zC?n0;xe7MqfD4An^&u3{z&L=!uB(B_QfqKpwJ(AC8czFQGKML`Vg}+Aa_vAXJbgl< zt>({A?|t!jjFMa~ux-5qSxxI}sm5nqph=t11hr#^m9xgK*tKU-@7~V>Kahi}#j6qq^L$dc6s5qoAi10=_J>^%{yav+y3HsTCt90(cJhqoYAulvZWSs8pNui{Mhdl` zu^9iT>wao^K+0~FLdQpb^$6fm&^G3}qOzT%hL-ATN%OqZa)_$I@T*%#Y-XHRhbI@7 z%zVQIXxOC?NvPmP$bt!+0fsnDrw9<9QhJkT0CS#eTT>0gPrl3-dB&w&dhHyt;1&Ux zG6a*E9eEJxR$lc%v;mSFsinSz#So2SjZ4vr()X%^S~tq6?UaC4b6T`0pshf{Mg7QZ zkLpMZtLr&}EFL4@^w46Wn|LxJbkNqSDm59cZ6SO9&wnyB`q#hKY^-RZ5<8f76B_ew zOi7F~!MnCz+gOvBT+5FH#i9)}V`N{ix3svr&_CZ{a>GL| zw2taCMrD0zW-)Ml2-eO%93QUBp0%e?_CsxRqjV-kZ7xNJq_8Zs2X+Q8S^#`_zkl)5 z9_aNpt%xf2YSl0zX}s#X2b2i(S#)BU!68nuz;Zxy!Exdi^>05M%P|h!N6BH>l+Glr))Mc2N%lJo79q%+y> z8=N97^W7%6+Ce(A^^SN9Q)44K0FnYHR3YxF#ibDm#$^7eq$J=^aV-Wmf(4S9YN;rsRKT7c=4VV%P`APRRv3meI8kQx9&5z9pk!Mt%J6M5Fwe!cE`ql-cp za8~a-14=stOL&(ZQVj)e7r%FfB9GPsqt8lj@RGg%-S_BpydIMdDxz0$rsI4c@B9svk` zyu3U!Enu!ymvzP{@g%=@<$o@mYG2n~&Y&3EI(1EVBNK5T#(VCUTRBL&fDuM%VwqZZ z)kwAPWUU$>1 zp4r{!Z^G>k`V+ga!tNp29+=G+%N(13=GkTGHFYyS;^~X zbo0a=^ja-#F~cCdFkJd5-hu+$j&VHJ+s!ytK9Ax}xET6@0}m{iAkN`6a_f;>hJ`?+ zW1G`<>O3=*A>}NLk@v9;Gu*wU>?Wl!X*0xW&SJ#7(uAG%yU*N$tleLi>pO$RnVbSn zU>%bL$8wP~rnk#?qzEX;XqHQhJ!uNP{v=ngpOjDR(;JwkLm1y&(s%TlpOPcSDEss~ zk--LN+U-;$rU51er|AtpKoHV=XK8`JHG?r4fCYf}Yfvz2I+!FV0Ykm6G*Pc^2`QJd98YixncY?WL9*lz7R*AdSJ(qK zHELAqlA%Hm6eF}CIOq-`9zjf}_RHs^5&o>fTivRM4)cHz;enDGkWLGkoouZMTm*6@ zvcV7ik&54ZbsO6kc#@@P?Hz^55T=mCh^=n``SZ2;xnbSm$7dVhgeK@rhoM?S!hJ0V zBzcDt8jdA29!xMDIAe4wJKYe}sujQl&Xk)8{gPv*MPWl+ROPJ19nreeiHYVe8BlY2 zlhy^p)Jh!V#MZVGCL_uwTCi%-u*js4)d~W6J@yWV*$9A321g?tm!d|jpeQ)Z@P}lo z7^Vfx#Ufkef-(%#!qwl^61t7E?z$epT5R?jP{)}G(&+dTfLy2OLcsWD1Dq)>ahSu@ zyg1k6;NIxKi|h@Y;B;mk)E)T4%DGmcaeOx2-jM$t_)TED$5J!u z+V8!@aC_Q7jqjaRfgCDN6)eR})<7+k!a~K6S^3hS85U>Z$>%B&JPeCtr$vLq9--^9H^`#Sz?xzCuCplu~a6L-QvdkL>r<*Zx=hL+B z+*_+*!Uci}pd+sxS^86^noy(Bkt59X`bbhJF;h>DkqWfcL+6_TYI#`TUSM732VbHQ zqmOl~P73?_TaA*{+kq{>eM;ST=hbbpO2{faLUyp2X%^GHia~4Q*reK7Y|pA)j%Ep_ zKYN190593C|NK|WYqinLHf5Hvvx}nlGqeqyW<%RX{Vi{3TM~eI;luT^)Sf)Lr={(p zC+lUYZRML=+K#wjj;Xz$3z}kbjpf&xBFNhO$NNUr52eEHinU9{z*cZ-_(qiL@= zjOa!(2zGF|7Bg|p#$l`n=vYT0`kYbjA}>wrh$QWt8$CQK)7Hqaww(Q#w1<%6IE>r2 zZU0A5ed4o~4NmwzmvvToh04lKI~DJ@2go%hpBsvbl(%85Lhn85Ux2b%BFZJ@q1L#5^BQ;R=M8va_E*?`Z3O(%WH1(yJq#E@fDOYDr z6;fe*gVoR~yxp_7^dViP;oBx0wv)OwYb{b46ypLZ381il<)>oBQ($%m#kd2OLkYND zlWy=%dykc_NTj_iO-e6$Bl!C((C_rO+r0`TeLUezr9ufldJeowOIA$=jytXCoLjYE z1=&mqiVhxK8nQCUmxJsrm`VoR<-3bAyL7;7sjzi`v5MH1;!$&!9D&RP_`z^=^mvHW zKcV45v^Dz%T+QtP!Cy0ZaGtTeo`cU@{|5I>mH0?lg;mq|ggSM0)v7pylNf^{nn zS6d(OD;;qSs|HDCz@p=^Vcj}QK>={Z^brJ`IkzN_-N6~)A1kneYeeZD7(zCW)9%e> zOOBz5;A;qeEAVmKtA}=by@YEJFQGPBd1r3eL^h4Bh*^Rw{N`lOo0#K4Elrg}A>^2| zj|YbD{{uG)T&GhvyGs3Svh%8g z3U8yBavMrnsiZ5C;Z%%-x094j{bkjNve@O$$y8n@*%y!WKjSo2rjJ@Tk(tZz#*7<4 zFXtqjn&Y-VD^G=>T3P9c51Qr^WLIqAX1pb^e}LoV|1mf|NYa3DQb?1 z$dW&_e=sVP`z;M~5zZ3*{=LLVH>i+PQ3Dd9iHWW5Zs3s*w%BD*)ls4XxY|01Th_G! z?iH!LqC-WuH{YLfAt-~_2pqW6SB10=04V>F2?+Ys{Z-OUv_c5R*y)uO?mrDqeP8N4M19T-PyoS*&Fl=iK zxjpFAmRNA@f`_had*B?wgZODwx7yT7+G1YTPF-EO z#(OkD3C@+PHPXq3qC)FJAST&}gSGSh_w6B!ZzOxU6IbhYq8p$tOj2{E1uPj<*5z(X z%;-+_T?qr-a3~?wp4|oh73q(!RqG!$#Xf-%f}Pp%=D;OpKg-E?$QplWzK~G637U5Kc=Bil!sL#kp}_Nr z2Ug>OBW<$E?!m%;GBK&W?lk}Nt|0T;*-4mJw zw!Y>T&(gO$;>t|V5Sw7ml_$y^3L4W}qSF?RCnj?!N8+p~SaEaI_6>vO8@r^xOBiPJ%kU~r?PI8#ME!Kp_DzCHg z;ZkOub|HnUIm$|YBt?uByht|qq{^^5zWjIOTkV}(f_<$U^Sd;IWBY~en!^6$jT z#>G%@a1-C@g6)aTe>;ciJRkTU*eUJx_uILqb;?ccJk}%e(SXcQtlX3LaH3hsqMc>> z*M)W80H6W8eT+T#3RoAd_N;Ah_PkGezi2XR+k8HC_ z`F;yD^mdWS&Sr*5)z=?ROt*@(bx-`;%)hlmZbCs8kGIM9x7=Xs!iz^b$Q8J7n9ER~ zhPY8gC54D`(YuOB6Msv=BWNHzc6WDcrJWfr9WGEEE%m+#e^co$bB>tXC))G{a;@g=yEjQEnQNk;tse5sSr758ZLdmVGceLnSl3r=>--Dy~)B;a&{ zyDncASc|l~DBzTGwl?D{^8+#XzO2owlBr)o=G>&SA&}Osc zCY7oR$5B~P0|x^XP`&hbx}spKD^lO}_LN#-KYIpF8BlwpAjMpGw~fd(dY)BU@m{;V zMlnVg`tKFm-+YVpuV5oL9wV5w&AYaWUp7=fkrG62GfINTlyJcyR`)QhWbo*$qL^H_ z(Nsqmbs^{YnyBnsgeIu_jHnAm^_k-Jmi%=QoG|tz6bEpmjz-NqoOH_cmGe0+gPLuv z4N205MBui4v);0Q)gUQoMpJq{yT~L{AKVjDn=(LU3ef2SYy)ksT4)!yKCn?qcrt{(IFSlbvJ`fHC<|DP|So*F4eTrfGo0h77 zFJ+h$iU@+H=J+0efH6}r)%X-}6%AY?rIh7zEw`Uy$dQZbGZsD~f?@r(i$vVjp}LY< zStcdt@tKYB)`g0!wGWU>6edaAAkY?6@gNd$Tj9`_5>Nfvh8pwkddusF8&{lpnZf&= zey^vcfWuTvvNnipv~El%k$rc2d)o=#hY3k-#tOSP&p}sTz{VT$M0Q#($;Dm^JOe)? zkn>#KHpNg(Clf>xyU%U?mqmgpQ&XQQp&&(YYR-(Qv@w$9V@z`{A;)8iy&y22v?5HULciopYhj2tf`Ak}@5#*@o)8Ny@L6qAZ<( zAycPn;7A|_ekf@CgSyjGjfggo;w;|-+r3_IVtmjObusLVw^*fJ)1&AW?UxGf^xk8` z1U6@^oG#{uwzChVtXC>%{O#F?y;7YKyg@3=Tylrf(srki3*M6db>X6_s7(W^PXOz` z!|atUU_X@ZT2uAy?T#Z_-1JzfZ$5<9#-+JCPwG5uz^7!FU_?{{Ic&S_YD(yi4BQC9kHAf08ppL^jiK z^|>zBoNK_eT{vd+=2?P>z)%Omn$*zN<{rNgdN5n3JI zyx?7ylMdItbL9fE?&o5xBGTv5)YO2v7^@Yjqs}w1uj2f0f?~)v0Co;_bsCr;Euo|y zz(kQ(9a;3qt$uqukGhpBsmjB*Dka=i67K&1!1P5Q1xg9x;z}uM`-ao_X6MSTH{EM> z{pFRuXS1lSVz;kqztLO_X-<+WIUZLTqn~G2sS243C{jAtF!HC3rIhVdUA+1YPScB9 zEaI_80Q6a15R{l)_x$SkY`X2@+3UUz%2{8GnIVVOOCxN#x0Fn~fqz381Io3^5twP} zWrugE8g#y6o54+=m9SeE8L=et@?jVAMY#ily#(WJkiF9PypHs(ur4N9VQl;v)4&7l zE;ap*5e|+mfYQMQM5cvG(JM^KP4-AFJR7Er8ikI+3+`q=r#+ihtnxSxa)PYje1@V-Rm+)cML<+8=7A-|aM z8~}y>7z#JA(ma(G<`|I>Wg#bs0cP&tROd_d(F~Yn_G$q=FKpTdDR(kBwnMG13GK~n$3o-v z8jHY+JcqZcu7zV^0CPm{r;^dwZiCm5qrr9?5lO+MT)U%hB~lq#iisvyDC$^^a+jDk zmGKI15SM%u%SD1sXXdr8TPx#mWDm%gy$UlU<(vB6=sP3y0up`B)a6{*Zf+vu~0$O95tRvhwst}`$HMom@?S-UPn zh7zc&Cdg<^kzsQ`w4Oa{nVi|Y*oo08!_|2+DNwX}mE;~Nj~)>=eNlokM5MUEh)YoB z1{KPMq}?xRQD9cNQKjL4x2r3OQW-#d(#}baWEeA)@W>jMad`if%FhJ}K#m zx4qVxxUS_AJ67}EmDM@Ur79mnE^TUaLu4@Ab_^IyT?iRcAC!rJ^tw8*#y)K-V+VMgU^Zrh#(Mtg5$}*`!dB zD%-z`)IH`Fc&_jI86rfibG1n6ziyiK8)Y_Y&jgYjrtX`yx)75>zNSgFd#@Z2bgD6C@apC3+J| zq#cFHwLcloX!2fvaH`JcsL(Pc_FR~f*K?MtJK(Zh-B)SSZmKNMYF=w^ioJR^!F+Xz z!eq7Ogo!Hp-N+Nw{zO`S$#C^bm>zx@vp1dsV&ryd$#oZf*2> zz20DZTm9SX^~(SDcDMR}>ThrDY!0@1TbsQ<^)`FG!QfAz_t2fKdvY!y`%~}UZIwIs z2YJ4H>HejqjC_|5O0AbnoWn59QN}RQiNuZ!Qvk;m?hu&|Kkq1%h$Obhr9UObmK^`4`7f8|FunVn_n!sxe|vX#H=O_dot>TCr}_UF&%DW~c_5g8 z#T2TWcwPZrxA8;AXgOQpxmh*YD22UODiy!2$EX?dxgoh-ovA-=G<V3C(XBsYnvg4@x@KqWv z{u_Tlr4(TrcMSIjbne0`av#RvJx^zao}10qX{LeIf^2mz%WIWP?{O5a?y z`qCjuy(%QBBCj*z27oL{Ux78fQK1X1tA9Wv%;0CeY}aE`q|lawX3X5kn`WBY<($KA zY=io1K&kc-i16q3pC#wkS6;7CGtW(;Z9SdGl-@{)=HCBk+K)hVV9#Ske!EdoBP#lZ zh+wmfN<%|->=q4G>;$TI%`54s`#VQ^Xk|}3`^F~$DcE6 zMg&xgbyTWOzenpnmy{5?1DrYRg+~DWV&+15CV1aVf>T}58QJ}VD8SaB>C4}a+mR@v zv$zp|*J5!)S$!jQ&FJ!0P)0vqUY?aCKp{qr6pd;oZzx>?#QbrqN>7pUusfy3cr-0ao8?088^bu)n8$V{JRR zQe#_dpe?r#qc8w1T;W)MN8~7!c3xD-Z z@A9cSa;U>^YV$^Ylf4eUX@9^MPbmL+y4UUgdAj%K>7S>Ohk|ZYgV%u8eNgk42IW;k zgZ&>PCc0PhzuGBsuZ6$@`+u{)yH&FPcei?*Pxk*~JoD^-Is6^H`L7oNT3351<&`O0 znOpi)$|z4$`InqyZC_NJDwlzg0S6m+K!8`5@gg zrT`sTS?zacW$H!>LEVX>H+ErHLf%8&vq-$e(3l`}*b%9;&D3TRsc* z|2_Qv_F16+w>AfZlKvlTZEij3|HpWg|Nk5bhS3zMjrp$HcaoCVyPE}I?nP2B_T!i3 zvhPA%tjL_F%iQ+4_X?~@SvkqMI7BErpxMmxhZQQ#l#etn5|+7iHqdTAq1lNtOicO3 z7!{4VU6R@^UzsRJ2f7e?lBV{Drf^vv`hQEs+#1_QI?PK%#a>AUZadiN#P3If2*XMhR7pAU+!d^t)M)1!ur9rx1M{+0yA zmV?(IShJri1nqc)^lX#$g_F$huDZF(##ZZ#IF{<-g04L`xGBE5dk=~Q(tIMh=7RR! z4#;YC@dz|y?540~M^(M!le8)cO(8SCqSm?uZlSHI~jwE z_J21k@gM!ot*8CpM|pJohc#-{WfkgxMk#WhlGd>~;$!tp7hs~3SB;CSnVfyZ!4Ptk z*rSa4A{iq+=1Ef3R;OUN+TCZ(qh2Yu`)K_X-M@f+bu(<`7(j7O&Kxi*F4ibAGysL6 zad;Fp>fK#slsm41Ug1ks@((ykLkE`!HgH}!i^1z`6~9O|+V<&G0T`${LzH8KzHs+* zxwAI*=zvOV9T32r|5>v4C9u~0S9IKft8v+R?vUP`PIx10>J^E?i=1EKAes`Z_Ti(; zjyZQM4fOc~>0dY&=@xEK5k6p8II{k$$mQaSK-8A6XPJDh4=G0=ntHey4A$pSEvZfh z8&}~`YVI_%0TAJIb7QDJek{zMMQ|DjR)SP=^+sjkPy?XBwQ1l+r54r$Fg5(4&iQnT z+BMDQq_*MJhQo$@EISi{3`gF>@ijcvKwD8g|?PVzwNYY#PIMi^g?u#Rd3Z95uXTmO84qJXc7=)t|>PyatqV|2}!;^{s zyFN?W|2C)EoqWNI{J*{4cG>>#?d&|+|BvyQ`0tWgP|m?%&TwPG5mPBhR@G9*RPR=d6uW?8BKAlceR@8WUiPB zye{SJX#v1;vd=%L)092?^DU!!CVwL`-SeZ)O@4{_dd3#=)jTALtF5$I@k<}wR)yQ% zW@J#IHeK9DTvP0UZzVUC;@kibK_pVi@Ka4jUh_rFO_p_E=@`S z{5Kom`BeMQDt*7H>F{)M7>qfnZy^N-=pCP)*$|$)8VWktCpf^blXDcEYX&V#s`Cd5 zgN81(LDX(5V?h3SFH|GbQX_yOqXziRB|`85hSj*%nPgs$WG_pH+4mL*Wawzf4!|i z@5%mqjK|r3HYurp3}25sch;Xyqqv&&S8)fnA3==Q9N$|izN>C`zZ%W>^=sP~_C=_1 ziA|il)t-K`Xd% z$=tW(tzqnmmeLaD$(8%Zd79+^G$Y-sX+|C*1HdBrztu0F{~v7bKH2||@-)SNnCl)M zIqqYckwE;*GWG(6s4OoPcg`{t?!}{DKxA%6SX86YT-V4HP(b}Iu4~U-0&&k4eK?ES zbV>8?*`^O?UYlyTR%>%X2*flaI;6Z7T9Hn@ZWH}U)jZHMPyU+;(7iI8@{RI8^*4Jv zW&3|~>*@T*qdZOW-@1eJ&;zRkpo>~5MbV|03w51lO|)7Il0?;nHQpsDTl9X@2ruPZ za$>nY){k00);EgtGtEC@ke}=D$`OA2{(*hAyZoVp`JSZqckwJG|G#nk$L?Ua9RJbZ zev1Eol&9kVe}LGJ8WC9pewdGSQ6J{hf{>4()H3lNL52GTdjJr_3=VOM1xCg#0+Xb; zb>rmd@@oI^{qc!=bMcRhtM{jeAKo3U5Go?6_s5J8ku3C3!6AkU-##j&Vdq7*UtBj9 zw)W=u{OITXcklexqSKSeD{_AN;qvIJAC&0tZg%>EPOsDJ_BW$eDNmZtSE-5Fz!Y^C zorRd`X1{z<7MDpVxmib-h9P%DQcsZD%hdc-T;{vE_<>IcDx+8AO4P=`Ea+P^>{lSj zLGf3WeWIpZrud*tOR*s+>=A%DH{?prxd_uStEK!>pbY zAs8m-dZ@(e1Xrmo5tAd!rg(}7;{1%!p=v02v20LIdqFGTCgf)+`|sPvfAj{MTb2F4 zt*89YkMew*_>c0cv3=Koj3va)b6?zqiQneNVmxok{PyweC1s=vyxn+Eer7EG9v1M)t){EY5&RJL8_1GO^(scwH zQYuA_D&m%gW_JB6&va$gj> zzmg88@l6TB<^JW-)#34Z1xSjAMb)s9Tx(pNo*W#Nd_;4H9Ohztr7lJcd`KSH4;M%0 z7iascfh{LczJntb#{LGfB$jy?)c*J=%kErO#=7jF=8|qh*w%y4!{a& z?$uI)xVXYurK!WCi_0r>U-3h=C0Tms${g}6Hz?=F#m?2m(fP-t^9OBK-FtauPd)~X z9{u0T^Zl#+^S4!^)^O75#D!==$<-VLF87b$sidffcf;jr$EUjE^BrvYd^2x!2~@50 z_tetTtFr%KC-l?vyFE*;|NL37@(OT~|G&Rmj{ocL?mWf+J<1cT;^z5!+G>x`TurLh z1M`KPzCF7C7PkmhQr2HZJPCmBzbP5Xa8+p&Mh z{lA5NWA6Y|{T^U}*0h=D?Pe&(*K}j+a(UY_ByL2|L9$)^`@w;~yKObKn{1}X} zN)6r^YQ3#Ot-~1eZxVOCy=2_=c75D+wUbvz|M%eChr^@8lcUR@PtSk4xH>-jxLskV zD*O`d|MO$km!#cb@$OtbRend$`9sEWBN2P{%k6dV|CxyH)t-v|r*eCDuYRNq|0;EN zdPbA|Tu`-8{U-OnZ0-&!_TSd_)BV4X@)-LM^CI`1+WqAKasa_F&5@E+O8br-Q-F*n z06Mk+RAqVRK#ZYKKAM;zC{WVMIVRU;!6-Qmq zRF-d7zOvZV9cR#1E#P?Hy^FqV?*9yy(r4KFjO!EP`+lO}#y1PdyF$RU_No;8S!DnB z@6ZiQyS4Dnu+mKq>+W{1;M(J0Rck5ns=RIKzRZE)39j;40Lw|3Tz99N#&Opmf*PE6 z7J++v?xf`@YpT{R70 zEx_+#)~xfT9>e5rO5gEap!)Bly&b|U>Trk2!)Wpl+;^hSL)uiediecry4`KW9avxu z8a!;wfz{UwOc1+9#g(aAdwcpQ!LeAcb>{o${oG-d^}tTh>#ZyWYsIQ-y?Q{fq$V1X zgM?6_r1EkYdgbfU^a>Q3c13(Oy&cXLSNXaqt6*A?A;hM&=TjKRANpz1|MqIR2T1?9 zK>zpq+k;+N|Mz$MPx}8co|X0gvAHYon`nP`rQ8GQegkhs&F^1_cyGO5zFYA-(E2`A zsyg5Qx`f8}5PY67Jb`R>VXk;I*Nj`T+M6G1l{6l9a)Hz0wjvFxwBi07=7PS%f%D{x*=L}E{3e|C{DYQfjWhSe%W-rN97sQv~sVk(GB(Az`%8}Sy zI5{{SJJ-R?nUO2g@y>bQfrui|UzZ@kFW}r(gojDXs`@=v+d`5PI3!=cFCK z5OA0_NlJgK+Fc!M>lkmT1vN>MTPAy;4}4qARwu3&|1DgRRmu$uY?P^Ha4qRSR_ zx+m{-4Wh4ty}u2hrt^QR8C@w`rdHmCY^ZZW7CCU%n{PbrijVQ?WHWEd}xgOttfNfb2!8@+sYPQxcv2|4J*ENTm9H zbEym>{5eMI0`cmz7-lL9p;DiV0*95L#JcFl;oA1qIcun;o> z(;D*Y5i43(7t_}a!dQr`7*=)peDN~~c+wZsd!uLcHZPW6bw+TzS|c;diW(z0yj(wE z3TKOlUrSiLDt1EcE4L0IReXGmysGMVuzsn*Dd1d9^UTIQDVob)^^EWHx|0i~@3Qu# z+ClvCrI4*>42|&TNCTIj>%dkp17HZ_8$^=5;N@Z@05C)-R}9a}XhK)&0w76OtqK6i zCqu+^_2Qc3Nc$EM5b>QU{V+2n8;Wxfs?dpvo@soi9bAET4wouU%h4um?v0|8Q7RycWz#&Wx%xGu(Yb8@x3mv z{#g6KcA1jVO_`>(VKO^HKi2hY_b~M03b3h$gNXvmTXtn2o zwAgKc0($LORAi1@@#`HdRZ{<5zZmh$$=Oq0dv*i`fi&Vu5Ub>G!3UfTD<6tA0nT2h zG`?y4(1~%v!mkSAE0utvSS*?1g{dm*=@SgikobXEt%(3Y6tnVYK_xy zv=+Y!5!TK>twA#wBR6l?!J4`mN|9&1(oucUK&4v8o2mMafrcVSpEJo2O8%{v)u0^w z@`zO6I7(X5&qu~L<}2c)0JH!Al|X90N{s;PZ+ft+q+f)dPlyVR-p6GT_2I3K?HyRh z7xqgrjaQ+{E|rfVqf|UYgnMKw=`B#RY-~3c3Ko2J(3)^vmYbUD--D0lQfMU(nhWWn zd8filK>`fDscDL-AA9r7hC!p*u%zO$u@}CRwO(}vCELpIs%S6y@=1R^>8~gKwY2nk z(qB*d>yNCz9#egN`CSs@HTi$DY5X9uzkgaH|I22teE*31X%`6~<~wa0T()IcpwV3$&e>r4KF_A{$}a4Oaqt=_ zQn9Uh&Z3}X)Q(DlkQU#n7ubH8+hmyzMQ>cp9A&|taH-Y$VgylMWwu?U~QE+3MH>Hwa~|8dd&y{^R8x#x*W( z_hacB)*2k=fg3puY?XWXvtb+~&fn9-=3#2%^0 ziohDsvDiU&Ung;{Q#ypHWS{lg*dm?$rI=5}?|=+mvAR1>flZ3^lnMBEewyq*HiQpm z04}iqwtMCK|N1-In@{`ykMgW!|4F9!CaGQ|;0Fr^;PbP!$hKAt5m5aOTKHHgW8#kX z1NZ4}r{tBqg}G2EmXr3mW5OzPqts4pT-`WO6>i44ZtfjYHJ3 z`Jem=+B6_M*XmOzPP7^7ebu3m@d9n3A7<_x>Uy8YzbweR0I<5iFs&A!o3aa5IRD8) z|Brr}?EiaS`5!!s@;~*qcgp!6dcCLne;(yo+5c-U2>B)sU;k>6hgb*%_mV7W>zn>P zNF1;S>w7Wb3zF2B@!n~r`=xp^cdjgV%}S#Y@D$R!qzhCqOs)@~5POxkRb;PI()0Ez}_4N;JoHZrvn3LH3 zcQD!RwM}j4w?>(c)379rjPvODELsO^Xp)JU`)C{1xuspf>gH^0Kk4%BXRtL}D)i-x zy;AaCc?dY>WjKEayAA6{%d1Xqe*T^dwCJpgEfaO{{K8qHVtYNbTyh?ORy^59& z;ky9&y5e<{qOSaf3LrR#=4(;3@jWEH&R4Ba+<1Okc%m=FT5Z8j%pPELZ9?mkuP!UpPG991skg~^T z{(5lvRjYr(F(0Owk58yLM=+V~CyA8(mJOS}2GpGoqOS2ZWz@K171`LUTrX?}`^xKreN{Bpz)5uzO`mL-!|Ur!pQU15H`1^1063q2`kU7r{hs4n zYMd*jlT&v)?!90p7A9+>k*GQ2}{eIc~S>}CdpHXlo!3C?7W#&pY7_&=lDB53;cgj?@8a!4Y*+cufJ0{|FOHX z^>qKsqdY75|H43pZxRU@hS5D%Okksz(GTZ)fbGDV5W!Wp1?$c_|L&oEp3Gk8o3kM< z4a)R^Zg8uySC%`~v7%4sKS5hn%U1mHcmm{!{$-qdZdn zg99z4{Yj#IvH-@6dY667yZGIAo0d0Ti~!V!ORAGGFjvd>Z#x-9tOPHmPSA5)ev$L{ z`4l|YlhfIsO1kJnD5h+kP1+Fm)>0JO_fVFUN>gx4*-c7eqOK}mkwP6?Ssnd}{7oTu z3CU--Mj-;R5sVSn9;cisAS&ihVtey~cc%SLOmHVA@u-7o*Ipv6dj4;U35Yg8bO+dX zCdwV@p-I7Lni{3RAW8PqYz$BG3D~K-o%$&_@jlNy`5)v-zlQ=?DF3%A_W$ma{C}KB zPvkVEx8SFIh>Yb11O-C`sJ8SHL^|^(a&12Sn*y4z53I|ebKqCtg!L`mA0+R z^5`6ioSAf_S;lC_uw2g+2B})alrOMawPXH80Y$&`A}Oj%a2bV%fjF8>5j&uhOkL{m zw|=MpGOFE)Tuj$ac%IuJF+>6et=6TO&?Gw;qxi;=gbUr?Y-OSp*T}TX+r)RefMI<; zDUG?#^1AzQo)p6h&pi2WT(9>I0b3;hxBF%Lf3UOp6#xAwk8l5*z?YRxf4dNu6V9eT zP%Jb*o6zG-pfAFrCbDr#60J=lt9uIcZxY2A-!Dnr|@ zC8u){HS&@d7gVi|2^Wymotb)CN6eG|nzY~i{`c*z-ey_;Zw;RAe|?lk&E})e86=4^ zoRxr}BkjDGY%p&U`*Y9prfW%d;=79VP30;v=Mqm2 zphDhYyO3*&jT(=0$fE6?nyno@5O2(`&I55=1zeTuDn&}1XFIr<`*e(rtzNFz*j~G0 z2o$#&-4U3J$tY!Qa2%l933X^WF{;L-zD%Wouu^f~pSl<{gz=nIAk9gu=w_m>w%mLK zW(W;ZiOmr|C@Vkv2?-IB+^>#HYv%-@C8$xxQU7=h^jL?F6~Ru?qB zZzN+hLoA(v7|PDr&RL;PiC{EM5mPavOLWXtxSVA*4gkxFMLB((AWBe{(%A%&QX&uI z#W<{d{t^ZPHv@)fLJ3C=aMjlfv@%#Opg^NMReImAh*Pj;$Nz*10KpWd zI05B0*Z$1cqb7{%1WKcZkwY74>G^*^)KUL+$pj)W`XwPt$n0MdQZQJ-z#YlJb&j6O zp8R@U&Vu{#_wQ{%{jr~V``IKTKA%RjoH zPzLwewMkWO-a`FCN4~IY7nL6LSQQHGzI*j?*@&7&T?~*c`u81T+KjfaM^l73zcTj- zn+rk{iOnpl{#>CZigTvVs0j2~*uyTt%R9$C)wGx55sGKAy-d{oe8@HgViQbs=A{YZ zTuyN)#)huN$M?mzy~^OP-h?M4Y8olzOH(r~01%lfLVO8A_i3?AQ(5kV!RfG^?DG#C zF@GN05$v3OI6f>6P*}k#-x~3vyt;c;DboO`a$~Ip`QhT|{OaMMJ`}_+VN|(;|9=1C zrxjaJb><>13tU|sT|N-tZ_W*Gm!)z|gCnlep3S4j+w;>8XG`o5g_>2oQ0d=Dh4A}`KvPyMuE(TZUNBf6Yrzh|Jadm!rT4JiGA2lMX zP8$`?#xO;1&puR}IQe*dc)Wl0@%ZBS^}D01!=sPK2S*pBcBT|3MN`2gBmtDe^W%?4 z=T`^&XZx>@-yL5bS0KSOt-;yBx%{8y2J-TMssmQF0?71XBL|;P!!Mpifr*I1qby~w z6+^$|n4ttjh)gk~WFmFi6fz8lsg0yhF&BW2zyxO8)&S7+(%Li!ov^6}au)k{)#4uV z6PQ`Jp3AN55j6#LzJdxrm&iYHDq2dL#r`P!#&p;D(h`q_2cpXSgeGT6CuOD|m)tJesKnyBfrZGEg@! zqj^M8ebi)s!ttPr>Qf~ud1l1iotywZkV2zN}2WKGAHt%{KSi%h5p}+Cie{iS>XTeZ4I`|@!$Q; zr~AJipw*yiU3ja~sIEPRse){83X